public void setReference(Annotation reference) {
        if (reference == null) {
            this.reference = null;
            return;
        }
        AnnotationReferenceDataType type = getDataType();
        if (type.getAnnotationType().isValueCompatible(reference)
                // The case if concrete annotation type
                || reference.getType() instanceof AnnotationType) {
            this.reference = reference;
        } else {
            throw new IllegalArgumentException("Cannot set reference, must be of type " + type + " (was of type " + reference.getType() + ")");
        }
    }
Set an {@link Annotation} that this AnnotationReference shall refer to.

@param reference an Annotation that this AnnotationReference shall refer to.
@throws IllegalArgumentException if the given annotation has a type that is not compatible with this reference
document/src/main/java/com/yahoo/document/annotation/AnnotationReference.java