boolean (PsiAnnotation @NotNull [] annotations1, PsiAnnotation @NotNull [] annotations2) { final Map<String, PsiAnnotation> map1 = buildAnnotationMap(annotations1); final Map<String, PsiAnnotation> map2 = buildAnnotationMap(annotations2); if (map1.size() != map2.size()) { return false; } for (Map.Entry<String, PsiAnnotation> entry : map1.entrySet()) { if (!equal(entry.getValue(), map2.get(entry.getKey()))) { return false; } } return true; }