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

import "dart:async";

class B<Y extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::B<self::B::Y%>
    ;
  method bar(covariant-by-class FutureOr<self::B::Y%>y) → dynamic
    ;
}
class A<X extends core::Object? = dynamic> extends core::Object {
  covariant-by-class final field self::B<self::A::X%> b;
  synthetic constructor •() → self::A<self::A::X%>
    ;
  method foo([covariant-by-class FutureOr<self::A::X%>? x]) → dynamic
    ;
}
class C<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T%>
    ;
  method baz<covariant-by-class X extends FutureOr<self::C::T%>>(covariant-by-class FutureOr<self::C::T%>x) → FutureOr<self::C::T%>
    ;
}
class D<T extends core::Object? = dynamic> extends self::C<self::D::T%> {
  synthetic constructor •() → self::D<self::D::T%>
    ;
  method baz<covariant-by-class X extends FutureOr<self::D::T%>>(covariant-by-class FutureOr<self::D::T%>x) → FutureOr<self::D::T%>
    ;
}
static method main() → dynamic
  ;
