== A == interface A { fun foo() : Int } --------------------- ===================== == foo == fun foo() : Int --------------------- ===================== == B == class B : A { override fun foo() = 10 } --------------------- ===================== == foo == override fun foo() = 10 --------------------- 10 : Int NEW: r(10) -> ===================== == foo == fun foo(b: B) : Int { val o = object : A by b {} return o.foo() } --------------------- : B NEW: magic[FAKE_INITIALIZER](b: B) -> : * NEW: magic[VALUE_CONSUMER](A by b|) -> b : {<: A} NEW: r(b) -> object : A by b {} : NEW: r(object : A by b {}) -> o : {<: A} NEW: r(o) -> foo() : Int NEW: call(foo(), foo|) -> o.foo() : Int COPY return o.foo() !: * { val o = object : A by b {} return o.foo() } !: * COPY =====================