library test /*isNonNullableByDefault*/;
import self as self;
import "dart:core" as core;

typedef F<contravariant T extends core::Object? = dynamic> = (T%) → void;
typedef G<contravariant 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}{(self::C::T%) → void};
}
static method g(self::C<core::num> c) → () → (core::num) → void {
  return c.{self::C::f}{() → (core::num) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} () → (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 = static-tearoff self::h
}
