== f == fun f(a : Boolean) : Unit { 1 a 2.toLong() foo(a, 3) genfun() flfun {1} 3.equals(4) 3 equals 4 1 + 2 a && true a || false } --------------------- L0: 1 v(a : Boolean) magic[FAKE_INITIALIZER](a : Boolean) -> w(a|) 2 mark({ 1 a 2.toLong() foo(a, 3) genfun() flfun {1} 3.equals(4) 3 equals 4 1 + 2 a && true a || false }) r(1) -> r(a) -> mark(2.toLong()) r(2) -> mark(toLong()) call(toLong(), toLong|) -> r(a) -> r(3) -> mark(foo(a, 3)) call(foo(a, 3), foo|, ) -> mark(genfun()) call(genfun(), genfun) -> mark({1}) jmp?(L2) NEXT:[r({1}) -> , d({1})] d({1}) NEXT:[] L2 [after local declaration]: r({1}) -> PREV:[jmp?(L2)] mark(flfun {1}) call(flfun {1}, flfun|) -> mark(3.equals(4)) r(3) -> r(4) -> mark(equals(4)) call(equals(4), equals|, ) -> r(3) -> r(4) -> mark(3 equals 4) call(3 equals 4, equals|, ) -> r(1) -> r(2) -> mark(1 + 2) call(1 + 2, plus|, ) -> r(a) -> jf(L5|) NEXT:[magic[AND](a && true|, ) -> , r(true) -> ] r(true) -> L5 [result of boolean operation]: magic[AND](a && true|, ) -> PREV:[jf(L5|), r(true) -> ] r(a) -> jt(L6|) NEXT:[r(false) -> , magic[OR](a || false|, ) -> ] r(false) -> L6 [result of boolean operation]: magic[OR](a || false|, ) -> PREV:[jt(L6|), r(false) -> ] L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, , d({1})] ===================== == anonymous_0 == {1} --------------------- L3: 3 4 mark(1) r(1) -> 3 ret(*|) L4 L4: NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == fun foo(a : Boolean, b : Int) : Unit {} --------------------- L0: 1 v(a : Boolean) magic[FAKE_INITIALIZER](a : Boolean) -> w(a|) v(b : Int) magic[FAKE_INITIALIZER](b : Int) -> w(b|) 2 mark({}) read (Unit) L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == genfun == fun genfun() : Unit {} --------------------- L0: 1 2 mark({}) read (Unit) L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == flfun == fun flfun(f : () -> Any) : Unit {} --------------------- L0: 1 v(f : () -> Any) magic[FAKE_INITIALIZER](f : () -> Any) -> w(f|) 2 mark({}) read (Unit) L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] =====================