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, U extends core::Object? = dynamic> = (T%) → U%;
class C<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T%>
    ;
  method f1(covariant-by-class self::C::T% x) → void
    ;
  method f2(covariant-by-class core::List<self::C::T%> x) → self::C::T%
    ;
}
static method g1(self::C<core::num> c) → (core::num) → void
  ;
static method g2(self::C<core::int> c, core::Object x) → void
  ;
static method g3(self::C<core::num> c) → (core::List<core::num>) → core::num
  ;
static method test() → void
  ;
static method main() → dynamic
  ;
