// @dart = 2.6
class Class {
  Class _field;
}

extension Extension on Class {
  Class get field => _field;
  Class method() => field;
  Class operator +(int value) => field;
  Class operator -() => field;
  Class operator [](Class key) => field;
  void operator []=(Class key, Class value) {}
  void set field(Class value) {}
}

main() {}
void ifNull(Class c) {}
void indexAccess(Class c) {}
void operatorAccess(Class c) {}
void propertyAccess(Class c) {}
void throws(void Function() f) {}
