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 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()) {}
class C = B with M implements I<int>;
void main() {}
void test(I<Object> i) {}
