@NotNull
public PsiMethod createSetterMethod(@NotNull PsiField psiField, @NotNull String methodVisibility) {
final StringBuilder builder = StringBuilderSpinAllocator.alloc();
try {
final String fieldName = psiField.getName();
final PsiType psiFieldType = psiField.getType();
final String methodName = TransformationsUtil.toSetterName(fieldName, PsiType.BOOLEAN.equals(psiFieldType));
builder.append(methodVisibility);
if (StringUtil.isNotEmpty(methodVisibility)) {
builder.append(' ');
}
if (psiField.hasModifierProperty(PsiModifier.STATIC)) {
builder.append(PsiModifier.STATIC).append(' ');
}
builder.append(PsiType.VOID.getCanonicalText());
builder.append(' ');
builder.append(methodName);
final Collection<String> annotationsToCopy = PsiAnnotationUtil.collectAnnotationsToCopy(psiField);
final String annotationsString = PsiAnnotationUtil.buildAnnotationsString(annotationsToCopy);
builder.append("(").append(annotationsString).append(psiFieldType.getCanonicalText()).append(' ').append(fieldName).append(')');
builder.append("{ this.").append(fieldName).append(" = ").append(fieldName).append("; }");
PsiClass psiClass = psiField.getContainingClass();
assert psiClass != null;