void (@NotNull Project project, @NotNull PsiElement startElement, @NotNull ModPsiUpdater updater) { final PsiIdentifier name = ObjectUtils.tryCast(startElement, PsiIdentifier.class); if (name == null) return; final PsiReferenceExpression expression = ObjectUtils.tryCast(name.getParent(), PsiReferenceExpression.class); if (expression == null) { return; } if (expression instanceof PsiMethodReferenceExpression) { PsiElement resolve = expression.resolve(); if (resolve instanceof PsiMethod) { PsiClass containingClass = ((PsiMethod)resolve).getContainingClass(); if (containingClass != null) { PsiExpression qualifierExpression = expression.getQualifierExpression(); if (qualifierExpression instanceof PsiReferenceExpression) { ((PsiReferenceExpression)qualifierExpression).bindToElement(containingClass); } } } return; } final PsiMethodCallExpression call = ObjectUtils.tryCast(expression.getParent(), PsiMethodCallExpression.class); if (call == null) { return; } final PsiMethod method = call.resolveMethod(); if (method == null) { return; } final PsiClass containingClass = method.getContainingClass(); final PsiExpressionList argumentList = call.getArgumentList(); if (containingClass == null) { return; } final String containingClassName = containingClass.getQualifiedName(); CommentTracker commentTracker = new CommentTracker(); final String argText = commentTracker.text(argumentList); final String typeArgText = commentTracker.text(call.getTypeArgumentList()); final String methodName = expression.getReferenceName(); PsiReplacementUtil.replaceExpressionAndShorten(call, containingClassName + '.' + typeArgText + methodName + argText, commentTracker); }