int get property1 => 0;
void set property1(int value) {}
int get property2 => 0;
void set property2(num value) {}
num get property3 => 0;
void set property3(int value) {}

abstract class A {
  int get property1;
  void set property1(int i);
  int get property2;
  void set property2(int i);
  num get property3;
  void set property3(int i);
  int property4 = 0;
  int property5 = 0;
  covariant num property6 = 0;
  static int get property7 => 0;
  static void set property7(int value) {}
  static int get property8 => 0;
  static void set property8(num value) {}
  static num get property9 => 0;
  static void set property9(int value) {}
}

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

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

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

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

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

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

abstract class D3 implements D1, D2 {}

abstract class D4 implements D3 {}

extension Extension<T, S extends T> on int {
  int get property1 => 0;
  void set property1(int i) {}
  int get property2 => 0;
  void set property2(num i) {}
  num get property3 => 0;
  void set property3(int i) {}
  S get property4 => 0;
  void set property4(S i) {}
  S get property5 => 0;
  void set property5(T i) {}
  T get property6 => 0;
  void set property6(S i) {}
  static int get property7 => 0;
  static void set property7(int value) {}
  static int get property8 => 0;
  static void set property8(num value) {}
  static num get property9 => 0;
  static void set property9(int value) {}
}

main() {}
