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