int? topLevelFieldAndSetter;
void set topLevelFieldAndSetter(int? value) {}
int? topLevelFieldAndDuplicateSetter;
void set topLevelFieldAndDuplicateSetter(int? value) {}
void set topLevelFieldAndDuplicateSetter(int? value) {}
int? duplicateTopLevelFieldAndSetter1;
final int? duplicateTopLevelFieldAndSetter1 = null;
void set duplicateTopLevelFieldAndSetter1(int? value) {}
final int? duplicateTopLevelFieldAndSetter2 = null;
int? duplicateTopLevelFieldAndSetter2;
void set duplicateTopLevelFieldAndSetter2(int? value) {}
late
final int? topLevelLateFinalFieldAndSetter;
void set topLevelLateFinalFieldAndSetter(int? value) {}
late
final int? topLevelLateFinalFieldAndDuplicateSetter;
void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
void set topLevelLateFinalFieldAndDuplicateSetter(int? value) {}
class Class {
  int? instanceFieldAndSetter;
  void set instanceFieldAndSetter(int? value) {}
  int? instanceFieldAndDuplicateSetter;
  void set instanceFieldAndDuplicateSetter(int? value) {}
  void set instanceFieldAndDuplicateSetter(int? value) {}
  int? duplicateInstanceFieldAndSetter1;
  final int? duplicateInstanceFieldAndSetter1 = null;
  void set duplicateInstanceFieldAndSetter1(int? value) {}
  final int? duplicateInstanceFieldAndSetter2 = null;
  int? duplicateInstanceFieldAndSetter2;
  void set duplicateInstanceFieldAndSetter2(int? value) {}
  late
  final int? instanceLateFinalFieldAndSetter;
  void set instanceLateFinalFieldAndSetter(int? value) {}
  late
  final int? instanceLateFinalFieldAndDuplicateSetter;
  void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
  void set instanceLateFinalFieldAndDuplicateSetter(int? value) {}
  static int? staticFieldAndSetter;
  static void set staticFieldAndSetter(int? value) {}
  static int? staticFieldAndDuplicateSetter;
  static void set staticFieldAndDuplicateSetter(int? value) {}
  static void set staticFieldAndDuplicateSetter(int? value) {}
  static int? duplicateStaticFieldAndSetter1;
  static final int? duplicateStaticFieldAndSetter1 = null;
  static void set duplicateStaticFieldAndSetter1(int? value) {}
  static final int? duplicateStaticFieldAndSetter2 = null;
  static int? duplicateStaticFieldAndSetter2;
  static void set duplicateStaticFieldAndSetter2(int? value) {}
  static late ;
  final int? staticLateFinalFieldAndSetter;
  static void set staticLateFinalFieldAndSetter(int? value) {}
  static late ;
  final int? staticLateFinalFieldAndDuplicateSetter;
  static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
  static void set staticLateFinalFieldAndDuplicateSetter(int? value) {}
  static int? staticFieldAndInstanceSetter;
  void set staticFieldAndInstanceSetter(int? value) {}
  static int? staticFieldAndInstanceDuplicateSetter;
  void set staticFieldAndInstanceDuplicateSetter(int? value) {}
  void set staticFieldAndInstanceDuplicateSetter(int? value) {}
  int? instanceFieldAndStaticSetter;
  static void set instanceFieldAndStaticSetter(int? value) {}
  int? instanceFieldAndStaticDuplicateSetter;
  static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
  static void set instanceFieldAndStaticDuplicateSetter(int? value) {}
  int? duplicateInstanceFieldAndStaticSetter1;
  final int? duplicateInstanceFieldAndStaticSetter1 = null;
  static void set duplicateInstanceFieldAndStaticSetter1(int? value) {}
  final int? duplicateInstanceFieldAndStaticSetter2 = null;
  int? duplicateInstanceFieldAndStaticSetter2;
  static void set duplicateInstanceFieldAndStaticSetter2(int? value) {}
  static int? duplicateStaticFieldAndInstanceSetter1;
  static final int? duplicateStaticFieldAndInstanceSetter1 = null;
  void set duplicateStaticFieldAndInstanceSetter1(int? value) {}
  static final int? duplicateStaticFieldAndInstanceSetter2 = null;
  static int? duplicateStaticFieldAndInstanceSetter2;
  void set duplicateStaticFieldAndInstanceSetter2(int? value) {}
}
extension Extension on int? {
  int? extensionInstanceFieldAndSetter;
  void set extensionInstanceFieldAndSetter(int? value) {}
  int? extensionInstanceFieldAndDuplicateSetter;
  void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
  void set extensionInstanceFieldAndDuplicateSetter(int? value) {}
  int? duplicateExtensionInstanceFieldAndSetter1;
  final int? duplicateExtensionInstanceFieldAndSetter1 = null;
  void set duplicateExtensionInstanceFieldAndSetter1(int? value) {}
  final int? duplicateExtensionInstanceFieldAndSetter2 = null;
  int? duplicateExtensionInstanceFieldAndSetter2;
  void set duplicateExtensionInstanceFieldAndSetter2(int? value) {}
  static int? extensionStaticFieldAndSetter;
  static void set extensionStaticFieldAndSetter(int? value) {}
  static int? extensionStaticFieldAndDuplicateSetter;
  static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
  static void set extensionStaticFieldAndDuplicateSetter(int? value) {}
  static int? duplicateExtensionStaticFieldAndSetter1;
  static final int? duplicateExtensionStaticFieldAndSetter1 = null;
  static void set duplicateExtensionStaticFieldAndSetter1(int? value) {}
  static final int? duplicateExtensionStaticFieldAndSetter2 = null;
  static int? duplicateExtensionStaticFieldAndSetter2;
  static void set duplicateExtensionStaticFieldAndSetter2(int? value) {}
  static late ;
  final int? extensionStaticLateFinalFieldAndSetter;
  static void set extensionStaticLateFinalFieldAndSetter(int? value) {}
  static late ;
  final int? extensionStaticLateFinalFieldAndDuplicateSetter;
  static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
  static void set extensionStaticLateFinalFieldAndDuplicateSetter(int? value) {}
  static int? extensionStaticFieldAndInstanceSetter;
  void set extensionStaticFieldAndInstanceSetter(int? value) {}
  static int? extensionStaticFieldAndInstanceDuplicateSetter;
  void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
  void set extensionStaticFieldAndInstanceDuplicateSetter(int? value) {}
  int? extensionInstanceFieldAndStaticSetter;
  static void set extensionInstanceFieldAndStaticSetter(int? value) {}
  int? extensionInstanceFieldAndStaticDuplicateSetter;
  static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
  static void set extensionInstanceFieldAndStaticDuplicateSetter(int? value) {}
  int? duplicateExtensionInstanceFieldAndStaticSetter1;
  final int? duplicateExtensionInstanceFieldAndStaticSetter1 = null;
  static void set duplicateExtensionInstanceFieldAndStaticSetter1(int? value) {}
  final int? duplicateExtensionInstanceFieldAndStaticSetter2 = null;
  int? duplicateExtensionInstanceFieldAndStaticSetter2;
  static void set duplicateExtensionInstanceFieldAndStaticSetter2(int? value) {}
  static int? duplicateExtensionStaticFieldAndInstanceSetter1;
  static final int? duplicateExtensionStaticFieldAndInstanceSetter1 = null;
  void set duplicateExtensionStaticFieldAndInstanceSetter1(int? value) {}
  static final int? duplicateExtensionStaticFieldAndInstanceSetter2 = null;
  static int? duplicateExtensionStaticFieldAndInstanceSetter2;
  void set duplicateExtensionStaticFieldAndInstanceSetter2(int? value) {}
}
test() {}
main() {}
