procedure Test.4 (Test.30): joinpoint Test.14 Test.5: let Test.24 : Int1 = 1i64; let Test.25 : Int1 = GetTagId Test.5; let Test.26 : Int1 = lowlevel Eq Test.24 Test.25; if Test.26 then let Test.15 : Int1 = false; ret Test.15; else let Test.20 : [C I64, C ] = UnionAtIndex (Id 0) (Index 0) Test.5; let Test.21 : U8 = 1i64; let Test.22 : U8 = GetTagId Test.20; let Test.23 : Int1 = lowlevel Eq Test.21 Test.22; if Test.23 then let Test.16 : Int1 = true; ret Test.16; else let Test.8 : [, C [C I64, C ] *self] = UnionAtIndex (Id 0) (Index 1) Test.5; jump Test.14 Test.8; in jump Test.14 Test.30; procedure Test.0 (): let Test.29 : I64 = 3i64; let Test.27 : [C I64, C ] = Just Test.29; let Test.28 : [, C [C I64, C ] *self] = Nil ; let Test.13 : [, C [C I64, C ] *self] = Cons Test.27 Test.28; let Test.12 : Int1 = CallByName Test.4 Test.13; dec Test.13; ret Test.12;