class Super<T> {
  void method1(num a) {}
  void method2(int b) {}
  void method3(num a, int b) {}
  void method4({required num a}) {}
  void method5({required int b}) {}
  void method7(Iterable<T> a) {}
  void method8(List<T> b) {}
  void method9(Iterable<T> a, List<T> b) {}
  void method10({required Iterable<T> a}) {}
  void method11({required List<T> b}) {}
  void set setter1(num a) {}
  void set setter3(Iterable<T> a) {}
}

abstract class Interface<T> {
  void method2(covariant num b) {}
  void method3(num a, covariant num b) {}
  void method5({required int b}) {}
  void method8(covariant Iterable<T> b) {}
  void method9(Iterable<T> a, covariant Iterable<T> b) {}
  void method11({required List<T> b}) {}
}

class Class<T> extends Super<T> implements Interface<T> {
  void method1(covariant int a);
  void method2(num b);
  void method3(covariant int a, num b);
  void method7(covariant List<T> a);
  void method8(Iterable<T> b);
  void method9(covariant List<T> a, Iterable<T> b);
  void set setter1(covariant int a);
  void set setter3(covariant List<T> a);
}

class Class1<T> implements Class<T> {
  void method1(double a) {}
  void method2(double b) {}
  void method3(double a, double b) {}
  void method4({required double a}) {}
  void method5({required double b}) {}
  void method7(Set<T> a) {}
  void method8(Set<T> b) {}
  void method9(Set<T> a, Set<T> b) {}
  void method10({required Set<T> a}) {}
  void method11({required Set<T> b}) {}
  void set setter1(double a) {}
  void set setter3(Set<T> a) {}
}

abstract class Interface2<T> {
  void method1(int a);
  void method2(int b);
  void method3(int a, int b);
  void method7(List<T> a);
  void method8(List<T> b);
  void method9(List<T> a, List<T> b);
  void set setter1(int a);
  void set setter3(List<T> a);
}

abstract class Class2<T> implements Class<T>, Interface2<T> {}

main() {}
