void (Map<GrMethod, List<GrMethod>> map, HashSet<? super GrMethod> duplicateMethodsWarning, HashSet<? super GrMethod> duplicateMethodsErrors) { for (GrMethod method : map.keySet()) { List<GrMethod> duplicateMethods = map.get(method); if (duplicateMethods != null && duplicateMethods.size() > 1) { HashMap<PsiType, GrMethod> duplicateMethodsToReturnTypeMap = new HashMap<>(); for (GrMethod duplicateMethod : duplicateMethods) { GrTypeElement typeElement = duplicateMethod.getReturnTypeElementGroovy(); PsiType methodReturnType; if (typeElement != null) { methodReturnType = typeElement.getType(); } else { methodReturnType = PsiTypes.nullType(); } duplicateMethodsWarning.add(duplicateMethod); GrMethod grMethodWithType = duplicateMethodsToReturnTypeMap.get(methodReturnType); if (grMethodWithType != null) { duplicateMethodsErrors.add(duplicateMethod); duplicateMethodsErrors.add(grMethodWithType); duplicateMethodsWarning.remove(duplicateMethod); duplicateMethodsWarning.remove(grMethodWithType); } duplicateMethodsToReturnTypeMap.put(methodReturnType, duplicateMethod); } } } }