Using iterators other than for iteration has been proven to be error-prone.
It is a mutable object, and if you try to use it like a lazy collection
it will inevitably break things if you are not really careful. That’s
why we dropped extension functions on iterators
Today Kotlin has Sequences. But they are basically a wrapper interface for Iterator. I can not understand why they are better than Iterator. Iterators are constructed easily with AbstractIterator. But Sequence construction is messy: one should override iterator() method and then (most commonly) create an Iterator (see Sequences.kt). This is one extra step, yes, but it seems useless.
It is also a pain to convert something form Iterator to Sequence on Java interop. Why should I convert Iterator to Sequence if I want just to filter values? What do I get from this?