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

typedef F<invariant X extends core::Object? = dynamic> = <Y extends X% = dynamic>() → void;
typedef Fcov<X extends core::Object? = dynamic> = () → X%;
typedef Fcon<contravariant X extends core::Object? = dynamic> = (X%) → dynamic;
typedef Finv<invariant X extends core::Object? = dynamic> = (X%) → X%;
typedef FcovBound<X extends core::num> = () → X;
typedef FconBound<contravariant X extends core::num> = (X) → dynamic;
typedef FinvBound<invariant X extends core::num> = (X) → X;
typedef FcovCyclicBound<X extends self::A<X> = self::A<dynamic>> = () → X;
typedef FconCyclicBound<contravariant X extends self::A<X> = self::A<Never>> = (X) → dynamic;
typedef FinvCyclicBound<invariant X extends self::A<X> = self::A<dynamic>> = (X) → X;
typedef FcovCyclicCoBound<X extends (X) → dynamic = (Never) → dynamic> = () → X;
typedef FconCyclicCoBound<contravariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → dynamic;
typedef FinvCyclicCoBound<invariant X extends (X) → dynamic = (dynamic) → dynamic> = (X) → X;
class A<X extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::A<self::A::X%>
    : super core::Object::•()
    ;
}
class B<X extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::B<self::B::X%>
    : super core::Object::•()
    ;
}
static method toF<X extends core::Object? = dynamic>(self::toF::X% x) → <Y extends self::toF::X% = dynamic>() → void
  return throw "";
static method testTopLevel(() → dynamic source1, (dynamic) → dynamic source2, (dynamic) → dynamic source3, () → core::num source4, (core::num) → dynamic source5, (core::num) → core::num source6, () → self::A<dynamic> source7, (self::A<Never>) → dynamic source8, () → (Never) → dynamic source10, ((dynamic) → dynamic) → dynamic source11, ((dynamic) → dynamic) → (dynamic) → dynamic source12) → void {
  <Y extends () → dynamic = dynamic>() → void fsource1 = self::toF<() → dynamic>(source1);
  <Y extends () → dynamic = dynamic>() → void target1 = fsource1;
  <Y extends (dynamic) → dynamic = dynamic>() → void fsource2 = self::toF<(dynamic) → dynamic>(source2);
  <Y extends (dynamic) → dynamic = dynamic>() → void target2 = fsource2;
  <Y extends (dynamic) → dynamic = dynamic>() → void fsource3 = self::toF<(dynamic) → dynamic>(source3);
  <Y extends (dynamic) → dynamic = dynamic>() → void target3 = fsource3;
  <Y extends () → core::num = dynamic>() → void fsource4 = self::toF<() → core::num>(source4);
  <Y extends () → core::num = dynamic>() → void target4 = fsource4;
  <Y extends (core::num) → dynamic = dynamic>() → void fsource5 = self::toF<(core::num) → dynamic>(source5);
  <Y extends (core::num) → dynamic = dynamic>() → void target5 = fsource5;
  <Y extends (core::num) → core::num = dynamic>() → void fsource6 = self::toF<(core::num) → core::num>(source6);
  <Y extends (core::num) → core::num = dynamic>() → void target6 = fsource6;
  <Y extends () → self::A<dynamic> = dynamic>() → void fsource7 = self::toF<() → self::A<dynamic>>(source7);
  <Y extends () → self::A<dynamic> = dynamic>() → void target7 = fsource7;
  <Y extends (self::A<Never>) → dynamic = dynamic>() → void fsource8 = self::toF<(self::A<Never>) → dynamic>(source8);
  <Y extends (self::A<Never>) → dynamic = dynamic>() → void target8 = fsource8;
  (self::A<dynamic>) → self::A<dynamic> source9;
  <Y extends () → (Never) → dynamic = dynamic>() → void fsource10 = self::toF<() → (Never) → dynamic>(source10);
  <Y extends () → (Never) → dynamic = dynamic>() → void target10 = fsource10;
  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void fsource11 = self::toF<((dynamic) → dynamic) → dynamic>(source11);
  <Y extends ((dynamic) → dynamic) → dynamic = dynamic>() → void target11 = fsource11;
  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void fsource12 = self::toF<((dynamic) → dynamic) → (dynamic) → dynamic>(source12);
  <Y extends ((dynamic) → dynamic) → (dynamic) → dynamic = dynamic>() → void target12 = fsource12;
}
static method testNested(self::B<() → dynamic> source1, self::B<(dynamic) → dynamic> source2, self::B<(dynamic) → dynamic> source3, self::B<() → core::num> source4, self::B<(core::num) → dynamic> source5, self::B<(core::num) → core::num> source6, self::B<() → self::A<dynamic>> source7, self::B<(self::A<Never>) → dynamic> source8, self::B<() → (Never) → dynamic> source10, self::B<((dynamic) → dynamic) → dynamic> source11, self::B<((dynamic) → dynamic) → (dynamic) → dynamic> source12) → void {
  <Y extends self::B<() → dynamic> = dynamic>() → void fsource1 = self::toF<self::B<() → dynamic>>(source1);
  <Y extends self::B<() → dynamic> = dynamic>() → void target1 = fsource1;
  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource2 = self::toF<self::B<(dynamic) → dynamic>>(source2);
  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target2 = fsource2;
  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void fsource3 = self::toF<self::B<(dynamic) → dynamic>>(source3);
  <Y extends self::B<(dynamic) → dynamic> = dynamic>() → void target3 = fsource3;
  <Y extends self::B<() → core::num> = dynamic>() → void fsource4 = self::toF<self::B<() → core::num>>(source4);
  <Y extends self::B<() → core::num> = dynamic>() → void target4 = fsource4;
  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void fsource5 = self::toF<self::B<(core::num) → dynamic>>(source5);
  <Y extends self::B<(core::num) → dynamic> = dynamic>() → void target5 = fsource5;
  <Y extends self::B<(core::num) → core::num> = dynamic>() → void fsource6 = self::toF<self::B<(core::num) → core::num>>(source6);
  <Y extends self::B<(core::num) → core::num> = dynamic>() → void target6 = fsource6;
  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void fsource7 = self::toF<self::B<() → self::A<dynamic>>>(source7);
  <Y extends self::B<() → self::A<dynamic>> = dynamic>() → void target7 = fsource7;
  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void fsource8 = self::toF<self::B<(self::A<Never>) → dynamic>>(source8);
  <Y extends self::B<(self::A<Never>) → dynamic> = dynamic>() → void target8 = fsource8;
  self::B<(self::A<dynamic>) → self::A<dynamic>> source9;
  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void fsource10 = self::toF<self::B<() → (Never) → dynamic>>(source10);
  <Y extends self::B<() → (Never) → dynamic> = dynamic>() → void target10 = fsource10;
  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void fsource11 = self::toF<self::B<((dynamic) → dynamic) → dynamic>>(source11);
  <Y extends self::B<((dynamic) → dynamic) → dynamic> = dynamic>() → void target11 = fsource11;
  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void fsource12 = self::toF<self::B<((dynamic) → dynamic) → (dynamic) → dynamic>>(source12);
  <Y extends self::B<((dynamic) → dynamic) → (dynamic) → dynamic> = dynamic>() → void target12 = fsource12;
}
static method main() → dynamic {}
