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

typedef F<contravariant T extends core::Object* = dynamic> = (T*) →* void;
typedef G<unrelated T extends core::Object* = dynamic> = () →* (T*) →* void;
class C<T extends core::Object* = dynamic> extends core::Object {
  field (self::C::T*) →* void _x;
  constructor •((self::C::T*) →* void _x) → self::C<self::C::T*>*
    : self::C::_x = _x, super core::Object::•()
    ;
  method f() → (self::C::T*) →* void
    return this.{self::C::_x};
}
static method g(self::C<core::num*>* c) → () →* (core::num*) →* void {
  return c.{self::C::f} as{TypeError} () →* (core::num*) →* void;
}
static method h(core::int* i) → void {
  core::print("${i}");
}
static method test() → void {
  () →* (core::num*) →* void x = self::g(new self::C::•<core::int*>(#C1));
}
static method main() → void {}

constants  {
  #C1 = tearoff self::h
}
