void (@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); }