buildIterator

fun <T> buildIterator(
    builderAction: suspend SequenceBuilder<T>.() -> Unit
): Iterator<T>
(source)

Platform and version requirements: Kotlin 1.1

Builds an Iterator lazily yielding values one by one.

import kotlin.test.*
import kotlin.coroutines.experimental.buildIterator
import kotlin.coroutines.experimental.buildSequence

fun main(args: Array) {
//sampleStart
val collection = listOf(1, 2, 3)
val wrappedCollection = object : AbstractCollection<Any>() {
    override val size: Int = collection.size + 2

    override fun iterator(): Iterator<Any> = buildIterator {
        yield("first")
        yieldAll(collection)
        yield("last")
    }
}

println(wrappedCollection) // [first, 1, 2, 3, last]
//sampleEnd
}