library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference/infer_method_missing_params.dart:23:61: Warning: The method 'C.f' has more required arguments than those of overridden method 'B.f'.
//   /*@topType=int*/ /*@error=OverrideMoreRequiredArguments*/ f(
//                                                             ^
// pkg/front_end/testcases/inference/infer_method_missing_params.dart:17:7: Context: This is the overridden method ('f').
//   int f(int x);
//       ^
//
import self as self;
import "dart:core" as core;

abstract class A extends core::Object {
  synthetic constructor •() → self::A
    : super core::Object::•()
    ;
  abstract method f(core::int x, core::int y) → core::int;
  abstract method g(core::int x, [core::int y = null]) → core::int;
  abstract method h(core::int x, {core::int y = null}) → core::int;
}
abstract class B extends core::Object {
  synthetic constructor •() → self::B
    : super core::Object::•()
    ;
  abstract method f(core::int x) → core::int;
  abstract method g(core::int x) → core::int;
  abstract method h(core::int x) → core::int;
}
abstract class C extends core::Object implements self::A, self::B {
  synthetic constructor •() → self::C
    : super core::Object::•()
    ;
  abstract method f(dynamic x, dynamic y) → dynamic;
  abstract method g(dynamic x, [dynamic y = null]) → dynamic;
  abstract method h(dynamic x, {dynamic y = null}) → dynamic;
}
static method main() → dynamic {}
