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::C::X*) →* self::C::X* = (core::Null*) →* dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::X*, self::C::Y*>*
    ;
}
class D<X extends core::num* = core::num*, Y extends (self::D::X*) →* self::D::X* = (core::Null*) →* core::num*> extends core::Object {
  synthetic constructor •() → self::D<self::D::X*, self::D::Y*>*
    ;
}
static field core::List<self::C<dynamic, (core::Null*) →* dynamic>*>* lc;
static field core::Map<self::C<dynamic, (core::Null*) →* dynamic>*, self::C<dynamic, (core::Null*) →* dynamic>*>* mc;
static field core::List<self::D<core::num*, (core::Null*) →* core::num*>*>* ld;
static field core::Map<self::D<core::num*, (core::Null*) →* core::num*>*, self::D<core::num*, (core::Null*) →* core::num*>*>* md;
static method main() → dynamic
  ;
