@Override
    public void visitClass(@NotNull PsiClass aClass) {
      if (aClass.isInterface() || aClass.isAnnotationType() || aClass.isEnum()) {
        return;
      }
      final PsiClass superClass = aClass.getSuperClass();
      if (!CollectionUtils.isConcreteCollectionClass(superClass)) {
        return;
      }
      final String qualifiedName = superClass.getQualifiedName();
      if ("java.util.LinkedHashMap".equals(qualifiedName)) {
        final PsiMethod[] methods = aClass.findMethodsByName("removeEldestEntry", false);
        final PsiClassType entryType = TypeUtils.getType("java.util.Map.Entry", aClass);
        for (PsiMethod method : methods) {
          if (!PsiTypes.booleanType().equals(method.getReturnType())) {
            continue;
          }
          final PsiParameterList parameterList = method.getParameterList();
          if (  parameterList.getParametersCount() != 1) {
            continue;
          }
          final PsiParameter parameter = parameterList.getParameters()[0];
          if (entryType.isAssignableFrom(parameter.getType())) {
            return;
          }
        }
      }
      registerClassError(aClass, superClass, aClass);
    }
@Override
    public void visitClass(@NotNull PsiClass aClass)