library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
// Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
//       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
//                                                                         ^
//
// pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
// Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
//       /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
//                                                                         ^
//
// pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
// Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
//   takeIDI(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
//                                                                        ^
//
// pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
// Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
//   takeDID(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
//                                                                        ^
//
// pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:30: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
// Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
//           . /*@target=C::m*/ m);
//                              ^
//
// pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:30: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
// Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
//           . /*@target=C::m*/ m);
//                              ^
//
import self as self;
import "dart:core" as core;
import "dart:math" as math;

import "dart:math" as math;
import "dart:math";

class C extends core::Object {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  method m<T extends core::num = core::num>(self::C::m::T x, self::C::m::T y) → self::C::m::T
    return null;
}
static method test() → dynamic {
  self::takeIII(math::max<core::int>);
  self::takeDDD(math::max<core::double>);
  self::takeNNN(math::max<core::num>);
  self::takeIDN(math::max<core::num>);
  self::takeDIN(math::max<core::num>);
  self::takeIIN(math::max<core::int>);
  self::takeDDN(math::max<core::double>);
  self::takeIIO(math::max<core::int>);
  self::takeDDO(math::max<core::double>);
  self::takeOOI((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
  self::takeIDI(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:28:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
      /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
                                                                        ^" in (math::max<core::num>) as{TypeError} (core::double, core::int) → core::int);
  self::takeDID(let final<BottomType> #t2 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:30:73: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
      /*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ math.max);
                                                                        ^" in (math::max<core::num>) as{TypeError} (core::int, core::double) → core::double);
  self::takeOON((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
  self::takeOOO((math::max<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
  self::takeIII(math::min<core::int>);
  self::takeDDD(math::min<core::double>);
  self::takeNNN(math::min<core::num>);
  self::takeIDN(math::min<core::num>);
  self::takeDIN(math::min<core::num>);
  self::takeIIN(math::min<core::int>);
  self::takeDDN(math::min<core::double>);
  self::takeIIO(math::min<core::int>);
  self::takeDDO(math::min<core::double>);
  self::takeOOI((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
  self::takeIDI(let final<BottomType> #t3 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:46:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
  takeIDI(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
                                                                       ^" in (math::min<core::num>) as{TypeError} (core::double, core::int) → core::int);
  self::takeDID(let final<BottomType> #t4 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:47:72: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
  takeDID(/*error:COULD_NOT_INFER,error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/ min);
                                                                       ^" in (math::min<core::num>) as{TypeError} (core::int, core::double) → core::double);
  self::takeOON((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
  self::takeOOO((math::min<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
  self::takeIII(new self::C::•().{self::C::m}<core::int>);
  self::takeDDD(new self::C::•().{self::C::m}<core::double>);
  self::takeNNN(new self::C::•().{self::C::m}<core::num>);
  self::takeIDN(new self::C::•().{self::C::m}<core::num>);
  self::takeDIN(new self::C::•().{self::C::m}<core::num>);
  self::takeIIN(new self::C::•().{self::C::m}<core::int>);
  self::takeDDN(new self::C::•().{self::C::m}<core::double>);
  self::takeIIO(new self::C::•().{self::C::m}<core::int>);
  self::takeDDO(new self::C::•().{self::C::m}<core::double>);
  self::takeOON((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
  self::takeOOO((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::num);
  self::takeOOI((new self::C::•().{self::C::m}<core::Object>) as{TypeError} (core::Object, core::Object) → core::int);
  self::takeIDI(let final<BottomType> #t5 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:86:30: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'int Function(double, int)'.
Try changing the type of the parameter, or casting the argument to 'int Function(double, int)'.
          . /*@target=C::m*/ m);
                             ^" in (new self::C::•().{self::C::m}<core::num>) as{TypeError} (core::double, core::int) → core::int);
  self::takeDID(let final<BottomType> #t6 = invalid-expression "pkg/front_end/testcases/inference/generic_methods_infer_generic_instantiation.dart:89:30: Error: The argument type 'num Function(num, num)' can't be assigned to the parameter type 'double Function(int, double)'.
Try changing the type of the parameter, or casting the argument to 'double Function(int, double)'.
          . /*@target=C::m*/ m);
                             ^" in (new self::C::•().{self::C::m}<core::num>) as{TypeError} (core::int, core::double) → core::double);
}
static method takeIII((core::int, core::int) → core::int fn) → void {}
static method takeDDD((core::double, core::double) → core::double fn) → void {}
static method takeIDI((core::double, core::int) → core::int fn) → void {}
static method takeDID((core::int, core::double) → core::double fn) → void {}
static method takeIDN((core::double, core::int) → core::num fn) → void {}
static method takeDIN((core::int, core::double) → core::num fn) → void {}
static method takeIIN((core::int, core::int) → core::num fn) → void {}
static method takeDDN((core::double, core::double) → core::num fn) → void {}
static method takeNNN((core::num, core::num) → core::num fn) → void {}
static method takeOON((core::Object, core::Object) → core::num fn) → void {}
static method takeOOO((core::Object, core::Object) → core::num fn) → void {}
static method takeOOI((core::Object, core::Object) → core::int fn) → void {}
static method takeIIO((core::int, core::int) → core::Object fn) → void {}
static method takeDDO((core::double, core::double) → core::Object fn) → void {}
static method main() → dynamic {}
