/**
   * Parses an annotation element
   *
   * @param elementDoc
   * @return
   */
  protected static AnnotationElement ParseAnnotationElement(AnnotationTypeElementDoc elementDoc) {
    // AnnotationTypeElementDoc's are basically methods.

    AnnotationElement element = new AnnotationElement();
    element.name = elementDoc.name();
    AnnotationValue value = elementDoc.defaultValue();
    if (value != null) {
      element.defaultValue = value.toString();
    }
    element.qualifiedName = elementDoc.qualifiedName();
    element.type = elementDoc.returnType().qualifiedTypeName();

    return element;
  }
 public InfoAnnotation(String clazzName, AnnotationDesc annotation) {
   items.put("package", new StringValue(clazzName));
   for (ElementValuePair elementValuePair : annotation.elementValues()) {
     AnnotationTypeElementDoc elementDoc = elementValuePair.element();
     AnnotationValue aValue = elementValuePair.value();
     String elementName = elementDoc.name();
     if (elementName.equals(AUTHOR)) {
       items.put(AUTHOR, new AnnotationSingleValue(aValue));
     } else if (elementName.equals(DISPLAY)) {
       items.put("display", new AnnotationSingleValue(aValue));
     } else if (elementName.equals(SUMMARY)) {
       items.put(SUMMARY, new AnnotationSingleValue(aValue));
     } else if (elementName.equals(SEND)) {
       items.put(SEND, new AnnotationSingleValue(aValue));
     } else if (elementName.equals(RECEIVE)) {
       items.put(RECEIVE, new AnnotationArrayValue(aValue));
     }
   }
 }