@Override
    public void visitParameter(@NotNull PsiParameter parameter) {
      PsiElement scope = parameter.getDeclarationScope();
      boolean methodParameter = scope instanceof PsiMethod;
      boolean catchParameter = scope instanceof PsiCatchSection;
      boolean report = methodParameter && reportMethodParameters ||
                       !methodParameter && !catchParameter && reportLocalVariables;
      if (!report) return;
      if (parameter instanceof PsiPatternVariable) {
        // Will be reported in instanceof check
        return;
      }
      final PsiTypeElement typeElement = parameter.getTypeElement();
      if (!typeIsConcreteClass(typeElement)) return;
      final String variableName = parameter.getName();
      registerError(typeElement, InspectionGadgetsBundle.message(
        methodParameter ? "concrete.class.method.parameter.problem.descriptor" :
        "local.variable.of.concrete.class.problem.descriptor", variableName));
    }
@Override
    public void visitParameter(@NotNull PsiParameter parameter)