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

typedef F<T extends core::Object* = dynamic> = (T*) →* void;
class C<T extends core::Object* = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T*>*
    : super core::Object::•()
    ;
  method f<U extends (self::C::T*) →* void = (self::C::T*) →* void>(self::C::f::U* x) → void {}
}
static method g(self::C<core::num*>* c) → void {
  c.{self::C::f}<(core::Object*) →* void>((core::Object* o) → core::Null* {});
}
static method test() → void {
  self::g(new self::C::•<core::int*>());
}
static method main() → void {}
