class A {
  num invariantField = 0;
  covariant num covariantField = 0;
}

abstract class B implements A {
  get invariantField;
  set invariantField(value);
  get covariantField;
  set covariantField(value);
}

abstract class C implements A {
  int get invariantField;
  void set invariantField(int value) {}
  int get covariantField;
  void set covariantField(int value) {}
}

abstract class D implements A {
  int get invariantField;
  void set invariantField(covariant int value) {}
  int get covariantField;
  void set covariantField(covariant int value) {}
}

main() {}
