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

class A extends core::Object {
  synthetic constructor •() → self::A*
    : super core::Object::•()
    ;
}
class B extends self::A {
  synthetic constructor •() → self::B*
    : super self::A::•()
    ;
}
class C extends self::B {
  synthetic constructor •() → self::C*
    : super self::B::•()
    ;
}
class D extends self::C {
  synthetic constructor •() → self::D*
    : super self::C::•()
    ;
}
class G<T extends self::A* = self::A*> extends core::Object {
  synthetic constructor •() → self::G<self::G::T*>*
    : super core::Object::•()
    ;
}
class GB extends self::G<self::B*> {
  synthetic constructor •() → self::GB*
    : super self::G::•()
    ;
}
class GC extends self::G<self::C*> {
  synthetic constructor •() → self::GC*
    : super self::G::•()
    ;
}
class GD extends self::G<self::D*> {
  synthetic constructor •() → self::GD*
    : super self::G::•()
    ;
}
class X extends core::Object implements self::A {
  synthetic constructor •() → self::X*
    : super core::Object::•()
    ;
}
class Y extends self::X {
  synthetic constructor •() → self::Y*
    : super self::X::•()
    ;
}
class Z extends core::Object implements self::Y {
  synthetic constructor •() → self::Z*
    : super core::Object::•()
    ;
}
class W extends core::Object implements self::Z {
  synthetic constructor •() → self::W*
    : super core::Object::•()
    ;
}
class GX extends core::Object implements self::G<self::A*> {
  synthetic constructor •() → self::GX*
    : super core::Object::•()
    ;
}
class GY extends self::X implements self::GB {
  synthetic constructor •() → self::GY*
    : super self::X::•()
    ;
}
class GZ extends core::Object implements self::Y, self::GC {
  synthetic constructor •() → self::GZ*
    : super core::Object::•()
    ;
}
class GW extends core::Object implements self::Z, self::GD {
  synthetic constructor •() → self::GW*
    : super core::Object::•()
    ;
}
class GU extends self::GW {
  synthetic constructor •() → self::GU*
    : super self::GW::•()
    ;
}
class GV extends self::GU implements self::GW {
  synthetic constructor •() → self::GV*
    : super self::GU::•()
    ;
}
class ARO<S extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::ARO<self::ARO::S*>*
    : super core::Object::•()
    ;
}
class ARQ<T extends core::Object* = dynamic> extends core::Object implements self::ARO<self::ARQ::T*> {
  synthetic constructor •() → self::ARQ<self::ARQ::T*>*
    : super core::Object::•()
    ;
}
class ARN extends self::ARQ<self::A*> {
  synthetic constructor •() → self::ARN*
    : super self::ARQ::•()
    ;
}
static method main() → dynamic {}
