------------ 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 [#lib::foo] (_T (dart.core::_GrowableList<#lib::C4*>))
t9 = _Call direct [#lib::foo] (_T (#lib::C3))
t10 = _Join [dynamic] (_T (#lib::C3), t8)
t11 = _Call direct [#lib::bar] (t10)
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 get [dart.core::Iterable.iterator] (_T (dart.core::_GrowableList<dynamic?>))
t4* = _Call [dart.core::Iterator.moveNext] (t3)
t5 = _Narrow (t3 to _T ANY)
t6 = _Call get [dart.core::Iterator.current] (t5)
x_0 = _Join [dynamic] (_T (#lib::C2), _T (#lib::C3))
t8 = _Call direct [#lib::foo] (x_0)
t9 = _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 {}?
