library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/clone_function_type.dart:22:51: Error: Expected an identifier, but got '}'.
// Try inserting an identifier before '}'.
// class Fm1<Z> extends Object with Am1<Function({int}), Z> {}
//                                                   ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:46:45: Error: Expected an identifier, but got '}'.
// Try inserting an identifier before '}'.
// class Qm1<Z> = Object with Am1<Function({int}), Z>;
//                                             ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:77:51: Error: Expected an identifier, but got '}'.
// Try inserting an identifier before '}'.
// class Fm2<Z> extends Object with Am2<Function({int}), Z> {}
//                                                   ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:105:45: Error: Expected an identifier, but got '}'.
// Try inserting an identifier before '}'.
// class Qm2<Z> = Object with Am2<Function({int}), Z>;
//                                             ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:134:28: Error: Expected an identifier, but got '}'.
// Try inserting an identifier before '}'.
// typedef TdF = Function({int});
//                            ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:190:34: Error: Expected an identifier, but got '}'.
// Try inserting an identifier before '}'.
// class Ef1<X extends Function({int})> {
//                                  ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:67:7: Error: Type argument 'dynamic Function(int)' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Object with Am2'.
// Try changing type arguments so that they conform to the bounds.
// class Bm2<Z> extends Object with Am2<Function(int), Z> {}
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:70:7: Error: Type argument 'dynamic Function(int)' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Object with Am2'.
// Try changing type arguments so that they conform to the bounds.
// class Cm2<Z> extends Object with Am2<Function(int x), Z> {}
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:86:7: Error: Type argument 'Function' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Object with Am2'.
//  - 'Function' is from 'dart:core'.
// Try changing type arguments so that they conform to the bounds.
// class Jm2<Z> extends Object with Am2<Function, Z> {}
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:89:7: Error: Type argument 'dynamic Function(Function)' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Object with Am2'.
//  - 'Function' is from 'dart:core'.
// Try changing type arguments so that they conform to the bounds.
// class Km2<Z> extends Object with Am2<Function(Function Function), Z> {}
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:95:7: Error: Type argument 'dynamic Function(int)' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Mm2'.
// Try changing type arguments so that they conform to the bounds.
// class Mm2<Z> = Object with Am2<Function(int), Z>;
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:98:7: Error: Type argument 'dynamic Function(int)' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Nm2'.
// Try changing type arguments so that they conform to the bounds.
// class Nm2<Z> = Object with Am2<Function(int x), Z>;
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:114:7: Error: Type argument 'Function' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Um2'.
//  - 'Function' is from 'dart:core'.
// Try changing type arguments so that they conform to the bounds.
// class Um2<Z> = Object with Am2<Function, Z>;
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
// pkg/front_end/testcases/general/clone_function_type.dart:117:7: Error: Type argument 'dynamic Function(Function)' doesn't conform to the bound 'dynamic Function()' of the type variable 'X' on 'Am2' in the supertype 'Am2' of class 'Vm2'.
//  - 'Function' is from 'dart:core'.
// Try changing type arguments so that they conform to the bounds.
// class Vm2<Z> = Object with Am2<Function(Function Function), Z>;
//       ^
// pkg/front_end/testcases/general/clone_function_type.dart:64:11: Context: This is the type variable whose bound isn't conformed to.
// class Am2<X extends Function(), Y> {}
//           ^
//
import self as self;
import "dart:core" as core;

