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

class B<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::B<self::B::T%>
    : super core::Object::•()
    ;
  method f(covariant-by-class self::B::T% x) → void {}
  method g({required covariant-by-class self::B::T% x = #C1}) → void {}
  method h<covariant-by-class U extends self::B::T%>() → void {}
}
class C extends self::B<core::int> {
  synthetic constructor •() → self::C
    : super self::B::•()
    ;
}
static method g1(self::B<core::num> b) → void {
  b.{self::B::f}(1.5){(core::num) → void};
}
static method g2(self::C c) → void {
  c.{self::B::f}(1){(core::int) → void};
}
static method test() → void {
  self::g1(new self::C::•());
}
static method main() → void {}

constants  {
  #C1 = null
}
