PsiClass (@NotNull PsiClass annotationType) { if (!annotationType.isAnnotationType()) return null; PsiMethod[] values = annotationType.findMethodsByName("value", false); if (values.length != 1) return null; PsiMethod value = values[0]; PsiType returnType = value.getReturnType(); if (!(returnType instanceof PsiArrayType)) return null; PsiType type = ((PsiArrayType)returnType).getComponentType(); if (!(type instanceof PsiClassType)) return null; PsiClass contained = ((PsiClassType)type).resolve(); if (contained == null || !contained.isAnnotationType()) return null; if (PsiImplUtil.findAnnotation(contained.getModifierList(), CommonClassNames.JAVA_LANG_ANNOTATION_REPEATABLE) == null) return null; return contained; }