JvmAnnotationAttributeValue (@Nullable PsiAnnotationMemberValue value) { if (value instanceof PsiClassObjectAccessExpression) { return new PsiAnnotationClassValue((PsiClassObjectAccessExpression)value); } if (value instanceof PsiAnnotation) { return new PsiNestedAnnotationValue((PsiAnnotation)value); } if (value instanceof PsiArrayInitializerMemberValue) { return new PsiAnnotationArrayValue((PsiArrayInitializerMemberValue)value); } if (value instanceof PsiReferenceExpression) { PsiElement resolved = ((PsiReferenceExpression)value).resolve(); if (resolved instanceof JvmEnumField) { return new PsiAnnotationEnumFieldValue((PsiReferenceExpression)value, (JvmEnumField)resolved); } } if (value instanceof PsiExpression) { return new PsiAnnotationConstantValue((PsiExpression)value); } if (value != null) { LOG.warn(new RuntimeExceptionWithAttachments("Not implemented: " + value.getClass(), new Attachment("text", value.getText()))); } return null; }