library test;
import self as self;
import "dart:core" as core;

class C<T extends core::Object = dynamic> extends core::Object {
  synthetic constructor •() → void
    : super core::Object::•()
    ;
  method f1(generic-covariant-impl core::List<self::C::T> x) → void {}
  method f2(generic-covariant-impl () → self::C::T callback) → void {}
  method f3(generic-covariant-impl (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);
}
static method g2(self::C<core::num> c, () → core::num callback) → void {
  c.{self::C::f2}(callback);
}
static method g3(self::C<core::num> c, (core::num) → core::num callback) → void {
  c.{self::C::f3}(callback);
}
static method g4(self::C<core::num> c, (core::num) → void callback) → void {
  c.{self::C::f4}(callback);
}
static method main() → dynamic {}
