typedef void TakeInts(int? a, int? b, int? c, int? d, int? e);
typedef void TakeObjectsAndInts(Object? a, int? b, Object? c, int? d, int? e);
typedef void TakeObjects(Object? a, Object? b, Object? c, Object? d, Object? e);
typedef void TakeOptionalInts([int? a, int? b, int? c, int? d]);
typedef void TakeOptionalObjectsAndInts([Object? a, int? b, Object? c, int? d]);
typedef void TakeNamedInts({int? a, int? b, int? c, int? d});
typedef void TakeNamedObjectsAndInts({Object? a, int? b, Object? c, int? d});

class M1 {
  method(covariant int? a, int? b) {}
}

class M2 {
  method(int? a, covariant int? b) {}
}

class C extends Object with M1, M2 {}

class Direct {
  void positional(covariant int? a, int? b, covariant int? c, int? d, int? e) {}
  void optional([covariant int? a, int? b, covariant int? c, int? d]) {}
  void named({covariant int? a, int? b, covariant int? c, int? d}) {}
}

class Inherited extends Direct {}

class Override1 {
  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
}

class Override2 extends Override1 {
  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
}

class Override3 extends Override2 {
  void method(int? a, int? b, int? c, int? d, int? e) {}
}

abstract class Implement1 {
  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
}

class Implement2 {
  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
}

class Implement3 {
  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
}

class Implement4 implements Implement3 {
  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
}

class Implement5 implements Implement1, Implement2, Implement4 {
  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
}

class Interface1 {
  void method(covariant int? a, int? b, int? c, int? d, int? e) {}
}

class Interface2 {
  void method(int? a, covariant int? b, int? c, int? d, int? e) {}
}

class Mixin1 {
  void method(int? a, int? b, covariant int? c, int? d, int? e) {}
}

class Mixin2 {
  void method(int? a, int? b, int? c, covariant int? d, int? e) {}
}

class Superclass {
  void method(int? a, int? b, int? c, int? d, covariant int? e) {}
}

class Mixed extends Superclass
    with Mixin1, Mixin2
    implements Interface1, Interface2 {}

void main() {}
void testDirect() {}
void testInherited() {}
void testOverridden() {}
void testImplemented() {}
void testMixed() {}
void isTrue(bool value) {}
