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); Set<String> parentKeys = keysUpToParent.get(parent); if (parent == null) { parentKeys = new HashSet<>(); for (PropertiesFile otherTopLevelFile : files) { if (otherTopLevelFile != file && parents.get(otherTopLevelFile) == null) { parent = otherTopLevelFile; parentKeys.addAll(propertiesFilesNamesMaps.get(otherTopLevelFile).keySet()); } } if (parent == null) continue; } Set<String> keys = new HashSet<>(propertiesFilesNamesMaps.get(file).keySet()); keys.removeAll(parentKeys); for (String inconsistentKey : keys) { IProperty property = file.findPropertyByKey(inconsistentKey); if (property == null) continue; String message = JavaI18nBundle.message("inconsistent.bundle.property.error", inconsistentKey, parent.getName()); ProblemDescriptor descriptor = manager.createProblemDescriptor(property.getPsiElement(), message, false, LocalQuickFix.EMPTY_ARRAY, ProblemHighlightType.GENERIC_ERROR_OR_WARNING); processor.addProblemElement(refManager.getReference(file.getContainingFile()), descriptor); } } }