------------ C1. ------------
%this = _Parameter #0 [_T (#lib::C1)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ C2. ------------
%this = _Parameter #0 [_T (#lib::C2)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ C3. ------------
%this = _Parameter #0 [_T (#lib::C3)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ C4. ------------
%this = _Parameter #0 [_T (#lib::C4)+]
t1 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ TestEnum. ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
%index = _Parameter #1 [_T (dart.core::int)+?]
%_name = _Parameter #2 [_T (dart.core::String)+?]
t3 = _Call direct set [#lib::TestEnum.index] (%this, %index)
t4 = _Call direct set [#lib::TestEnum._name] (%this, %_name)
t5 = _Call direct [dart.core::Object.] (%this)
RESULT: _T {}?
------------ TestEnum.toString ------------
%this = _Parameter #0 [_T (#lib::TestEnum)+]
t1* = _Call virtual get [#lib::TestEnum._name] (%this)
RESULT: t1
------------ TestEnum.values ------------

RESULT: _T (dart.core::_ImmutableList, const <#lib::TestEnum*>[const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"}])
------------ TestEnum.v1 ------------

RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"})
------------ TestEnum.v2 ------------

RESULT: _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 1, #lib::TestEnum._name: "TestEnum.v2"})
------------ foo ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ bar ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ baz ------------
%x = _Parameter #0 [_T ANY?]
RESULT: _T {}?
------------ sequence ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1 = _Call direct [#lib::C2.] (_T (#lib::C2))
t2 = _Call direct [#lib::C3.] (_T (#lib::C3))
RESULT: _T (#lib::C3)
------------ if1 ------------
%cond = _Parameter #0 [_T (dart.core::bool)+?]
t1 = _Call direct [#lib::C1.] (_T (#lib::C1))
t2 = _Call direct [#lib::C2.] (_T (#lib::C2))
t3 = _Call direct [#lib::foo] (_T (#lib::C2))
x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C1))
RESULT: x_0
------------ if2 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [#lib::C1.] (_T (#lib::C1))
t3 = _Call direct [#lib::foo] (_T (#lib::C1))
t4 = _Call direct [#lib::C2.] (_T (#lib::C2))
t5 = _Call direct [#lib::bar] (_T (#lib::C2))
x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2))
RESULT: x_0
------------ if3 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [#lib::C1.] (_T (#lib::C1))
t3 = _Call direct [#lib::C2.] (_T (#lib::C2))
t4* = _Call direct [#lib::foo] (_T (#lib::C2))
t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t6 = _Call direct [#lib::C3.] (_T (#lib::C3))
t7* = _Call direct [#lib::foo] (_T (#lib::C3))
t8 = _TypeCheck (t7 against dart.core::bool*) (for #lib::foo(x = new #lib::C3()) as dart.core::bool*)
x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C3))
t10 = _Call direct [#lib::bar] (x_0)
RESULT: x_0
------------ if4 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1 = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::foo] (_T (#lib::C2))
t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t4 = _Call direct [#lib::C3.] (_T (#lib::C3))
t5* = _Call direct [#lib::foo] (_T (#lib::C3))
t6 = _TypeCheck (t5 against dart.core::bool*) (for #lib::foo(x = new #lib::C3()) as dart.core::bool*)
t7 = _Call direct [#lib::bar] (_T (#lib::C3))
x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C3))
RESULT: x_0
------------ if5 ------------
%cond = _Parameter #0 [_T (dart.core::bool)+?]
t1 = _Call direct [#lib::C1.] (_T (#lib::C1))
t2 = _Call direct [#lib::C2.] (_T (#lib::C2))
t3 = _Call direct [#lib::foo] (_T (#lib::C1))
RESULT: _T {}?
------------ if6a ------------
%x = _Parameter #0 [_T (dart.core::bool)+?]
t1 = _Call direct [#lib::foo] (_T (dart.core::bool, true))
t2 = _Call direct [#lib::bar] (_T (dart.core::bool, false))
x_0 = _Join [dart.core::bool*] (_T (dart.core::bool, true), _T (dart.core::bool, false))
t4 = _Call direct [#lib::baz] (x_0)
RESULT: _T {}?
------------ if6b ------------
%x = _Parameter #0 [_T ANY?]
t1 = _TypeCheck (%x against dart.core::bool*) (for x as dart.core::bool*)
t2 = _Call direct [#lib::foo] (_T (dart.core::bool, true))
t3 = _Call direct [#lib::bar] (_T (dart.core::bool, false))
x_0 = _Join [dynamic] (_T (dart.core::bool, true), _T (dart.core::bool, false))
t5 = _Call direct [#lib::baz] (x_0)
RESULT: _T {}?
------------ if7 ------------
%x = _Parameter #0 [_T (dart.core::int)+?]
%y = _Parameter #1 [_T (dart.core::String)+?]
%z = _Parameter #2 [_T ANY?]
t3* = _Call [dart.core::num.==] (%x, _T (dart.core::_Smi, 5))
t4* = _Call [dart.core::String.==] (%y, _T (dart.core::_OneByteString, "hi"))
t5 = _Call direct [dart.core::Object.==] (%z, _T {}?)
t6 = _Narrow (%z to _T ANY)
t7 = _Call direct [#lib::foo] (_T (dart.core::_Smi, 5))
t8 = _Call direct [#lib::foo] (_T (dart.core::_OneByteString, "hi"))
t9 = _Call direct [#lib::foo] (t6)
RESULT: _T {}?
------------ if8 ------------
%x = _Parameter #0 [_T ANY?]
t1 = _Narrow (%x to _T (dart.core::String)+)
t2 = _Call direct [#lib::foo] (t1)
RESULT: _T {}?
------------ if9 ------------
%x = _Parameter #0 [_T (#lib::TestEnum)+?]
t1* = _Call [#lib::TestEnum.==] (%x, _T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}))
t2 = _Call direct [#lib::foo] (_T (#lib::TestEnum, const #lib::TestEnum{#lib::TestEnum.index: 0, #lib::TestEnum._name: "TestEnum.v1"}))
RESULT: _T {}?
------------ conditional1 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [#lib::C1.] (_T (#lib::C1))
t3 = _Call direct [#lib::C2.] (_T (#lib::C2))
t4* = _Call direct [#lib::foo] (_T (#lib::C2))
t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t6 = _Call direct [#lib::C3.] (_T (#lib::C3))
t7 = _Call direct [#lib::C4.] (_T (#lib::C4))
x_0 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C4))
t9 = _Call direct [#lib::foo] (x_0)
t10 = _Join [dart.core::Object*] (_T (#lib::C3), _T (#lib::C4))
t11 = _Narrow (t10 to _T (dart.core::Object)+?)
t12 = _Call direct [#lib::bar] (t11)
RESULT: _T {}?
------------ conditional2 ------------
%cond1 = _Parameter #0 [_T (dart.core::bool)+?]
%cond2 = _Parameter #1 [_T (dart.core::bool)+?]
t2 = _Call direct [#lib::C1.] (_T (#lib::C1))
t3 = _Call direct [#lib::C2.] (_T (#lib::C2))
t4* = _Call direct [#lib::foo] (_T (#lib::C2))
t5 = _TypeCheck (t4 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t6 = _Call direct [#lib::C3.] (_T (#lib::C3))
t7 = _Call direct [#lib::C4.] (_T (#lib::C4))
t8* = _Call direct [dart.core::_GrowableList._literal2] (#lib::C4*, _T (#lib::C4), _T {})
t9* = _Call direct [#lib::foo] (t8)
t10 = _Call direct [#lib::foo] (_T (#lib::C3))
t11 = _Join [dynamic] (_T (#lib::C3), t9)
t12 = _Call direct [#lib::bar] (t11)
RESULT: _T {}?
------------ loop1 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2))
t2* = _Call direct [#lib::foo] (x_0)
t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*)
t4 = _Call direct [#lib::C2.] (_T (#lib::C2))
t5 = _Call direct [#lib::bar] (x_0)
RESULT: x_0
------------ loop2 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C3))
t2 = _Call direct [#lib::foo] (x_0)
t3 = _Call direct [#lib::C2.] (_T (#lib::C2))
t4 = _Call direct [#lib::bar] (_T (#lib::C2))
t5 = _Call direct [#lib::C3.] (_T (#lib::C3))
t6* = _Call direct [#lib::bar] (_T (#lib::C3))
t7 = _TypeCheck (t6 against dart.core::bool*) (for #lib::bar(x = new #lib::C3()) as dart.core::bool*)
RESULT: _T (#lib::C3)
------------ loop3 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1 = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::foo] (_T (#lib::C2))
t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x = new #lib::C2()) as dart.core::bool*)
t4 = _Call direct [#lib::C3.] (_T (#lib::C3))
t5 = _Call direct [#lib::bar] (_T (#lib::C2))
RESULT: _T (#lib::C2)
------------ loop4 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1 = _Call direct [#lib::C2.] (_T (#lib::C2))
t2* = _Call direct [#lib::foo] (_T (#lib::C2))
t3* = _Call direct [dart.core::_GrowableList._literal1] (dynamic?, t2)
t4* = _Call get [dart.core::Iterable.iterator] (t3)
t5* = _Call [dart.core::Iterator.moveNext] (t4)
t6 = _Narrow (t4 to _T ANY)
t7 = _Call get [dart.core::Iterator.current] (t6)
x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C3))
t9 = _Call direct [#lib::foo] (x_0)
t10 = _Call direct [#lib::C3.] (_T (#lib::C3))
RESULT: x_0
------------ loop5 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C3))
t2* = _Call direct [#lib::foo] (x_0)
t3 = _TypeCheck (t2 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*)
t4 = _Call direct [#lib::C2.] (_T (#lib::C2))
t5* = _Call direct [#lib::bar] (_T (#lib::C2))
t6 = _TypeCheck (t5 against dart.core::bool*) (for #lib::bar(x) as dart.core::bool*)
t7 = _Call direct [#lib::C3.] (_T (#lib::C3))
x_1 = _Join [dynamic] (x_0, _T (#lib::C2))
RESULT: x_1
------------ loop6 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
x_1 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C2))
x_0 = _Join [dynamic] (_T (#lib::C1), x_1)
t3* = _Call direct [#lib::foo] (x_0)
t4 = _TypeCheck (t3 against dart.core::bool*) (for #lib::foo(x) as dart.core::bool*)
t5 = _Call direct [#lib::C2.] (_T (#lib::C2))
t6* = _Call direct [#lib::bar] (_T (#lib::C2))
t7 = _TypeCheck (t6 against dart.core::bool*) (for #lib::bar(x) as dart.core::bool*)
t8 = _Call direct [#lib::C3.] (_T (#lib::C3))
RESULT: x_0
------------ try1 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
t1 = _Call direct [#lib::C2.] (_T (#lib::C2))
x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2), _T (#lib::C3))
t3 = _Call direct [#lib::foo] (x_0)
t4 = _Call direct [#lib::C3.] (_T (#lib::C3))
t5 = _Call direct [#lib::bar] (x_0)
t6 = _Call direct [#lib::C4.] (_T (#lib::C4))
RESULT: _T (#lib::C4)
------------ closure1 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2))
t2 = _Call direct [#lib::foo] (x_0)
t3 = _Call direct [#lib::bar] (x_0)
t4 = _Call direct [#lib::foo] (_T ANY?)
t5 = _Call direct [#lib::C2.] (_T (#lib::C2))
RESULT: _T {}?
------------ closure2 ------------
t0 = _Call direct [#lib::C1.] (_T (#lib::C1))
x_0 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2))
t2 = _Call direct [#lib::foo] (x_0)
t3 = _Call direct [#lib::C2.] (_T (#lib::C2))
t4 = _Call direct [#lib::foo] (_T ANY?)
RESULT: x_0
------------ switch1 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1 = _Call direct [#lib::C1.] (_T (#lib::C1))
t2 = _Call direct [#lib::C2.] (_T (#lib::C2))
t3 = _Call direct [#lib::C3.] (_T (#lib::C3))
x_2 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C1))
x_3 = _Join [dynamic] (x_2, _T (#lib::C2))
RESULT: x_3
------------ switch2 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1 = _Call direct [#lib::C1.] (_T (#lib::C1))
t2 = _Call direct [#lib::C2.] (_T (#lib::C2))
t3 = _Call direct [#lib::C3.] (_T (#lib::C3))
x_2 = _Join [dynamic] (_T (#lib::C3), _T (#lib::C2))
RESULT: x_2
------------ switch3 ------------
%selector = _Parameter #0 [_T (dart.core::int)+?]
t1 = _Call direct [#lib::C1.] (_T (#lib::C1))
t2 = _Call direct [#lib::C2.] (_T (#lib::C2))
x_1 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C2))
t4 = _Call direct [#lib::foo] (x_1)
t5 = _Call direct [#lib::C3.] (_T (#lib::C3))
x_2 = _Join [dynamic] (_T (#lib::C1), _T (#lib::C3))
RESULT: x_2
------------ cast1 ------------
%x = _Parameter #0 [_T ANY?]
t1 = _TypeCheck (%x against #lib::C1*) (for x as #lib::C1*)
t2 = _Call direct [#lib::foo] (t1)
t3 = _Call direct [#lib::bar] (t1)
RESULT: _T {}?
------------ main ------------

RESULT: _T {}?
