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

class B<X extends core::Object* = dynamic, Y extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::B<self::B::X*, self::B::Y*>*
    : super core::Object::•()
    ;
}
class C1<X extends (self::C1::Y) →* self::C1::X = (core::Null*) →* dynamic, Y extends (self::C1::Y) →* self::C1::X* = (core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::C1<self::C1::X*, self::C1::Y*>*
    : super core::Object::•()
    ;
}
class C2<X extends (self::C2::Y) →* self::C2::X = (core::Null*) →* dynamic, Y extends (self::C2::X*) →* self::C2::Y = (core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::C2<self::C2::X*, self::C2::Y*>*
    : super core::Object::•()
    ;
}
class C3<X extends (self::C3::X, self::C3::Y) →* self::C3::X = (core::Null*, core::Null*) →* dynamic, Y extends (self::C3::X*, self::C3::Y) →* self::C3::X* = (core::Null*, core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::C3<self::C3::X*, self::C3::Y*>*
    : super core::Object::•()
    ;
}
class C4<X extends (self::C4::X, self::C4::Y) →* self::C4::X = (core::Null*, core::Null*) →* dynamic, Y extends (self::C4::X*, self::C4::Y) →* self::C4::Y = (core::Null*, core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::C4<self::C4::X*, self::C4::Y*>*
    : super core::Object::•()
    ;
}
class D1<X extends self::B<self::D1::X, self::D1::Y>* = self::B<dynamic, dynamic>*, Y extends (self::D1::Y) →* self::D1::X* = (core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::D1<self::D1::X*, self::D1::Y*>*
    : super core::Object::•()
    ;
}
class D2<X extends self::B<self::D2::X, self::D2::Y>* = self::B<dynamic, dynamic>*, Y extends (self::D2::X*) →* self::D2::Y = (core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::D2<self::D2::X*, self::D2::Y*>*
    : super core::Object::•()
    ;
}
class D3<X extends self::B<self::D3::X, self::D3::Y>* = self::B<dynamic, dynamic>*, Y extends (self::D3::X*, self::D3::Y) →* self::D3::X* = (core::Null*, core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::D3<self::D3::X*, self::D3::Y*>*
    : super core::Object::•()
    ;
}
class D4<X extends self::B<self::D4::X, self::D4::Y>* = self::B<dynamic, dynamic>*, Y extends (self::D4::X*, self::D4::Y) →* self::D4::Y = (core::Null*, core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::D4<self::D4::X*, self::D4::Y*>*
    : super core::Object::•()
    ;
}
class E<X extends (self::E::X) →* self::E::X = (core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::E<self::E::X*>*
    : super core::Object::•()
    ;
}
static field self::C1<(core::Null*) →* dynamic, (core::Null*) →* dynamic>* c1;
static field self::C2<(core::Null*) →* dynamic, (core::Null*) →* dynamic>* c2;
static field self::C3<(core::Null*, core::Null*) →* dynamic, (core::Null*, core::Null*) →* dynamic>* c3;
static field self::C4<(core::Null*, core::Null*) →* dynamic, (core::Null*, core::Null*) →* dynamic>* c4;
static field self::D1<self::B<dynamic, dynamic>*, (core::Null*) →* dynamic>* d1;
static field self::D2<self::B<dynamic, dynamic>*, (core::Null*) →* dynamic>* d2;
static field self::D3<self::B<dynamic, dynamic>*, (core::Null*, core::Null*) →* dynamic>* d3;
static field self::D4<self::B<dynamic, dynamic>*, (core::Null*, core::Null*) →* dynamic>* d4;
static field self::E<(core::Null*) →* dynamic>* e;
static method main() → dynamic {}
