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

class GenericClass<T> {}

expect(expected, actual) {}

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

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

main() {}
test(Class c, Class? cn) {}
