.withMethodReturnType(returnType)
.withContainingClass(psiFieldContainingClass)
.withNavigationElement(psiField)
.withModifier(methodModifier);
final LombokLightParameter methodParameter = new LombokLightParameter(psiFieldName, psiFieldType, result, JavaLanguage.INSTANCE);
copyAnnotations(psiField, methodParameter.getModifierList(), LombokUtils.NON_NULL_PATTERN, LombokUtils.NULLABLE_PATTERN, LombokUtils.DEPRECATED_PATTERN);
result.withParameter(methodParameter);
final String paramString = getConstructorCall(psiField, psiFieldContainingClass);
final String blockText = String.format("return this.%s == %s ? this : new %s(%s);", psiFieldName, psiFieldName, returnType.getCanonicalText(), paramString);
result.withBody(PsiMethodUtil.createCodeBlockFromText(blockText, psiFieldContainingClass));