private static GrMethodCallExpression createSetterCall(FieldDescriptor fieldDescriptor,
                                                         GrExpression setterArgument,
                                                         GrReferenceExpression expr,
                                                         PsiClass aClass,
                                                         PsiMethod setter) throws IncorrectOperationException {
    final GroovyPsiElementFactory factory = GroovyPsiElementFactory.getInstance(fieldDescriptor.getField().getProject());
    final String setterName = fieldDescriptor.getSetterName();
    @NonNls String text = setterName + "(a)";
    GrExpression qualifier = expr.getQualifierExpression();
    if (qualifier != null) {
      text = "q." + text;
    }
    GrMethodCallExpression methodCall = (GrMethodCallExpression)factory.createExpressionFromText(text, expr);

    methodCall.getArgumentList().getExpressionArguments()[0].replace(setterArgument);
    if (qualifier != null) {
      ((GrReferenceExpression)methodCall.getInvokedExpression()).getQualifierExpression().replace(qualifier);
    }
    methodCall = checkMethodResolvable(methodCall, setter, expr, aClass);
    if (methodCall == null) {
      VisibilityUtil.escalateVisibility(fieldDescriptor.getField(), expr);
    }
    return methodCall;
  }
private static GrMethodCallExpression createSetterCall(FieldDescriptor fieldDescriptor,
                                                         GrExpression setterArgument,
                                                         GrReferenceExpression expr,
                                                         PsiClass aClass,
                                                         PsiMethod setter)