class Test1 : IBase { private /* final field */ val $$delegate_0: IBase = i constructor(i: IBase) /* primary */ { super/*Any*/() /* () */ } override fun foo(a: E, b: B) { .#$$delegate_0.foo(a = a, b = b) } override val C.id: Map? override get(): Map? { return (.#$$delegate_0, ).() } override var List.x: D? override get(): D? { return (.#$$delegate_0, ).() } override set(: D?) { (.#$$delegate_0, ).( = ) } } class Test2 : IBase { var j: IBase field = j get set private /* final field */ val $$delegate_0: IBase = j constructor(j: IBase) /* primary */ { super/*Any*/() /* () */ } override fun foo(a: String, b: B) { .#$$delegate_0.foo(a = a, b = b) } override val C.id: Map? override get(): Map? { return (.#$$delegate_0, ).() } override var List.x: D? override get(): D? { return (.#$$delegate_0, ).() } override set(: D?) { (.#$$delegate_0, ).( = ) } } interface IBase { abstract fun foo(a: A, b: B) abstract val C.id: Map? abstract get abstract var List.x: D? abstract get abstract set }