/** {@inheritDoc} */
 public Content simpleTagOutput(Tag simpleTag, String header) {
   ContentBuilder result = new ContentBuilder();
   result.addContent(HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.simpleTagLabel, new RawHtml(header))));
   Content body = htmlWriter.commentTagsToContent(simpleTag, null, simpleTag.inlineTags(), false);
   result.addContent(HtmlTree.DD(body));
   return result;
 }
 /** {@inheritDoc} */
 public Content throwsTagOutput(Type throwsType) {
   HtmlTree result =
       HtmlTree.DD(
           HtmlTree.CODE(
               htmlWriter.getLink(
                   new LinkInfoImpl(configuration, LinkInfoImpl.Kind.MEMBER, throwsType))));
   return result;
 }
 /** {@inheritDoc} */
 public Content throwsTagOutput(ThrowsTag throwsTag) {
   ContentBuilder body = new ContentBuilder();
   Content excName =
       (throwsTag.exceptionType() == null)
           ? new RawHtml(throwsTag.exceptionName())
           : htmlWriter.getLink(
               new LinkInfoImpl(
                   configuration, LinkInfoImpl.Kind.MEMBER, throwsTag.exceptionType()));
   body.addContent(HtmlTree.CODE(excName));
   Content desc = htmlWriter.commentTagsToContent(throwsTag, null, throwsTag.inlineTags(), false);
   if (desc != null && !desc.isEmpty()) {
     body.addContent(" - ");
     body.addContent(desc);
   }
   HtmlTree result = HtmlTree.DD(body);
   return result;
 }
 /** {@inheritDoc} */
 public Content paramTagOutput(ParamTag paramTag, String paramName) {
   ContentBuilder body = new ContentBuilder();
   body.addContent(HtmlTree.CODE(new RawHtml(paramName)));
   body.addContent(" - ");
   body.addContent(htmlWriter.commentTagsToContent(paramTag, null, paramTag.inlineTags(), false));
   HtmlTree result = HtmlTree.DD(body);
   return result;
 }
  /** {@inheritDoc} */
  public Content seeTagOutput(Doc holder, SeeTag[] seeTags) {
    ContentBuilder body = new ContentBuilder();
    if (seeTags.length > 0) {
      for (int i = 0; i < seeTags.length; ++i) {
        appendSeparatorIfNotEmpty(body);
        body.addContent(htmlWriter.seeTagToContent(seeTags[i]));
      }
    }
    if (holder.isField()
        && ((FieldDoc) holder).constantValue() != null
        && htmlWriter instanceof ClassWriterImpl) {
      // Automatically add link to constant values page for constant fields.
      appendSeparatorIfNotEmpty(body);
      DocPath constantsPath = htmlWriter.pathToRoot.resolve(DocPaths.CONSTANT_VALUES);
      String whichConstant =
          ((ClassWriterImpl) htmlWriter).getClassDoc().qualifiedName()
              + "."
              + ((FieldDoc) holder).name();
      DocLink link = constantsPath.fragment(whichConstant);
      body.addContent(
          htmlWriter.getHyperLink(
              link, new StringContent(configuration.getText("doclet.Constants_Summary"))));
    }
    if (holder.isClass() && ((ClassDoc) holder).isSerializable()) {
      // Automatically add link to serialized form page for serializable classes.
      if ((SerializedFormBuilder.serialInclude(holder)
          && SerializedFormBuilder.serialInclude(((ClassDoc) holder).containingPackage()))) {
        appendSeparatorIfNotEmpty(body);
        DocPath serialPath = htmlWriter.pathToRoot.resolve(DocPaths.SERIALIZED_FORM);
        DocLink link = serialPath.fragment(((ClassDoc) holder).qualifiedName());
        body.addContent(
            htmlWriter.getHyperLink(
                link, new StringContent(configuration.getText("doclet.Serialized_Form"))));
      }
    }
    if (body.isEmpty()) return body;

    ContentBuilder result = new ContentBuilder();
    result.addContent(
        HtmlTree.DT(
            HtmlTree.SPAN(
                HtmlStyle.seeLabel, new StringContent(configuration.getText("doclet.See_Also")))));
    result.addContent(HtmlTree.DD(body));
    return result;
  }
 /** {@inheritDoc} */
 public Content returnTagOutput(Tag returnTag) {
   ContentBuilder result = new ContentBuilder();
   result.addContent(
       HtmlTree.DT(
           HtmlTree.SPAN(
               HtmlStyle.returnLabel,
               new StringContent(configuration.getText("doclet.Returns")))));
   result.addContent(
       HtmlTree.DD(
           htmlWriter.commentTagsToContent(returnTag, null, returnTag.inlineTags(), false)));
   return result;
 }
 /** {@inheritDoc} */
 public Content simpleTagOutput(Tag[] simpleTags, String header) {
   ContentBuilder result = new ContentBuilder();
   result.addContent(HtmlTree.DT(HtmlTree.SPAN(HtmlStyle.simpleTagLabel, new RawHtml(header))));
   ContentBuilder body = new ContentBuilder();
   for (int i = 0; i < simpleTags.length; i++) {
     if (i > 0) {
       body.addContent(", ");
     }
     body.addContent(
         htmlWriter.commentTagsToContent(simpleTags[i], null, simpleTags[i].inlineTags(), false));
   }
   result.addContent(HtmlTree.DD(body));
   return result;
 }
 /** {@inheritDoc} */
 public Content commentTagsToOutput(
     Tag holderTag, Doc holderDoc, Tag[] tags, boolean isFirstSentence) {
   return htmlWriter.commentTagsToContent(holderTag, holderDoc, tags, isFirstSentence);
 }
 /** {@inheritDoc} */
 public Content valueTagOutput(FieldDoc field, String constantVal, boolean includeLink) {
   return includeLink
       ? htmlWriter.getDocLink(LinkInfoImpl.Kind.VALUE_TAG, field, constantVal, false)
       : new RawHtml(constantVal);
 }