// FILE: 1.kt package test interface IZ { fun z() } interface IZZ : IZ { fun zz() } inline fun implZZ(zImpl: IZ, crossinline zzImpl: () -> Unit): IZZ = object : IZZ, IZ by zImpl { override fun zz() = zzImpl() } // FILE: 2.kt import test.* var result = "fail"; object ZImpl : IZ { override fun z() { result = "O" } } fun box(): String { val zz = implZZ(ZImpl) { result += "K" } zz.z() zz.zz() return result }