package test public class Input(val s1: String, val s2: String) { public fun iterator() : Iterator { return arrayListOf(s1, s2).iterator() } } public inline fun T.use(block: ()-> R) : R { return block() } public inline fun T.use2(block: ()-> R) : R { return block() } public inline fun Input.forEachLine(block: () -> Unit): Unit { use { use2 (block) } }