private static void addAnnotation(@NotNull final PsiElement psiElement, final Iterable<ExtendedProblemDescriptor> problemDescriptors, @NotNull final AnnotationHolder annotationHolder) {
final List<ExtendedProblemDescriptor> matchingDescriptors = new ArrayList<ExtendedProblemDescriptor>();
for (final ExtendedProblemDescriptor descriptor : problemDescriptors) {
final PsiElement problemPsiElement = descriptor.getPsiElement();
final PsiAnonymousClass psiAnonymousClass = PsiTreeUtil.getParentOfType(psiElement, PsiAnonymousClass.class);
if (psiElement.equals(problemPsiElement)) {
matchingDescriptors.add(descriptor);
addAnnotation(descriptor, matchingDescriptors, psiElement, annotationHolder);
} else if (psiAnonymousClass != null && psiAnonymousClass.equals(problemPsiElement)) {
matchingDescriptors.add(descriptor);
addAnnotation(descriptor, matchingDescriptors, psiAnonymousClass, annotationHolder);
}
}
}