library test;
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>
    ;
  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
  ;
static method g2(self::C<core::num> c, () → core::num callback) → void
  ;
static method g3(self::C<core::num> c, (core::num) → core::num callback) → void
  ;
static method g4(self::C<core::num> c, (core::num) → void callback) → void
  ;
static method main() → dynamic
  ;
