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

class A<X extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::A<self::A::X*>*
    ;
}
class C<X extends core::Object* = dynamic, Y extends self::A<self::C::X*>* = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
    ;
}
class D<X extends core::num* = dynamic, Y extends self::A<self::D::X*>* = dynamic> extends core::Object {
  synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
    ;
}
class E<X extends core::Object* = dynamic, Y extends () →* self::E::X* = dynamic> extends core::Object {
  synthetic constructor •() → self::E<self::E::X*, self::E::Y*>*
    ;
}
class F<X extends core::num* = dynamic, Y extends () →* self::F::X* = dynamic> extends core::Object {
  synthetic constructor •() → self::F<self::F::X*, self::F::Y*>*
    ;
}
static field self::C<dynamic, dynamic>* c;
static field self::D<dynamic, dynamic>* d;
static field self::E<dynamic, dynamic>* e;
static field self::F<dynamic, dynamic>* f;
static method main() → dynamic
  ;
