class A {
  operator +(String s) => null;
  operator [](i) => null;
  operator []=(i, val) {}
}

class Autobianchi {
  g() => super[0];
}

class B extends A {
  operator +(String s) => super + ("${s}${s}");
  operator [](i) => super[i];
  operator []=(i, val) => super[i++] += val;
}
