abstract class A {
  late int property4;
  late int? property5;
  covariant late int property6;
  A(this.property4, this.property5, this.property6);
}

abstract class B1 {
  late final int property4;
  late final int property5;
  late final int? property6;
  B1(this.property4, this.property5, this.property6);
}

abstract class B2 implements B1 {
  void set property4(int i);
  void set property5(int? i);
  void set property6(int i);
}

abstract class C1 {
  late int property4;
  late int property5;
  late int property6;
  C1(this.property4, this.property5, this.property6);
}

abstract class C2 implements C1 {
  int get property4;
  int get property5;
  int? get property6;
}

main() {}
