library test;

class Index {}

class A {}

class B extends A {
  B operator +(C v) => throw '';
  B operator -(int i) => throw '';
  B operator *(B v) => throw '';
  C operator &(A v) => throw '';
}

class C extends B {}

T f<T>() => throw '';

class Base {
  B operator [](Index i) => throw '';
  void operator []=(Index i, B v) {}
}

class Test extends Base {
  void test() {}
}

class Base2 {
  B? operator [](Index i) => throw '';
  void operator []=(Index i, B? v) {}
}

class Test2 extends Base2 {
  void test() {}
}

main() {}
