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

class A<S extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::A<self::A::S%>
    ;
  method method<covariant-by-class T extends self::A::S%>(covariant-by-class self::A::S% s) → void
    ;
}
class B<S extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::B<self::B::S%>
    ;
  method method<covariant-by-class T extends self::B::S%>(covariant-by-declaration covariant-by-class self::B::S% s) → void
    ;
}
class C<S extends core::Object? = dynamic> extends self::A<self::C::S%> implements self::B<self::C::S%> {
  synthetic constructor •() → self::C<self::C::S%>
    ;
  forwarding-stub forwarding-semi-stub method method<covariant-by-class T extends self::C::S%>(covariant-by-declaration covariant-by-class self::C::S% s) → void
    return super.{self::A::method}<self::C::method::T%>(s);
}
class D<S extends core::Object? = dynamic> extends self::A<self::D::S%> implements self::B<self::D::S%> {
  synthetic constructor •() → self::D<self::D::S%>
    ;
  forwarding-stub method method<covariant-by-class T extends self::D::S%>(covariant-by-declaration covariant-by-class self::D::S% s) → void
    return super.{self::A::method}<self::D::method::T%>(s);
}
static method main() → dynamic
  ;
