class Class {
  int field;
  int? nullableField;
  Class(this.field);
}

extension Extension on Class {
  int get simpleSetter => field;
  set simpleSetter(int value) {}
  int? get simpleNullableSetter => nullableField;
  set simpleNullableSetter(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() {}
test(Class c, Class? cn) {}
expect(expected, actual) {}
