== foo == fun foo() { "before" val bar = object { init { val x = 1 } fun foo() { val a = 2 } } "after" } --------------------- L0: 1 INIT: in: {} out: {} 2 mark({ "before" val bar = object { init { val x = 1 } fun foo() { val a = 2 } } "after" }) mark("before") r("before") -> v(val bar = object { init { val x = 1 } fun foo() { val a = 2 } }) INIT: in: {} out: {} mark(object { init { val x = 1 } fun foo() { val a = 2 } }) INIT: in: {} out: {} 3 mark({ val x = 1 }) v(val x = 1) INIT: in: {} out: {} r(1) -> INIT: in: {} out: {} w(x|) INIT: in: {} out: {} 2 jmp?(L2) INIT: in: {} out: {} d(fun foo() { val a = 2 }) INIT: in: {} out: {} L2 [after local declaration]: r(object { init { val x = 1 } fun foo() { val a = 2 } }) -> w(bar|) INIT: in: {} out: {} mark("after") INIT: in: {} out: {} r("after") -> L1: 1 error: sink: USE: in: {} out: {} ===================== == foo == fun foo() { val a = 2 } --------------------- L3: 3 INIT: in: {} out: {} 4 mark({ val a = 2 }) v(val a = 2) INIT: in: {} out: {} r(2) -> INIT: in: {} out: {} w(a|) INIT: in: {} out: {} L4: 3 INIT: in: {} out: {} error: sink: USE: in: {} out: {} =====================