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

class A extends core::Object {
  synthetic constructor •() → self::A
    ;
  operator ==(covariant-by-declaration self::A other) → core::bool
    ;
}
class B extends self::A {
  synthetic constructor •() → self::B
    ;
  operator ==(covariant-by-declaration self::A other) → core::bool
    ;
}
class C<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T%>
    ;
  operator ==(covariant-by-declaration covariant-by-class self::C<self::C::T%> other) → core::bool
    ;
}
class D extends self::C<core::int> {
  synthetic constructor •() → self::D
    ;
}
static method main() → dynamic
  ;
static method testNonNullable(self::A a, self::B b, self::C<dynamic> c_dynamic, self::C<core::int> c_int, self::C<core::String> c_string, self::D d) → dynamic
  ;
static method testNullable(self::A? a, self::B? b, self::C<dynamic>? c_dynamic, self::C<core::int>? c_int, self::C<core::String>? c_string, self::D? d) → dynamic
  ;
