class Class1 {
  Class1? get nullable1 => property1;
  Class1? get property => null;
  Class1? operator +(int value) => nullable1;
  Class1? operator -() => nullable1;
  Class1? operator [](Class1? key) => nullable1;
  Class1 get nonNullable1 => property1;
  Class1 get property1 => new Class1();
  Class1 nonNullable1Method() => nonNullable1;
  Class2 get nonNullable2 => property2;
  Class2 get property2 => new Class2();
  void operator []=(Class1? key, Class1? value) {}
  void set nullable1(Class1? value) {}
  void set property(Class1? value) {}
}

class Class2 {
  Class2 get nonNullable2 => property;
  Class2 get property => this;
  Class2 nonNullable2Method() => nonNullable2;
  Class2 operator +(int value) => property;
  Class2 operator -() => property;
  Class2 operator [](Class2? key) => property;
  void operator []=(Class2? key, Class2? value) => property;
  void set nonNullable2(Class2 value) {}
  void set property(Class2 value) {}
}

class Class3 {
  Class2? get property => null;
  Class2? operator [](Class3? key) => property;
}

main() {}
void ifNull(Class1? n1) {}
void indexAccess(Class1? n1, Class2? n2, Class3? n3) {}
void operatorAccess(Class1? n1, Class2? n2) {}
void propertyAccess(Class1? n1) {}
void throws(void Function() f) {}
