public boolean equals(Object o)
{
if (this == o) return true;
if (o == null || !(o instanceof AnnotationValue)) return false;
final AnnotationValue annotationValue = (AnnotationValue) o;
if (!annotationType.equals(annotationValue.getAnnotationType())) return false;
if (!attributeValues.equals(annotationValue.getValues())) return false;
final Annotation otherUnderlying = annotationValue.getUnderlyingAnnotation();
if (underlying == null && otherUnderlying != null)
return false;
if (underlying != null && otherUnderlying == null)
return false;