void (BidirectionalMap<PropertiesFile, PropertiesFile> parents, List<? extends PropertiesFile> files, Map<PropertiesFile, Set<String>> keysUpToParent, Map<PropertiesFile, Map<String, String>> propertiesFilesNamesMaps, InspectionManager manager, RefManager refManager, ProblemDescriptionsProcessor processor) { for (PropertiesFile file : files) { PropertiesFile parent = parents.get(file); if (parent == null) continue; Set<String> parentKeys = keysUpToParent.get(parent); Set<String> overriddenKeys = new HashSet<>(propertiesFilesNamesMaps.get(file).keySet()); overriddenKeys.retainAll(parentKeys); for (String overriddenKey : overriddenKeys) { IProperty property = file.findPropertyByKey(overriddenKey); assert property != null; while (parent != null) { IProperty parentProperty = parent.findPropertyByKey(overriddenKey); if (parentProperty != null && Comparing.strEqual(property.getValue(), parentProperty.getValue())) { String message = JavaI18nBundle.message("inconsistent.bundle.property.inherited.with.the.same.value", parent.getName()); PsiElement propertyElement = property.getPsiElement(); LocalQuickFix fix = propertyElement instanceof Property prop ? PropertiesQuickFixFactory.getInstance().createRemovePropertyLocalFix(prop) : null; ProblemDescriptor descriptor = manager.createProblemDescriptor(propertyElement, message, fix, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, false); processor.addProblemElement(refManager.getReference(file.getContainingFile()), descriptor); } parent = parents.get(parent); } } } }