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
  ;
