boolean (@NotNull final RefManager manager, @NotNull final GlobalJavaInspectionContext globalContext, @NotNull final ProblemDescriptionsProcessor processor) { for (RefElement entryPoint : globalContext.getEntryPointsManager(manager).getEntryPoints(manager)) { processor.ignoreElement(entryPoint); } PsiSearchHelper helper = PsiSearchHelper.getInstance(manager.getProject()); AnalysisScope scope = manager.getScope(); manager.iterate(new RefJavaVisitor() { @Override public void visitMethod(@NotNull RefMethod refMethod) { if (refMethod.isStatic() || refMethod.isConstructor() || PsiModifier.PRIVATE.equals(refMethod.getAccessModifier())) { return; } List<RefParameter> unusedParameters = getUnusedParameters(refMethod); if (unusedParameters.isEmpty()) return; if (scope != null && scope.isTotalScope()) return; UMethod uastElement = refMethod.getUastElement(); if (uastElement == null) return; PsiMethod element = uastElement.getJavaPsi(); PsiMethod[] derived = OverridingMethodsSearch.search(element).toArray(PsiMethod.EMPTY_ARRAY); for (RefParameter refParameter : unusedParameters) { if (refMethod.isAbstract() && derived.length == 0) { refParameter.parameterReferenced(false); processor.ignoreElement(refParameter); continue; } int idx = refParameter.getIndex(); for (PsiMethod method : derived) { if (scope != null && scope.contains(method)) continue; PsiParameter[] parameters = method.getParameterList().getParameters(); if (idx >= parameters.length) continue; PsiParameter psiParameter = parameters[idx]; if (ReferencesSearch.search(psiParameter, helper.getUseScope(psiParameter), false).findFirst() != null) { refParameter.parameterReferenced(false); processor.ignoreElement(refParameter); break; } } } } }); return false; }