library /*isNonNullableByDefault*/;
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-by-declaration 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-by-declaration core::int x) → void;
}
class D2 extends core::Object implements self::A, self::C, self::B {
  synthetic constructor •() → self::D2
    ;
  method foo(covariant-by-declaration 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-by-declaration 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-by-declaration 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-by-declaration 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-by-declaration 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-by-declaration core::int x) → void;
}
class H2 extends core::Object implements self::A, self::E, self::G {
  synthetic constructor •() → self::H2
    ;
  set foo(covariant-by-declaration 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-by-declaration 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-by-declaration 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-by-declaration core::num x) → void;
}
static method main() → dynamic
  ;
