class Test1 : IBase { private /* final field */ val $$delegate_0: BaseImpl = BaseImpl constructor() /* primary */ { super/*Any*/() /* () */ } override fun bar(): Int { return .#$$delegate_0.bar() } override fun foo(x: Int, s: String) { .#$$delegate_0.foo(x = x, s = s) } override fun String.qux() { (.#$$delegate_0, ).qux() } } class Test2 : IBase, IOther { private /* final field */ val $$delegate_0: BaseImpl = BaseImpl private /* final field */ val $$delegate_1: IOther = otherImpl(x0 = "", y0 = 42) constructor() /* primary */ { super/*Any*/() /* () */ } override fun bar(): Int { return .#$$delegate_0.bar() } override fun foo(x: Int, s: String) { .#$$delegate_0.foo(x = x, s = s) } override fun String.qux() { (.#$$delegate_0, ).qux() } override val x: String override get(): String { return .#$$delegate_1.() } override var y: Int override get(): Int { return .#$$delegate_1.() } override set(: Int) { .#$$delegate_1.( = ) } override val Byte.z1: Int override get(): Int { return (.#$$delegate_1, ).() } override var Byte.z2: Int override get(): Int { return (.#$$delegate_1, ).() } override set(: Int) { (.#$$delegate_1, ).( = ) } } interface IBase { abstract fun bar(): Int abstract fun foo(x: Int, s: String) abstract fun String.qux() } interface IOther { abstract val x: String abstract get abstract var y: Int abstract get abstract set abstract val Byte.z1: Int abstract get abstract var Byte.z2: Int abstract get abstract set } object BaseImpl : IBase { private constructor() /* primary */ { super/*Any*/() /* () */ } override fun bar(): Int { return 42 } override fun foo(x: Int, s: String) { } override fun String.qux() { } } fun otherImpl(x0: String, y0: Int): IOther { return { // BLOCK local class : IOther { override val x: String field = x0 override get override var y: Int field = y0 override get override set constructor() /* primary */ { super/*Any*/() /* () */ } override val Byte.z1: Int override get(): Int { return 1 } override var Byte.z2: Int override get(): Int { return 2 } override set(value: Int) { } } () } }