boolean (final PsiMethod method, final GlobalSearchScope scope, final Predicate<? super PsiMember> qualifiedMatcher) { if (method.hasModifierProperty(PsiModifier.PRIVATE) || method.hasModifierProperty(PsiModifier.STATIC)) return false; final PsiClass containingClass = method.getContainingClass(); if (containingClass == null) return false; final int parametersCount = method.getParameterList().getParametersCount(); return !InheritanceUtil.processSupers(containingClass, false, superClass -> { if (PsiSearchScopeUtil.isInScope(scope, superClass)) { for (PsiMethod candidate : superClass.findMethodsByName(method.getName(), false)) { if (parametersCount == candidate.getParameterList().getParametersCount() && !candidate.hasModifierProperty(PsiModifier.PRIVATE) && !candidate.hasModifierProperty(PsiModifier.STATIC) && qualifiedMatcher.test(candidate)) { return false; } } } return true; }); }