== foo == fun foo() { val a = 1 val b: Int b = 2 42 } --------------------- 1 : Int NEW: r(1) -> 2 : Int NEW: r(2) -> 42 : * NEW: r(42) -> { val a = 1 val b: Int b = 2 42 } : * COPY ===================== == bar == fun bar(foo: Foo) { foo.c foo.c = 2 42 } --------------------- : {<: Foo} NEW: magic[FAKE_INITIALIZER](foo: Foo) -> foo : {<: Foo} NEW: r(foo) -> c : * NEW: r(c|) -> foo.c : * COPY foo : {<: Foo} NEW: r(foo) -> 2 : Int NEW: r(2) -> 42 : * NEW: r(42) -> { foo.c foo.c = 2 42 } : * COPY ===================== == Foo == interface Foo { var c: Int } --------------------- =====================