class Class1 {
  Class1? get property => null;
  void set property(Class1? value) {}
  Class1 get property1 => new Class1();
  Class2 get property2 => new Class2();
}
extension Extension1 ;
on Class1 (){}
class Class2 {
  Class2 get property => this;
  void set property(Class2 value) {}
}
extension Extension2 ;
on Class2 (){}
class Class3 {
  Class2? get property => null;
}
extension Extension3 ;
on Class3 (){}
main() {}
void propertyAccess(Class1? n1) {}
void indexAccess(Class1? n1, Class2? n2, Class3? n3) {}
void operatorAccess(Class1? n1, Class2? n2) {}
void ifNull(Class1? n1) {}
void throws(void Function() f) {}
