|  | library test; | 
|  | import self as self; | 
|  | import "dart:core" as core; | 
|  |  | 
|  | abstract class I1 extends core::Object { | 
|  | synthetic constructor •() → self::I1* | 
|  | : super core::Object::•() | 
|  | ; | 
|  | abstract method f(core::int* i) → void; | 
|  | abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode | 
|  | abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf | 
|  | abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf | 
|  | abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue | 
|  | abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse | 
|  | abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== | 
|  | abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode | 
|  | abstract member-signature method toString() → core::String*; -> core::Object::toString | 
|  | abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod | 
|  | abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType | 
|  | } | 
|  | abstract class I2 extends core::Object { | 
|  | synthetic constructor •() → self::I2* | 
|  | : super core::Object::•() | 
|  | ; | 
|  | abstract method f(core::Object* o) → void; | 
|  | abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode | 
|  | abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf | 
|  | abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf | 
|  | abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue | 
|  | abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse | 
|  | abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== | 
|  | abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode | 
|  | abstract member-signature method toString() → core::String*; -> core::Object::toString | 
|  | abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod | 
|  | abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType | 
|  | } | 
|  | abstract class C extends core::Object implements self::I1, self::I2 { | 
|  | synthetic constructor •() → self::C* | 
|  | : super core::Object::•() | 
|  | ; | 
|  | abstract member-signature method f(core::Object* o) → void; -> self::I2::f | 
|  | abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode | 
|  | abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf | 
|  | abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf | 
|  | abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue | 
|  | abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse | 
|  | abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== | 
|  | abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode | 
|  | abstract member-signature method toString() → core::String*; -> core::Object::toString | 
|  | abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod | 
|  | abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType | 
|  | } | 
|  | class D extends self::C { | 
|  | synthetic constructor •() → self::D* | 
|  | : super self::C::•() | 
|  | ; | 
|  | method f(core::Object* o) → void {} | 
|  | } | 
|  | abstract class E extends core::Object implements self::I2, self::I1 { | 
|  | synthetic constructor •() → self::E* | 
|  | : super core::Object::•() | 
|  | ; | 
|  | abstract member-signature get _identityHashCode() → core::int*; -> core::Object::_identityHashCode | 
|  | abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) → core::bool*; -> core::Object::_instanceOf | 
|  | abstract member-signature method _simpleInstanceOf(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOf | 
|  | abstract member-signature method _simpleInstanceOfTrue(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfTrue | 
|  | abstract member-signature method _simpleInstanceOfFalse(dynamic type) → core::bool*; -> core::Object::_simpleInstanceOfFalse | 
|  | abstract member-signature operator ==(dynamic other) → core::bool*; -> core::Object::== | 
|  | abstract member-signature get hashCode() → core::int*; -> core::Object::hashCode | 
|  | abstract member-signature method toString() → core::String*; -> core::Object::toString | 
|  | abstract member-signature method noSuchMethod(core::Invocation* invocation) → dynamic; -> core::Object::noSuchMethod | 
|  | abstract member-signature get runtimeType() → core::Type*; -> core::Object::runtimeType | 
|  | } | 
|  | class F extends self::E { | 
|  | synthetic constructor •() → self::F* | 
|  | : super self::E::•() | 
|  | ; | 
|  | method f(core::Object* o) → void {} | 
|  | } | 
|  | static method g1(self::C* c) → void { | 
|  | c.{self::C::f}("hi"); | 
|  | } | 
|  | static method g2(self::E* e) → void { | 
|  | e.{self::I2::f}("hi"); | 
|  | } | 
|  | static method main() → dynamic { | 
|  | self::g1(new self::D::•()); | 
|  | self::g2(new self::F::•()); | 
|  | } |