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;
}

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 {}

main() {}
