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

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

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 {
  void set property1(int i);
  void set property2(String i);
  void set property3(int i);
  int property4;
  String property5;
  int property6;
}

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

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

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 {
  int get property1 => 0;
  void set property1(int i) {}
  num get property2a => 0;
  void set property2a(int i) {}
  int get property2b => 0;
  void set property2b(num i) {}
  String get property3 => '';
  void set property3(int i) {}
  S get property4 => 0;
  void set property4(S i) {}
  S get property5a => 0;
  void set property5a(T i) {}
  T get property5b => 0;
  void set property5b(S i) {}
  String get property6 => '';
  void set property6(S i) {}
  static int get property7 => 0;
  static void set property7(int value) {}
  static int get property8a => 0;
  static void set property8a(num value) {}
  static num get property8b => 0;
  static void set property8b(int value) {}
  static num get property9 => 0;
  static void set property9(String value) {}
}

main() {}
