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() {}
