library test;

abstract class I<T> {
  Object get y;
  T get x;
  void set x(T value);
  void set y(covariant Object value);
}

class B {
  int get x {}
  int get y {}
  void set x(int value) {}
  void set y(int value) {}
}

class C = B with M implements I<int>;

class M {
  int get x => 1;
  int get y => 3;
  void set x(int value) {}
  void set y(int value) {}
}

void expect(Object value, Object expected) {}
void expectTypeError(void callback()) {}
void main() {}
void test(I<Object> i) {}
