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

typedef F<T extends core::Object> = (T) → dynamic;
class C<T extends core::Object> extends core::Object {
  synthetic constructor •() → void
    ;
  method f(self::C::T x) → void
    ;
  method g1(self::C::T x) → void
    ;
  method g2(self::C::T x) → void
    ;
  method g3(self::C<self::C::T> c, self::C::T x) → void
    ;
  method g4() → (self::C::T) → dynamic
    ;
}
class D extends self::C<core::int> {
  synthetic constructor •() → void
    ;
}
class E extends self::C<core::num> {
  synthetic constructor •() → void
    ;
  method f(covariant core::int x) → void
    ;
}
static method test() → dynamic
  ;
static method main() → dynamic
  ;
