== Bar == class Bar { fun invoke(x: Int): Int = x fun invoke(x: Int, y: Int) {} } --------------------- ===================== == invoke == fun invoke(x: Int): Int = x --------------------- : Int NEW: magic[FAKE_INITIALIZER](x: Int) -> x : Int NEW: r(x) -> ===================== == invoke == fun invoke(x: Int, y: Int) {} --------------------- : Int NEW: magic[FAKE_INITIALIZER](x: Int) -> : Int NEW: magic[FAKE_INITIALIZER](y: Int) -> ===================== == Foo == class Foo { val get: Bar = Bar() val set: Bar = Bar() } --------------------- Bar() : Bar NEW: call(Bar(), ) -> Bar() : Bar NEW: call(Bar(), ) -> ===================== == test == fun test(foo: Foo) { foo[1] += 2 } --------------------- : Foo NEW: magic[FAKE_INITIALIZER](foo: Foo) -> foo : Foo NEW: r(foo) -> 1 : Int NEW: r(1) -> foo[1] : Bar NEW: r(foo[1], set|) -> 2 : Int NEW: r(2) -> foo[1] += 2 : * NEW: call(foo[1] += 2, invoke|, , ) -> { foo[1] += 2 } : * COPY =====================