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

class C<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T%>
    : super core::Object::•()
    ;
  method f1(covariant-by-class self::C::T% x) → void {}
  method f2(core::int x) → void {}
}
class D extends self::C<core::num> {
  synthetic constructor •() → self::D
    : super self::C::•()
    ;
  method f1(covariant-by-declaration covariant-by-class core::int x) → void {}
}
static method g1(dynamic d) → void {
  d{dynamic}.f1(1.5);
}
static method g2(dynamic d) → void {
  d{dynamic}.f2(1.5);
}
static method test() → void {
  self::g1(new self::C::•<core::int>());
  self::g2(new self::C::•<dynamic>());
  self::g1(new self::D::•());
}
static method main() → dynamic {}
