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 class I2 extends core::Object {
  synthetic constructor •() → self::I2*
    : super core::Object::•()
    ;
  abstract method f(core::Object* o) → void;
}
abstract class C extends core::Object implements self::I1, self::I2 {
  synthetic constructor •() → self::C*
    : super core::Object::•()
    ;
  abstract forwarding-stub method f(core::Object* o) → void;
}
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::•()
    ;
}
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.f("hi");
}
static method g2(self::E* e) → void {
  e.f("hi");
}
static method main() → dynamic {
  self::g1(new self::D::•());
  self::g2(new self::F::•());
}
