// FILE: 1.kt package test interface Run { fun run(): String } inline fun i2(crossinline s: () -> String): Run { return i1 { object : Run { override fun run(): String { return s() } }.run() } } inline fun i1(crossinline s: () -> String): Run { return object : Run { override fun run(): String { return s() } } } // FILE: 2.kt import test.* inline fun i4(crossinline s: () -> String): Run { return i3 { object : Run { override fun run(): String { return s() } }.run() } } inline fun i3(crossinline s: () -> String): Run { return i2 { object : Run { override fun run(): String { return s() } }.run() } } fun box(): String { val i4 = i4 { "OK" } return i4.run() }