@Override
 public void visitReferenceExpression(@NotNull PsiReferenceExpression expression) {
   if (FileTypeUtils.isInServerPageFile(expression)) {
     // disable for jsp files IDEADEV-12957
     return;
   }
   super.visitReferenceExpression(expression);
   if (expression.getQualifierExpression() == null) {
     return;
   }
   final PsiElement referenceNameElement = expression.getReferenceNameElement();
   if (referenceNameElement == null) {
     return;
   }
   final PsiElement containingClass = getContainingContextClass(expression);
   if (containingClass == null) {
     return;
   }
   final PsiElement element = expression.resolve();
   if (!(element instanceof PsiMethod || element instanceof PsiField)) {
     return;
   }
   final PsiMember member = (PsiMember) element;
   if (!member.hasModifierProperty(PsiModifier.PRIVATE)) {
     return;
   }
   final PsiClass memberClass = ClassUtils.getContainingClass(member);
   if (memberClass == null) {
     return;
   }
   if (memberClass.equals(containingClass)) {
     return;
   }
   registerError(referenceNameElement, memberClass, member);
 }
 protected final void registerMethodCallError(
     @NotNull PsiMethodCallExpression expression, @NonNls Object... infos) {
   final PsiReferenceExpression methodExpression = expression.getMethodExpression();
   final PsiElement nameToken = methodExpression.getReferenceNameElement();
   if (nameToken == null) {
     registerError(expression, infos);
   } else {
     registerError(nameToken, infos);
   }
 }
  private static void processParameterUsage(
      PsiReferenceExpression ref, String oldName, String newName)
      throws IncorrectOperationException {

    PsiElement last = ref.getReferenceNameElement();
    if (last instanceof PsiIdentifier && last.getText().equals(oldName)) {
      PsiElementFactory factory = JavaPsiFacade.getInstance(ref.getProject()).getElementFactory();
      PsiIdentifier newNameIdentifier = factory.createIdentifier(newName);
      last.replace(newNameIdentifier);
    }
  }
 private static PsiMethodCallExpression prepareMethodCall(
     PsiReferenceExpression expr, String text) {
   PsiExpression qualifier = expr.getQualifierExpression();
   if (qualifier != null) {
     final PsiElement referenceNameElement = expr.getReferenceNameElement();
     if (referenceNameElement != null) {
       text = expr.getText().substring(0, referenceNameElement.getStartOffsetInParent()) + text;
     }
   }
   final PsiElementFactory factory =
       JavaPsiFacade.getInstance(expr.getProject()).getElementFactory();
   return (PsiMethodCallExpression) factory.createExpressionFromText(text, expr);
 }
  @Override
  protected boolean isAvailableImpl(int offset) {
    PsiReferenceExpression ref = myMethodCall.getMethodExpression();
    if (!ref.getText().equals(getSyntheticMethodName())) return false;

    PsiMethod method = PsiTreeUtil.getParentOfType(myMethodCall, PsiMethod.class);
    if (method == null || !method.isConstructor()) return false;
    if (CreateMethodFromUsageFix.hasErrorsInArgumentList(myMethodCall)) return false;
    List<PsiClass> targetClasses = getTargetClasses(myMethodCall);
    if (targetClasses.isEmpty()) return false;

    if (CreateFromUsageUtils.shouldShowTag(offset, ref.getReferenceNameElement(), myMethodCall)) {
      setText(QuickFixBundle.message("create.constructor.text", targetClasses.get(0).getName()));
      return true;
    }

    return false;
  }
 private static boolean isInThisOrSuperCall(PsiNewExpression newExpression) {
   boolean inFirstConstructorLine = false;
   final PsiExpressionStatement expressionStatement =
       PsiTreeUtil.getParentOfType(newExpression, PsiExpressionStatement.class);
   if (expressionStatement != null) {
     final PsiExpression expression = expressionStatement.getExpression();
     if (expression instanceof PsiMethodCallExpression) {
       final PsiReferenceExpression methodExpression =
           ((PsiMethodCallExpression) expression).getMethodExpression();
       final PsiElement resolve = methodExpression.resolve();
       if (resolve instanceof PsiMethod && ((PsiMethod) resolve).isConstructor()) {
         final PsiElement referenceNameElement = methodExpression.getReferenceNameElement();
         if (referenceNameElement != null) {
           if (Comparing.strEqual(referenceNameElement.getText(), PsiKeyword.THIS)
               || Comparing.strEqual(referenceNameElement.getText(), PsiKeyword.SUPER)) {
             inFirstConstructorLine = true;
           }
         }
       }
     }
   }
   return inFirstConstructorLine;
 }