abstract class Super {
  covariant int extendedConcreteCovariantField = 0;
  abstract covariant int extendedAbstractCovariantField;
  covariant int extendedConcreteCovariantImplementedField = 0;
  abstract covariant int extendedAbstractCovariantImplementedField;
  int extendedConcreteImplementedCovariantField = 0;
  abstract int extendedAbstractImplementedCovariantField;
}

class Interface1 {
  int extendedConcreteCovariantImplementedField = 0;
  int extendedAbstractCovariantImplementedField = 0;
  covariant int extendedConcreteImplementedCovariantField = 0;
  covariant int extendedAbstractImplementedCovariantField = 0;
  covariant int implementsMultipleCovariantField1 = 0;
  int implementsMultipleCovariantField2 = 0;
}

class Interface2 {
  int implementsMultipleCovariantField1 = 0;
  covariant int implementsMultipleCovariantField2 = 0;
}

abstract class AbstractClass extends Super implements Interface1, Interface2 {}

class ConcreteSub extends AbstractClass {}

class ConcreteClass extends Super implements Interface1, Interface2 {}

main() {}
