@Override
  protected boolean queryExternalUsagesRequests(final @NotNull RefManager manager, final @NotNull GlobalJavaInspectionContext globalContext,
                                                final @NotNull 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;
  }
@Override
  protected boolean queryExternalUsagesRequests(final @NotNull RefManager manager, final @NotNull GlobalJavaInspectionContext globalContext,
                                                final @NotNull ProblemDescriptionsProcessor processor)