== A == interface A { fun foo() : Int } --------------------- L0: 1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == fun foo() : Int --------------------- L0: 1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == B == class B : A { override fun foo() = 10 } --------------------- L0: 1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == override fun foo() = 10 --------------------- L0: 1 r(10) -> ret(*|) L1 L1: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == fun foo(b: B) : Int { val o = object : A by b {} return o.foo() } --------------------- L0: 1 v(b: B) magic[FAKE_INITIALIZER](b: B) -> w(b|) 2 mark({ val o = object : A by b {} return o.foo() }) v(val o = object : A by b {}) mark(object : A by b {}) r(b) -> magic[VALUE_CONSUMER](A by b|) -> r(object : A by b {}) -> w(o|) mark(o.foo()) r(o) -> mark(foo()) call(foo(), foo|) -> ret(*|) L1 L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] =====================