Iterable<Iterable<T>> tails() => IList.iterateWhile(this, (l) => l.isNotEmpty, (l) => l.toIList().tail);