== 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(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()) mark(toLong()) r(2) -> call(toLong, toLong|) -> mark(foo(a, 3)) r(a) -> r(3) -> call(foo, foo|, ) -> mark(genfun()) call(genfun, genfun) -> mark(flfun {1}) mark({1}) jmp?(L2) NEXT:[r({1}) -> , d({1})] d({1}) NEXT:[] L2: r({1}) -> PREV:[jmp?(L2)] call(flfun, flfun|) -> mark(3.equals(4)) mark(equals(4)) r(3) -> r(4) -> call(equals, equals|, ) -> mark(3 equals 4) r(3) -> r(4) -> call(equals, equals|, ) -> mark(1 + 2) r(1) -> r(2) -> call(+, plus|, ) -> r(a) -> jf(L5|) NEXT:[magic(a && true|, ) -> , r(true) -> ] r(true) -> L5: magic(a && true|, ) -> PREV:[jf(L5|), r(true) -> ] r(a) -> jt(L6|) NEXT:[r(false) -> , magic(a || false|, ) -> ] r(false) -> L6: magic(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) -> L4: 3 NEXT:[] error: PREV:[] sink: PREV:[, ] ===================== == foo == fun foo(a : Boolean, b : Int) : Unit {} --------------------- L0: 1 v(a : Boolean) magic(a : Boolean) -> w(a|) v(b : Int) magic(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(f : () -> Any) -> w(f|) 2 mark({}) read (Unit) L1: 1 NEXT:[] error: PREV:[] sink: PREV:[, ] =====================