var result;
extension Extension on int {
  int instanceMethod() => 1;
  int instanceMethod() => 2;
  int get instanceGetter => 1;
  int get instanceGetter => 2;
  void set instanceSetter(value) {}
  void set instanceSetter(value) {}
  int instanceField = 1;
  int instanceField = 2;
  int instanceFieldAndSetter1 = 1;
  void set instanceFieldAndSetter1(int value) {}
  void set instanceFieldAndSetter2(int value) {}
  int instanceFieldAndSetter2 = 1;
  late
  final int instanceLateFinalFieldAndSetter1;
  void set instanceLateFinalFieldAndSetter1(int value) {}
  void set instanceLateFinalFieldAndSetter2(int value) {}
  late
  final int instanceLateFinalFieldAndSetter2;
  final int instanceDuplicateFieldAndSetter = 1;
  final int instanceDuplicateFieldAndSetter = 2;
  void set instanceDuplicateFieldAndSetter(int value) {}
  final int instanceFieldAndDuplicateSetter = 1;
  void set instanceFieldAndDuplicateSetter(int value) {}
  void set instanceFieldAndDuplicateSetter(int value) {}
  final int instanceDuplicateFieldAndDuplicateSetter = 1;
  final int instanceDuplicateFieldAndDuplicateSetter = 2;
  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
  void set instanceDuplicateFieldAndDuplicateSetter(int value) {}
  int instanceMethodAndSetter1() => 1;
  void set instanceMethodAndSetter1(int value) {}
  void set instanceMethodAndSetter2(int value) {}
  int instanceMethodAndSetter2() => 1;
}
test() {}
main() {}
expect(expected, actual) {}
throws(dynamic Function() f) {}
