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

class A<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends core::Object {
  covariant-by-class field self::A::S% x;
  covariant-by-class field self::A::T% y;
  constructor •(self::A::S% x, self::A::T% y) → self::A<self::A::S%, self::A::T%>
    ;
  constructor named(self::A::S% x, self::A::T% y) → self::A<self::A::S%, self::A::T%>
    ;
}
class B<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends self::A<self::B::T%, self::B::S%> {
  constructor •(self::B::S% y, self::B::T% x) → self::B<self::B::S%, self::B::T%>
    ;
  constructor named(self::B::S% y, self::B::T% x) → self::B<self::B::S%, self::B::T%>
    ;
}
class C<S extends core::Object? = dynamic> extends self::B<self::C::S%, self::C::S%> {
  constructor •(self::C::S% a) → self::C<self::C::S%>
    ;
  constructor named(self::C::S% a) → self::C<self::C::S%>
    ;
}
class D<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends self::B<self::D::T%, core::int> {
  constructor •(self::D::T% a) → self::D<self::D::S%, self::D::T%>
    ;
  constructor named(self::D::T% a) → self::D<self::D::S%, self::D::T%>
    ;
}
class E<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends self::A<self::C<self::E::S%>, self::E::T%> {
  constructor •(self::E::T% a) → self::E<self::E::S%, self::E::T%>
    ;
}
class F<S extends core::Object? = dynamic, T extends core::Object? = dynamic> extends self::A<self::F::S%, self::F::T%> {
  constructor •(self::F::S% x, self::F::T% y, {required core::List<self::F::S%> a = null, required core::List<self::F::T%> b = null}) → self::F<self::F::S%, self::F::T%>
    ;
  constructor named(self::F::S% x, self::F::T% y, [self::F::S? a = null, self::F::T? b = null]) → self::F<self::F::S%, self::F::T%>
    ;
}
static method test() → void
  ;
static method main() → dynamic
  ;
