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 core::List<self::C::T%> x) → void {}
  method f2(covariant-by-class () → self::C::T% callback) → void {}
  method f3(covariant-by-class (self::C::T%) → self::C::T% callback) → void {}
  method f4((self::C::T%) → void callback) → void {}
}
static method g1(self::C<core::num> c, core::List<core::num> l) → void {
  c.{self::C::f1}(l){(core::List<core::num>) → void};
}
static method g2(self::C<core::num> c, () → core::num callback) → void {
  c.{self::C::f2}(callback){(() → core::num) → void};
}
static method g3(self::C<core::num> c, (core::num) → core::num callback) → void {
  c.{self::C::f3}(callback){((core::num) → core::num) → void};
}
static method g4(self::C<core::num> c, (core::num) → void callback) → void {
  c.{self::C::f4}(callback){((core::num) → void) → void};
}
static method main() → dynamic {}
