int? topLevelFieldAndSetter;
void set topLevelFieldAndSetter(int? value) {}
late
final int? topLevelLateFinalFieldAndSetter;
void set topLevelLateFinalFieldAndSetter(int? value) {}
class Class {
  int? instanceFieldAndSetter;
  void set instanceFieldAndSetter(int? value) {}
  late
  final int? instanceLateFinalFieldAndSetter;
  void set instanceLateFinalFieldAndSetter(int? value) {}
  static int? staticFieldAndSetter;
  static void set staticFieldAndSetter(int? value) {}
  static late ;
  final int? staticLateFinalFieldAndSetter;
  static void set staticLateFinalFieldAndSetter(int? value) {}
  static int? staticFieldAndInstanceSetter;
  void set staticFieldAndInstanceSetter(int? value) {}
  int? instanceFieldAndStaticSetter;
  static void set instanceFieldAndStaticSetter(int? value) {}
}
extension Extension on int? {
  int? extensionInstanceFieldAndSetter;
  void set extensionInstanceFieldAndSetter(int? value) {}
  static int? extensionStaticFieldAndSetter;
  static void set extensionStaticFieldAndSetter(int? value) {}
  static late ;
  final int? extensionStaticLateFinalFieldAndSetter;
  static void set extensionStaticFieldAndSetter(int? value) {}
  static int? extensionStaticFieldAndInstanceSetter;
  void set extensionStaticFieldAndInstanceSetter(int? value) {}
  int? extensionInstanceFieldAndStaticSetter;
  static void set extensionInstanceFieldAndStaticSetter(int? value) {}
}
test() {}
main() {}
