library;
//
// Problems in library:
//
// pkg/front_end/testcases/extensions/issue38713.dart:7:19: Error: Conflicts with member 'property2'.
//   static void set property2(int x) {}
//                   ^
//
// pkg/front_end/testcases/extensions/issue38713.dart:6:14: Error: Conflicts with setter 'property2'.
//   static int property2;
//              ^
//
// pkg/front_end/testcases/extensions/issue38713.dart:9:19: Error: Conflicts with member 'property3'.
//   static void set property3(int x) {}
//                   ^
//
// pkg/front_end/testcases/extensions/issue38713.dart:10:11: Error: Conflicts with setter 'property3'.
//   int get property3 => 1;
//           ^
//
import self as self;
import "dart:core" as core;

extension C on core::int* {
  static field property2 = self::C|property2;
  get property3 = self::C|get#property3;
  static set property2 = set self::C|property2;
  static set property3 = set self::C|property3;
}
static field core::int* C|property2;
static set C|property2(core::int* x) → void {}
static set C|property3(core::int* x) → void {}
static method C|get#property3(final core::int* #this) → core::int*
  return 1;
static method main() → void {
  self::C|property2;
  self::C|property2 = 42;
  self::C|property3 = 42;
  self::C|get#property3(42);
}
