library;
import self as self;
import "dart:core" as core;

abstract class A extends core::Object {
  synthetic constructor •() → self::A
    ;
}
abstract class B extends core::Object {
  synthetic constructor •() → self::B
    ;
  abstract method foo(core::num x) → void;
}
abstract class C extends core::Object implements self::B {
  synthetic constructor •() → self::C
    ;
  abstract method foo(covariant core::int x) → void;
}
abstract class D1 extends core::Object implements self::A, self::C, self::B {
  synthetic constructor •() → self::D1
    ;
  abstract method foo(covariant core::int x) → void;
}
class D2 extends core::Object implements self::A, self::C, self::B {
  synthetic constructor •() → self::D2
    ;
  method foo(covariant core::int x) → void
    ;
}
abstract class D3 extends core::Object implements self::A, self::C, self::B {
  synthetic constructor •() → self::D3
    ;
  abstract forwarding-stub method foo(covariant core::num x) → void;
}
abstract class D4 extends core::Object implements self::A, self::C, self::B {
  synthetic constructor •() → self::D4
    ;
  abstract method foo(covariant core::int x) → void;
}
abstract class D5 extends core::Object implements self::A, self::C, self::B {
  synthetic constructor •() → self::D5
    ;
  abstract method foo(covariant core::num x) → void;
}
abstract class E extends core::Object {
  synthetic constructor •() → self::E
    ;
  abstract set foo(core::num x) → void;
}
abstract class G extends core::Object implements self::E {
  synthetic constructor •() → self::G
    ;
  abstract set foo(covariant core::int x) → void;
}
abstract class H1 extends core::Object implements self::A, self::E, self::G {
  synthetic constructor •() → self::H1
    ;
  abstract set foo(covariant core::int x) → void;
}
class H2 extends core::Object implements self::A, self::E, self::G {
  synthetic constructor •() → self::H2
    ;
  set foo(covariant core::int x) → void
    ;
}
abstract class H3 extends core::Object implements self::A, self::E, self::G {
  synthetic constructor •() → self::H3
    ;
  abstract forwarding-stub set foo(covariant core::num x) → void;
}
abstract class H4 extends core::Object implements self::A, self::E, self::G {
  synthetic constructor •() → self::H4
    ;
  abstract set foo(covariant core::int x) → void;
}
abstract class H5 extends core::Object implements self::A, self::E, self::G {
  synthetic constructor •() → self::H5
    ;
  abstract set foo(covariant core::num x) → void;
}
static method main() → dynamic
  ;
