boolean (@NotNull MultiMap<Object, PsiElement> values, Consumer<? super HighlightInfo.Builder> errorSink) { boolean reported = false; for (Map.Entry<Object, Collection<PsiElement>> entry : values.entrySet()) { if (entry.getValue().size() <= 1) continue; Object duplicateKey = entry.getKey(); MultiMap<PsiEnumConstant, PsiElement> psiByEnums = new MultiMap<>(); for (PsiElement duplicateElement : entry.getValue()) { PsiEnumConstant constant = getEnumConstant(duplicateElement); if (constant != null) { psiByEnums.putValue(constant, duplicateElement); continue; } HighlightInfo.Builder info = createDuplicateInfo(duplicateKey, duplicateElement); errorSink.accept(info); reported = true; } //No two of the case constants associated with a switch block may have the same value. (enum is constant here) for (Map.Entry<PsiEnumConstant, Collection<PsiElement>> references : psiByEnums.entrySet()) { if (references.getValue().size() <= 1) continue; for (PsiElement referenceToEnum : references.getValue()) { HighlightInfo.Builder info = createDuplicateInfo(duplicateKey, referenceToEnum); errorSink.accept(info); reported = true; } } } return reported; }