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

class C<T extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::C<self::C::T%>
    : super core::Object::•()
    ;
  method f<U extends core::Object? = dynamic>(self::C::f::U% x) → (self::C::T%) → void
    return (self::C::T% y) → void {};
}
static method test(self::C<core::String> c) → void {
  (core::int) → (core::String) → void tearoff = (c.{self::C::f}{<U extends core::Object? = dynamic>(U%) → (core::String) → void} as{TypeError,CovarianceCheck,ForNonNullableByDefault} <U extends core::Object? = dynamic>(U%) → (core::String) → void)<core::int>;
}
static method main() → dynamic {}
