| ------------ #lib::C:: ------------ |
| %this = _Parameter #0 [_T (#lib::C<dynamic>)+] |
| t1 = _Call direct [dart.core::Object::] (%this) |
| RESULT: _T {}? |
| ------------ #lib::C::foo ------------ |
| %this = _Parameter #0 [_T (#lib::C<dynamic>)+] |
| t1 = _Extract (%this[#lib::C/0]) |
| t2 = _Instantiate (#lib::D @ [t1]) |
| t3 = _Call direct [#lib::D::] (t2) |
| RESULT: t2 |
| ------------ #lib::D:: ------------ |
| %this = _Parameter #0 [_T (#lib::D<dynamic>)+] |
| t1 = _Call direct [dart.core::Object::] (%this) |
| RESULT: _T {}? |
| ------------ #lib::E:: ------------ |
| %this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+] |
| t1 = _Call direct [#lib::C::] (%this) |
| RESULT: _T {}? |
| ------------ #lib::E::foo ------------ |
| %this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+] |
| t1* = _Call direct [#lib::C::foo] (%this) |
| RESULT: t1 |
| ------------ #lib::E::bar ------------ |
| %this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+] |
| t1 = _Extract (%this[#lib::E/1]) |
| t2 = _Instantiate (#lib::D @ [t1]) |
| t3 = _Call direct [#lib::D::] (t2) |
| RESULT: t2 |
| ------------ #lib::E::baz ------------ |
| %this = _Parameter #0 [_T (#lib::E<dynamic, dynamic>)+] |
| t1 = _Extract (%this[#lib::E/2]) |
| t2 = _Instantiate (#lib::D @ [t1]) |
| t3 = _Call direct [#lib::D::] (t2) |
| RESULT: t2 |
| ------------ #lib::main ------------ |
| t0 = _Call direct [#lib::C::] (_T (#lib::C<_TS (dart.core::int)>)) |
| t1 = _Call [#lib::C::foo] (_T (#lib::C<_TS (dart.core::int)>)) |
| t2 = _Call direct [#lib::E::] (_T (#lib::E<_TS (dart.core::String), _TS (dart.core::int), _TS (dart.core::String)>)) |
| t3 = _Call [#lib::E::foo] (_T (#lib::E<_TS (dart.core::String), _TS (dart.core::int), _TS (dart.core::String)>)) |
| RESULT: _T {}? |