// @dart = 2.9
class Am1<X, Y> {}
class Bm1<Z> extends Object with Am1<Function(int), Z> {}
class Cm1<Z> extends Object with Am1<Function(int x), Z> {}
class Dm1<Z> extends Object with Am1<int Function(), Z> {}
class Em1<Z> extends Object with Am1<Function(), Z> {}
class Fm1<Z> extends Object with Am1<Function({int}), Z> {}
class Gm1<Z> extends Object with Am1<Function({int x}), Z> {}
class Hm1<Z> extends Object with Am1<Function([int]), Z> {}
class Im1<Z> extends Object with Am1<Function([int x]), Z> {}
class Jm1<Z> extends Object with Am1<Function, Z> {}
class Km1<Z> extends Object with Am1<Function(Function Function), Z> {}
class Lm1<Z> extends Object with Am1<Function(Function Function() Function) Function(), Z> {}
class Mm1<Z> = Object with Am1<Function(int), Z>;
class Nm1<Z> = Object with Am1<Function(int x), Z>;
class Om1<Z> = Object with Am1<int Function(), Z>;
class Pm1<Z> = Object with Am1<Function(), Z>;
class Qm1<Z> = Object with Am1<Function({int}), Z>;
class Rm1<Z> = Object with Am1<Function({int x}), Z>;
class Sm1<Z> = Object with Am1<Function([int]), Z>;
class Tm1<Z> = Object with Am1<Function([int x]), Z>;
class Um1<Z> = Object with Am1<Function, Z>;
class Vm1<Z> = Object with Am1<Function(Function Function), Z>;
class Wm1<Z> = Object with Am1<Function(Function Function() Function) Function(), Z>;
class Am2<X extends Function(), Y> {}
class Bm2<Z> extends Object with Am2<Function(int), Z> {}
class Cm2<Z> extends Object with Am2<Function(int x), Z> {}
class Dm2<Z> extends Object with Am2<int Function(), Z> {}
class Em2<Z> extends Object with Am2<Function(), Z> {}
class Fm2<Z> extends Object with Am2<Function({int}), Z> {}
class Gm2<Z> extends Object with Am2<Function({int x}), Z> {}
class Hm2<Z> extends Object with Am2<Function([int]), Z> {}
class Im2<Z> extends Object with Am2<Function([int x]), Z> {}
class Jm2<Z> extends Object with Am2<Function, Z> {}
class Km2<Z> extends Object with Am2<Function(Function Function), Z> {}
class Lm2<Z> extends Object with Am2<Function(Function Function() Function) Function(), Z> {}
class Mm2<Z> = Object with Am2<Function(int), Z>;
class Nm2<Z> = Object with Am2<Function(int x), Z>;
class Om2<Z> = Object with Am2<int Function(), Z>;
class Pm2<Z> = Object with Am2<Function(), Z>;
class Qm2<Z> = Object with Am2<Function({int}), Z>;
class Rm2<Z> = Object with Am2<Function({int x}), Z>;
class Sm2<Z> = Object with Am2<Function([int]), Z>;
class Tm2<Z> = Object with Am2<Function([int x]), Z>;
class Um2<Z> = Object with Am2<Function, Z>;
class Vm2<Z> = Object with Am2<Function(Function Function), Z>;
class Wm2<Z> = Object with Am2<Function(Function Function() Function) Function(), Z>;
typedef TdB = Function(int);
typedef TdC = Function(int x);
typedef TdD = int Function();
typedef TdE = Function();
typedef TdF = Function({int});
typedef TdG = Function({int x});
typedef TdH = Function([int]);
typedef TdI = Function([int x]);
typedef TdJ = Function(Function Function);
typedef TdK = Function(Function Function() Function) Function();
class Am3<L, Y> {}
class Bm3<Z> extends Object with Am3<TdB, Z> {}
class Cm3<Z> extends Object with Am3<TdC, Z> {}
class Dm3<Z> extends Object with Am3<TdD, Z> {}
class Em3<Z> extends Object with Am3<TdE, Z> {}
class Fm3<Z> extends Object with Am3<TdF, Z> {}
class Gm3<Z> extends Object with Am3<TdG, Z> {}
class Hm3<Z> extends Object with Am3<TdH, Z> {}
class Im3<Z> extends Object with Am3<TdI, Z> {}
class Jm3<Z> extends Object with Am3<TdJ, Z> {}
class Km3<Z> extends Object with Am3<TdK, Z> {}
class Af1<X extends Function(int)> {
  factory Af1.foo() => null;
}
class Bf1<X extends Function(int x)> {
  factory Bf1.foo() => null;
}
class Cf1<X extends int Function()> {
  factory Cf1.foo() => null;
}
class Df1<X extends Function()> {
  factory Df1.foo() => null;
}
class Ef1<X extends Function({int})> {
  factory Ef1.foo() => null;
}
class Ff1<X extends Function({int x})> {
  factory Ff1.foo() => null;
}
class Gf1<X extends Function([int])> {
  factory Gf1.foo() => null;
}
class Hf1<X extends Function([int x])> {
  factory Hf1.foo() => null;
}
class If1<X extends Function> {
  factory If1.foo() => null;
}
class Jf1<X extends Function(Function Function)> {
  factory Jf1.foo() => null;
}
class Kf1<X extends Function(Function Function() Function) Function()> {
  factory Kf1.foo() => null;
}
class Bf2<X extends TdB> {
  factory Bf2.foo() => null;
}
class Cf2<X extends TdC> {
  factory Cf2.foo() => null;
}
class Df2<X extends TdD> {
  factory Df2.foo() => null;
}
class Ef2<X extends TdE> {
  factory Ef2.foo() => null;
}
class Ff2<X extends TdF> {
  factory Ff2.foo() => null;
}
class Gf2<X extends TdG> {
  factory Gf2.foo() => null;
}
class Hf2<X extends TdH> {
  factory Hf2.foo() => null;
}
class If2<X extends TdI> {
  factory If2.foo() => null;
}
class Jf2<X extends TdJ> {
  factory Jf2.foo() => null;
}
class Kf2<X extends TdK> {
  factory Kf2.foo() => null;
}
main() {}
