void (@NotNull final PsiElement element, @NotNull final String newName, @NotNull final Map<? extends PsiElement, String> allRenames, @NotNull final List<UsageInfo> result) { final PsiMethod methodToRename = (PsiMethod)element; findSubmemberHidesMemberCollisions(methodToRename, newName, result); findMemberHidesOuterMemberCollisions((PsiMethod) element, newName, result); findCollisionsAgainstNewName(methodToRename, newName, result); findHidingMethodWithOtherSignature(methodToRename, newName, result); final PsiClass containingClass = methodToRename.getContainingClass(); final PsiMethod patternMethod = getPrototypeWithNewName(methodToRename, newName); if (containingClass != null && patternMethod != null) { try { final PsiMethod methodInBaseClass = containingClass.findMethodBySignature(patternMethod, true); if (methodInBaseClass != null && methodInBaseClass.getContainingClass() != containingClass) { if (methodInBaseClass.hasModifierProperty(PsiModifier.FINAL)) { result.add(new UnresolvableCollisionUsageInfo(methodInBaseClass, methodToRename) { @Override public String getDescription() { return JavaRefactoringBundle .message("renaming.method.will.override.final.0", RefactoringUIUtil.getDescription(methodInBaseClass, true)); } }); } } } catch (IncorrectOperationException e) { LOG.error(e); } } }