library /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

abstract class A extends core::Object {
  synthetic constructor •() → self::A
    ;
  abstract method m(covariant core::int a) → core::Object?;
}
abstract class B extends core::Object {
  synthetic constructor •() → self::B
    ;
  abstract method m(covariant core::num a) → dynamic;
}
abstract class C extends core::Object {
  synthetic constructor •() → self::C
    ;
  abstract method m(core::num a) → void;
}
abstract class D extends core::Object implements self::A {
  synthetic constructor •() → self::D
    ;
  abstract method m(covariant core::int a) → core::Object?;
}
abstract class E extends core::Object implements self::B {
  synthetic constructor •() → self::E
    ;
  abstract method m(covariant core::num a) → dynamic;
}
abstract class F extends core::Object {
  synthetic constructor •() → self::F
    ;
  abstract method m(core::int a) → core::Object?;
}
abstract class G extends core::Object implements self::C {
  synthetic constructor •() → self::G
    ;
  abstract method m(core::num a) → void;
}
abstract class H extends core::Object implements self::D, self::E, self::F, self::C {
  synthetic constructor •() → self::H
    ;
  abstract member-signature method m(covariant core::num a) → core::Object?; -> self::E::m
}
abstract class I extends core::Object implements self::D {
  synthetic constructor •() → self::I
    ;
  abstract method m(covariant core::int a) → core::Object?;
}
abstract class J extends core::Object implements self::H {
  synthetic constructor •() → self::J
    ;
  abstract method m(covariant core::num a) → core::Object?;
}
abstract class K extends core::Object implements self::I, self::E, self::G {
  synthetic constructor •() → self::K
    ;
  abstract member-signature method m(covariant core::num a) → core::Object?; -> self::E::m
}
abstract class L extends core::Object implements self::K {
  synthetic constructor •() → self::L
    ;
  abstract method m(covariant core::num a) → core::Object?;
}
static method main() → dynamic
  ;
