abstract class A {
  String get property3;
  covariant String property6;
  int get property1;
  int get property2b;
  int property4;
  int property5;
  num get property2a;
  static int get property7 => 0;
  static int get property8a => 0;
  static num get property8b => 0;
  static num get property9 => 0;
  static void set property7(int value) {}
  static void set property8a(num value) {}
  static void set property8b(int value) {}
  static void set property9(String value) {}
  void set property1(int i);
  void set property2a(int i);
  void set property2b(num i);
  void set property3(int i);
}

abstract class B1 {
  B1(this.property4, this.property5, this.property6);
  String get property3;
  final String property6;
  final int property4;
  final int property5;
  int get property1;
  int get property2;
}

abstract class B2 implements B1 {
  void set property1(int i);
  void set property2(String i);
  void set property3(int i);
  void set property4(int i);
  void set property5(String i);
  void set property6(int i);
}

abstract class C1 {
  String property5;
  int property4;
  int property6;
  void set property1(int i);
  void set property2(String i);
  void set property3(int i);
}

abstract class C2 implements C1 {
  String get property3;
  String get property6;
  int get property1;
  int get property2;
  int get property4;
  int get property5;
}

abstract class D1 {
  String get property3;
  int get property1;
  int get property2;
}

abstract class D2 {
  void set property1(int i);
  void set property2(String i);
  void set property3(int i);
}

abstract class D3 implements D1, D2 {}

abstract class D4 implements D3 {}

extension Extension<T extends num, S extends T> on int {
  S get property4 => 0;
  S get property5a => 0;
  String get property3 => '';
  String get property6 => '';
  T get property5b => 0;
  int get property1 => 0;
  int get property2b => 0;
  num get property2a => 0;
  static int get property7 => 0;
  static int get property8a => 0;
  static num get property8b => 0;
  static num get property9 => 0;
  static void set property7(int value) {}
  static void set property8a(num value) {}
  static void set property8b(int value) {}
  static void set property9(String value) {}
  void set property1(int i) {}
  void set property2a(int i) {}
  void set property2b(num i) {}
  void set property3(int i) {}
  void set property4(S i) {}
  void set property5a(T i) {}
  void set property5b(S i) {}
  void set property6(S i) {}
}

main() {}
