void (Editor editor, PsiMethod method, PsiMethodReferenceExpression methodReference) { if (!method.isPhysical()) return; PsiIdentifier nameIdentifier = method.getNameIdentifier(); if (nameIdentifier == null) return; nameIdentifier = CodeInsightUtilCore.forcePsiPostprocessAndRestoreElement(nameIdentifier); //try to navigate to reference name editor.getCaretModel().moveToOffset(ObjectUtils.notNull(methodReference.getReferenceNameElement(), nameIdentifier).getTextOffset()); final RenamePsiElementProcessor processor = RenamePsiElementProcessor.forElement(method); if (!processor.isInplaceRenameSupported()) { return; } List<String> suggestedNames = new ArrayList<>(); suggestedNames.add(method.getName()); processor.substituteElementToRename(method, editor, new Pass<>() { @Override public void pass(PsiElement substitutedElement) { SmartPsiElementPointer<PsiMethod> pointer = SmartPointerManager.createPointer(method); MemberInplaceRenamer renamer = new MemberInplaceRenamer(method, substitutedElement, editor) { @Override protected boolean performRefactoring() { if (super.performRefactoring()) { ApplicationManager.getApplication().invokeLater(() -> { PsiMethod restored = pointer.getElement(); if (restored != null) { processMethodsDuplicates(restored); } }); return true; } return false; } }; final LinkedHashSet<String> nameSuggestions = new LinkedHashSet<>(suggestedNames); renamer.performInplaceRefactoring(nameSuggestions); } }); }