// @dart = 2.9
class Class {
  int field;
}

extension Extension on Class {
  int get simpleSetter => field;
  set simpleSetter(int value) {}
  int get mutatingSetter => field;
  set mutatingSetter(int value) {}
  int get setterWithReturn => field;
  set setterWithReturn(int value) {}
  int get setterWithClosure => field;
  set setterWithClosure(int value) {}
  testInternal() {}
}

class GenericClass<T> {}

extension GenericExtension<T> on GenericClass<T> {
  set setter(T value) {}
}

main() {}
expect(expected, actual) {}
