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

class D<X extends (self::D::X, self::D::Y) → void = (Never, Never) → void, Y extends (self::D::X, self::D::Y) → void = (Never, Never) → void> extends core::Object {
  synthetic constructor •() → self::D<self::D::X, self::D::Y>
    : super core::Object::•()
    ;
}
class E<X extends (self::E::X) → void = (Never) → void> extends core::Object {
  synthetic constructor •() → self::E<self::E::X>
    : super core::Object::•()
    ;
}
static field core::List<self::D<(Never, Never) → void, (Never, Never) → void>> ld = <self::D<(Never, Never) → void, (Never, Never) → void>>[];
static field core::Map<self::D<(Never, Never) → void, (Never, Never) → void>, self::D<(Never, Never) → void, (Never, Never) → void>> md = <self::D<(Never, Never) → void, (Never, Never) → void>, self::D<(Never, Never) → void, (Never, Never) → void>>{};
static field core::List<self::E<(Never) → void>> le = <self::E<(Never) → void>>[];
static field core::Map<self::E<(Never) → void>, self::E<(Never) → void>> me = <self::E<(Never) → void>, self::E<(Never) → void>>{};
static method main() → dynamic {}
