class A {
  String operator [](int index) => "foo";
  void operator []=(int index, String value) {}
}

class B extends A {
  void test() {}
}

extension E on String {
  int get foo => 42;
  int operator [](int index) => 42;
  void operator []=(int index, int value) {}
}

main() {}
warning(String s, List<String> l, Map<String, int> m) {}
