boolean (@Nullable PsiAnnotationMemberValue value, PsiType expectedType) { if (value == null) return false; if (expectedType instanceof PsiClassType && expectedType.equalsToText(CommonClassNames.JAVA_LANG_CLASS) && !(value instanceof PsiClassObjectAccessExpression)) { return false; } if (value instanceof PsiAnnotation) { final PsiJavaCodeReferenceElement nameRef = ((PsiAnnotation)value).getNameReferenceElement(); if (nameRef == null) return true; if (expectedType instanceof PsiClassType) { final PsiClass aClass = ((PsiClassType)expectedType).resolve(); if (aClass != null && nameRef.isReferenceTo(aClass)) return true; } if (expectedType instanceof PsiArrayType) { final PsiType componentType = ((PsiArrayType)expectedType).getComponentType(); if (componentType instanceof PsiClassType) { final PsiClass aClass = ((PsiClassType)componentType).resolve(); if (aClass != null && nameRef.isReferenceTo(aClass)) return true; } } return false; } if (value instanceof PsiArrayInitializerMemberValue) { return expectedType instanceof PsiArrayType; } if (value instanceof PsiExpression expression) { return expression.getType() != null && TypeConversionUtil.areTypesAssignmentCompatible(expectedType, expression) || expectedType instanceof PsiArrayType && TypeConversionUtil.areTypesAssignmentCompatible(((PsiArrayType)expectedType).getComponentType(), expression); } return true; }