typedef TdB = (core::int) → dynamic;
typedef TdC = (core::int) → dynamic;
typedef TdD = () → core::int;
typedef TdE = () → dynamic;
typedef TdF = () → dynamic;
typedef TdG = ({x: core::int}) → dynamic;
typedef TdH = ([core::int]) → dynamic;
typedef TdI = ([core::int]) → dynamic;
typedef TdJ = (core::Function) → dynamic;
typedef TdK = () → (() → core::Function) → dynamic;
class Am1<X extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::Am1<self::Am1::X%, self::Am1::Y%>
    ;
}
abstract class _Bm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Bm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Bm1&Object&Am1<self::_Bm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Bm1<Z extends core::Object? = dynamic> extends self::_Bm1&Object&Am1<self::Bm1::Z%> {
  synthetic constructor •() → self::Bm1<self::Bm1::Z%>
    ;
}
abstract class _Cm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::_Cm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Cm1&Object&Am1<self::_Cm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Cm1<Z extends core::Object? = dynamic> extends self::_Cm1&Object&Am1<self::Cm1::Z%> {
  synthetic constructor •() → self::Cm1<self::Cm1::Z%>
    ;
}
abstract class _Dm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → core::int, self::_Dm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Dm1&Object&Am1<self::_Dm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Dm1<Z extends core::Object? = dynamic> extends self::_Dm1&Object&Am1<self::Dm1::Z%> {
  synthetic constructor •() → self::Dm1<self::Dm1::Z%>
    ;
}
abstract class _Em1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → dynamic, self::_Em1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Em1&Object&Am1<self::_Em1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Em1<Z extends core::Object? = dynamic> extends self::_Em1&Object&Am1<self::Em1::Z%> {
  synthetic constructor •() → self::Em1<self::Em1::Z%>
    ;
}
abstract class _Fm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → dynamic, self::_Fm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Fm1&Object&Am1<self::_Fm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Fm1<Z extends core::Object? = dynamic> extends self::_Fm1&Object&Am1<self::Fm1::Z%> {
  synthetic constructor •() → self::Fm1<self::Fm1::Z%>
    ;
}
abstract class _Gm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::_Gm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Gm1&Object&Am1<self::_Gm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Gm1<Z extends core::Object? = dynamic> extends self::_Gm1&Object&Am1<self::Gm1::Z%> {
  synthetic constructor •() → self::Gm1<self::Gm1::Z%>
    ;
}
abstract class _Hm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Hm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Hm1&Object&Am1<self::_Hm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Hm1<Z extends core::Object? = dynamic> extends self::_Hm1&Object&Am1<self::Hm1::Z%> {
  synthetic constructor •() → self::Hm1<self::Hm1::Z%>
    ;
}
abstract class _Im1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::_Im1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Im1&Object&Am1<self::_Im1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Im1<Z extends core::Object? = dynamic> extends self::_Im1&Object&Am1<self::Im1::Z%> {
  synthetic constructor •() → self::Im1<self::Im1::Z%>
    ;
}
abstract class _Jm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<core::Function, self::_Jm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Jm1&Object&Am1<self::_Jm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Jm1<Z extends core::Object? = dynamic> extends self::_Jm1&Object&Am1<self::Jm1::Z%> {
  synthetic constructor •() → self::Jm1<self::Jm1::Z%>
    ;
}
abstract class _Km1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::_Km1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Km1&Object&Am1<self::_Km1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Km1<Z extends core::Object? = dynamic> extends self::_Km1&Object&Am1<self::Km1::Z%> {
  synthetic constructor •() → self::Km1<self::Km1::Z%>
    ;
}
abstract class _Lm1&Object&Am1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::_Lm1&Object&Am1::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Lm1&Object&Am1<self::_Lm1&Object&Am1::Z%>
    : super core::Object::•()
    ;
}
class Lm1<Z extends core::Object? = dynamic> extends self::_Lm1&Object&Am1<self::Lm1::Z%> {
  synthetic constructor •() → self::Lm1<self::Lm1::Z%>
    ;
}
class Mm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Mm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Mm1<self::Mm1::Z%>
    : super core::Object::•()
    ;
}
class Nm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<(core::int) → dynamic, self::Nm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Nm1<self::Nm1::Z%>
    : super core::Object::•()
    ;
}
class Om1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → core::int, self::Om1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Om1<self::Om1::Z%>
    : super core::Object::•()
    ;
}
class Pm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → dynamic, self::Pm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Pm1<self::Pm1::Z%>
    : super core::Object::•()
    ;
}
class Qm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → dynamic, self::Qm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Qm1<self::Qm1::Z%>
    : super core::Object::•()
    ;
}
class Rm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<({x: core::int}) → dynamic, self::Rm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Rm1<self::Rm1::Z%>
    : super core::Object::•()
    ;
}
class Sm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Sm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Sm1<self::Sm1::Z%>
    : super core::Object::•()
    ;
}
class Tm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<([core::int]) → dynamic, self::Tm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Tm1<self::Tm1::Z%>
    : super core::Object::•()
    ;
}
class Um1<Z extends core::Object? = dynamic> = core::Object with self::Am1<core::Function, self::Um1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Um1<self::Um1::Z%>
    : super core::Object::•()
    ;
}
class Vm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<(core::Function) → dynamic, self::Vm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Vm1<self::Vm1::Z%>
    : super core::Object::•()
    ;
}
class Wm1<Z extends core::Object? = dynamic> = core::Object with self::Am1<() → (() → core::Function) → dynamic, self::Wm1::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Wm1<self::Wm1::Z%>
    : super core::Object::•()
    ;
}
class Am2<X extends () → dynamic, Y extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::Am2<self::Am2::X, self::Am2::Y%>
    ;
}
abstract class _Bm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Bm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Bm2&Object&Am2<self::_Bm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Bm2<Z extends core::Object? = dynamic> extends self::_Bm2&Object&Am2<self::Bm2::Z%> {
  synthetic constructor •() → self::Bm2<self::Bm2::Z%>
    ;
}
abstract class _Cm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::_Cm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Cm2&Object&Am2<self::_Cm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Cm2<Z extends core::Object? = dynamic> extends self::_Cm2&Object&Am2<self::Cm2::Z%> {
  synthetic constructor •() → self::Cm2<self::Cm2::Z%>
    ;
}
abstract class _Dm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → core::int, self::_Dm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Dm2&Object&Am2<self::_Dm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Dm2<Z extends core::Object? = dynamic> extends self::_Dm2&Object&Am2<self::Dm2::Z%> {
  synthetic constructor •() → self::Dm2<self::Dm2::Z%>
    ;
}
abstract class _Em2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → dynamic, self::_Em2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Em2&Object&Am2<self::_Em2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Em2<Z extends core::Object? = dynamic> extends self::_Em2&Object&Am2<self::Em2::Z%> {
  synthetic constructor •() → self::Em2<self::Em2::Z%>
    ;
}
abstract class _Fm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → dynamic, self::_Fm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Fm2&Object&Am2<self::_Fm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Fm2<Z extends core::Object? = dynamic> extends self::_Fm2&Object&Am2<self::Fm2::Z%> {
  synthetic constructor •() → self::Fm2<self::Fm2::Z%>
    ;
}
abstract class _Gm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::_Gm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Gm2&Object&Am2<self::_Gm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Gm2<Z extends core::Object? = dynamic> extends self::_Gm2&Object&Am2<self::Gm2::Z%> {
  synthetic constructor •() → self::Gm2<self::Gm2::Z%>
    ;
}
abstract class _Hm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Hm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Hm2&Object&Am2<self::_Hm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Hm2<Z extends core::Object? = dynamic> extends self::_Hm2&Object&Am2<self::Hm2::Z%> {
  synthetic constructor •() → self::Hm2<self::Hm2::Z%>
    ;
}
abstract class _Im2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::_Im2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Im2&Object&Am2<self::_Im2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Im2<Z extends core::Object? = dynamic> extends self::_Im2&Object&Am2<self::Im2::Z%> {
  synthetic constructor •() → self::Im2<self::Im2::Z%>
    ;
}
abstract class _Jm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<core::Function, self::_Jm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Jm2&Object&Am2<self::_Jm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Jm2<Z extends core::Object? = dynamic> extends self::_Jm2&Object&Am2<self::Jm2::Z%> {
  synthetic constructor •() → self::Jm2<self::Jm2::Z%>
    ;
}
abstract class _Km2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::_Km2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Km2&Object&Am2<self::_Km2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Km2<Z extends core::Object? = dynamic> extends self::_Km2&Object&Am2<self::Km2::Z%> {
  synthetic constructor •() → self::Km2<self::Km2::Z%>
    ;
}
abstract class _Lm2&Object&Am2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::_Lm2&Object&Am2::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Lm2&Object&Am2<self::_Lm2&Object&Am2::Z%>
    : super core::Object::•()
    ;
}
class Lm2<Z extends core::Object? = dynamic> extends self::_Lm2&Object&Am2<self::Lm2::Z%> {
  synthetic constructor •() → self::Lm2<self::Lm2::Z%>
    ;
}
class Mm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Mm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Mm2<self::Mm2::Z%>
    : super core::Object::•()
    ;
}
class Nm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<(core::int) → dynamic, self::Nm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Nm2<self::Nm2::Z%>
    : super core::Object::•()
    ;
}
class Om2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → core::int, self::Om2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Om2<self::Om2::Z%>
    : super core::Object::•()
    ;
}
class Pm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → dynamic, self::Pm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Pm2<self::Pm2::Z%>
    : super core::Object::•()
    ;
}
class Qm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → dynamic, self::Qm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Qm2<self::Qm2::Z%>
    : super core::Object::•()
    ;
}
class Rm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<({x: core::int}) → dynamic, self::Rm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Rm2<self::Rm2::Z%>
    : super core::Object::•()
    ;
}
class Sm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Sm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Sm2<self::Sm2::Z%>
    : super core::Object::•()
    ;
}
class Tm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<([core::int]) → dynamic, self::Tm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Tm2<self::Tm2::Z%>
    : super core::Object::•()
    ;
}
class Um2<Z extends core::Object? = dynamic> = core::Object with self::Am2<core::Function, self::Um2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Um2<self::Um2::Z%>
    : super core::Object::•()
    ;
}
class Vm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<(core::Function) → dynamic, self::Vm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Vm2<self::Vm2::Z%>
    : super core::Object::•()
    ;
}
class Wm2<Z extends core::Object? = dynamic> = core::Object with self::Am2<() → (() → core::Function) → dynamic, self::Wm2::Z%> /*hasConstConstructor*/  {
  const synthetic constructor •() → self::Wm2<self::Wm2::Z%>
    : super core::Object::•()
    ;
}
class Am3<L extends core::Object? = dynamic, Y extends core::Object? = dynamic> extends core::Object {
  synthetic constructor •() → self::Am3<self::Am3::L%, self::Am3::Y%>
    ;
}
abstract class _Bm3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Bm3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Bm3&Object&Am3<self::_Bm3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Bm3<Z extends core::Object? = dynamic> extends self::_Bm3&Object&Am3<self::Bm3::Z%> {
  synthetic constructor •() → self::Bm3<self::Bm3::Z%>
    ;
}
abstract class _Cm3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<(core::int) → dynamic, self::_Cm3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Cm3&Object&Am3<self::_Cm3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Cm3<Z extends core::Object? = dynamic> extends self::_Cm3&Object&Am3<self::Cm3::Z%> {
  synthetic constructor •() → self::Cm3<self::Cm3::Z%>
    ;
}
abstract class _Dm3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<() → core::int, self::_Dm3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Dm3&Object&Am3<self::_Dm3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Dm3<Z extends core::Object? = dynamic> extends self::_Dm3&Object&Am3<self::Dm3::Z%> {
  synthetic constructor •() → self::Dm3<self::Dm3::Z%>
    ;
}
abstract class _Em3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<() → dynamic, self::_Em3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Em3&Object&Am3<self::_Em3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Em3<Z extends core::Object? = dynamic> extends self::_Em3&Object&Am3<self::Em3::Z%> {
  synthetic constructor •() → self::Em3<self::Em3::Z%>
    ;
}
abstract class _Fm3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<() → dynamic, self::_Fm3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Fm3&Object&Am3<self::_Fm3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Fm3<Z extends core::Object? = dynamic> extends self::_Fm3&Object&Am3<self::Fm3::Z%> {
  synthetic constructor •() → self::Fm3<self::Fm3::Z%>
    ;
}
abstract class _Gm3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<({x: core::int}) → dynamic, self::_Gm3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Gm3&Object&Am3<self::_Gm3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Gm3<Z extends core::Object? = dynamic> extends self::_Gm3&Object&Am3<self::Gm3::Z%> {
  synthetic constructor •() → self::Gm3<self::Gm3::Z%>
    ;
}
abstract class _Hm3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Hm3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Hm3&Object&Am3<self::_Hm3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Hm3<Z extends core::Object? = dynamic> extends self::_Hm3&Object&Am3<self::Hm3::Z%> {
  synthetic constructor •() → self::Hm3<self::Hm3::Z%>
    ;
}
abstract class _Im3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<([core::int]) → dynamic, self::_Im3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Im3&Object&Am3<self::_Im3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Im3<Z extends core::Object? = dynamic> extends self::_Im3&Object&Am3<self::Im3::Z%> {
  synthetic constructor •() → self::Im3<self::Im3::Z%>
    ;
}
abstract class _Jm3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<(core::Function) → dynamic, self::_Jm3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Jm3&Object&Am3<self::_Jm3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Jm3<Z extends core::Object? = dynamic> extends self::_Jm3&Object&Am3<self::Jm3::Z%> {
  synthetic constructor •() → self::Jm3<self::Jm3::Z%>
    ;
}
abstract class _Km3&Object&Am3<Z extends core::Object? = dynamic> = core::Object with self::Am3<() → (() → core::Function) → dynamic, self::_Km3&Object&Am3::Z%> /*isAnonymousMixin,hasConstConstructor*/  {
  const synthetic constructor •() → self::_Km3&Object&Am3<self::_Km3&Object&Am3::Z%>
    : super core::Object::•()
    ;
}
class Km3<Z extends core::Object? = dynamic> extends self::_Km3&Object&Am3<self::Km3::Z%> {
  synthetic constructor •() → self::Km3<self::Km3::Z%>
    ;
}
class Af1<X extends (core::int) → dynamic> extends core::Object {
  static factory foo<X extends (core::int) → dynamic>() → self::Af1<self::Af1::foo::X>
    ;
}
class Bf1<X extends (core::int) → dynamic> extends core::Object {
  static factory foo<X extends (core::int) → dynamic>() → self::Bf1<self::Bf1::foo::X>
    ;
}
class Cf1<X extends () → core::int> extends core::Object {
  static factory foo<X extends () → core::int>() → self::Cf1<self::Cf1::foo::X>
    ;
}
class Df1<X extends () → dynamic> extends core::Object {
  static factory foo<X extends () → dynamic>() → self::Df1<self::Df1::foo::X>
    ;
}
class Ef1<X extends () → dynamic> extends core::Object {
  static factory foo<X extends () → dynamic>() → self::Ef1<self::Ef1::foo::X>
    ;
}
class Ff1<X extends ({x: core::int}) → dynamic> extends core::Object {
  static factory foo<X extends ({x: core::int}) → dynamic>() → self::Ff1<self::Ff1::foo::X>
    ;
}
class Gf1<X extends ([core::int]) → dynamic> extends core::Object {
  static factory foo<X extends ([core::int]) → dynamic>() → self::Gf1<self::Gf1::foo::X>
    ;
}
class Hf1<X extends ([core::int]) → dynamic> extends core::Object {
  static factory foo<X extends ([core::int]) → dynamic>() → self::Hf1<self::Hf1::foo::X>
    ;
}
class If1<X extends core::Function> extends core::Object {
  static factory foo<X extends core::Function>() → self::If1<self::If1::foo::X>
    ;
}
class Jf1<X extends (core::Function) → dynamic> extends core::Object {
  static factory foo<X extends (core::Function) → dynamic>() → self::Jf1<self::Jf1::foo::X>
    ;
}
class Kf1<X extends () → (() → core::Function) → dynamic> extends core::Object {
  static factory foo<X extends () → (() → core::Function) → dynamic>() → self::Kf1<self::Kf1::foo::X>
    ;
}
class Bf2<X extends (core::int) → dynamic> extends core::Object {
  static factory foo<X extends (core::int) → dynamic>() → self::Bf2<self::Bf2::foo::X>
    ;
}
class Cf2<X extends (core::int) → dynamic> extends core::Object {
  static factory foo<X extends (core::int) → dynamic>() → self::Cf2<self::Cf2::foo::X>
    ;
}
class Df2<X extends () → core::int> extends core::Object {
  static factory foo<X extends () → core::int>() → self::Df2<self::Df2::foo::X>
    ;
}
class Ef2<X extends () → dynamic> extends core::Object {
  static factory foo<X extends () → dynamic>() → self::Ef2<self::Ef2::foo::X>
    ;
}
class Ff2<X extends () → dynamic> extends core::Object {
  static factory foo<X extends () → dynamic>() → self::Ff2<self::Ff2::foo::X>
    ;
}
class Gf2<X extends ({x: core::int}) → dynamic> extends core::Object {
  static factory foo<X extends ({x: core::int}) → dynamic>() → self::Gf2<self::Gf2::foo::X>
    ;
}
class Hf2<X extends ([core::int]) → dynamic> extends core::Object {
  static factory foo<X extends ([core::int]) → dynamic>() → self::Hf2<self::Hf2::foo::X>
    ;
}
class If2<X extends ([core::int]) → dynamic> extends core::Object {
  static factory foo<X extends ([core::int]) → dynamic>() → self::If2<self::If2::foo::X>
    ;
}
class Jf2<X extends (core::Function) → dynamic> extends core::Object {
  static factory foo<X extends (core::Function) → dynamic>() → self::Jf2<self::Jf2::foo::X>
    ;
}
class Kf2<X extends () → (() → core::Function) → dynamic> extends core::Object {
  static factory foo<X extends () → (() → core::Function) → dynamic>() → self::Kf2<self::Kf2::foo::X>
    ;
}
static method main() → dynamic
  ;
