typedef F<X> = void Function<Y extends X>();
F<X> toF<X>(X x) => throw '';
typedef Fcov<X> = X Function();
typedef Fcon<X> = Function(X);
typedef Finv<X> = X Function(X);

class Acov<X extends Fcov<Y>, Y> {}

class Acon<X extends Fcon<Y>, Y> {}

class Ainv<X extends Finv<Y>, Y> {}

typedef FcovBound<X extends num> = X Function();
typedef FconBound<X extends num> = Function(X);
typedef FinvBound<X extends num> = X Function(X);

class AcovBound<X extends FcovBound<Y>, Y extends num> {}

class AconBound<X extends FconBound<Y>, Y extends num> {}

class AinvBound<X extends FinvBound<Y>, Y extends num> {}

class A<X> {}

typedef FcovCyclicBound<X extends A<X>> = X Function();
typedef FconCyclicBound<X extends A<X>> = Function(X);
typedef FinvCyclicBound<X extends A<X>> = X Function(X);

class AcovCyclicBound<X extends FcovCyclicBound<Y>, Y extends A<Y>> {}

class AconCyclicBound<X extends FconCyclicBound<Y>, Y extends A<Y>> {}

class AinvCyclicBound<X extends FinvCyclicBound<Y>, Y extends A<Y>> {}

typedef FcovCyclicCoBound<X extends Function(X)> = X Function();
typedef FconCyclicCoBound<X extends Function(X)> = Function(X);
typedef FinvCyclicCoBound<X extends Function(X)> = X Function(X);

class AcovCyclicCoBound<X extends FcovCyclicCoBound<Y>,
    Y extends Function(Y)> {}

class AconCyclicCoBound<X extends FconCyclicCoBound<Y>,
    Y extends Function(Y)> {}

class AinvCyclicCoBound<X extends FinvCyclicCoBound<Y>,
    Y extends Function(Y)> {}

class B<X> {}

void testTypeAliasAsTypeArgument(
  Acov source1,
  Acon source2,
  Ainv source3,
  AcovBound source4,
  AconBound source5,
  AinvBound source6,
  AcovCyclicBound source7,
  AconCyclicBound source8,
  AcovCyclicCoBound source10,
  AconCyclicCoBound source11,
) {}
void testNested(
  B<Acov> source1,
  B<Acon> source2,
  B<Ainv> source3,
  B<AcovBound> source4,
  B<AconBound> source5,
  B<AinvBound> source6,
  B<AcovCyclicBound> source7,
  B<AconCyclicBound> source8,
  B<AcovCyclicCoBound> source10,
  B<AconCyclicCoBound> source11,
) {}
main() {}
