== test == fun test(b: Boolean): (Int) -> Int { if (b) { fun foo(n: Int) = n + 1 } else { fun bar(n: Int) = n - 1 } } --------------------- : Boolean NEW: magic[FAKE_INITIALIZER](b: Boolean) -> b : Boolean NEW: r(b) -> { fun foo(n: Int) = n + 1 } !: * { fun bar(n: Int) = n - 1 } !: * if (b) { fun foo(n: Int) = n + 1 } else { fun bar(n: Int) = n - 1 } : * NEW: merge(if (b) { fun foo(n: Int) = n + 1 } else { fun bar(n: Int) = n - 1 }|!, !) -> { if (b) { fun foo(n: Int) = n + 1 } else { fun bar(n: Int) = n - 1 } } : * COPY ===================== == foo == fun foo(n: Int) = n + 1 --------------------- : Int NEW: magic[FAKE_INITIALIZER](n: Int) -> n : Int NEW: r(n) -> 1 : Int NEW: r(1) -> n + 1 : Int NEW: call(n + 1, plus|, ) -> ===================== == bar == fun bar(n: Int) = n - 1 --------------------- : Int NEW: magic[FAKE_INITIALIZER](n: Int) -> n : Int NEW: r(n) -> 1 : Int NEW: r(1) -> n - 1 : Int NEW: call(n - 1, minus|, ) -> =====================