/**
  * Add the navigation summary link.
  *
  * @param builder builder for the member to be documented
  * @param label the label for the navigation
  * @param type type to be documented
  * @param liNav the content tree to which the navigation summary link will be added
  */
 protected void addNavSummaryLink(
     MemberSummaryBuilder builder, String label, int type, Content liNav) {
   AbstractMemberWriter writer = ((AbstractMemberWriter) builder.getMemberSummaryWriter(type));
   if (writer == null) {
     liNav.addContent(getResource(label));
   } else {
     liNav.addContent(
         writer.getNavSummaryLink(null, !builder.getVisibleMemberMap(type).noVisibleMembers()));
   }
 }
 /**
  * Get detail links for the navigation bar.
  *
  * @return the content tree for the detail links
  */
 protected Content getNavDetailLinks() throws Exception {
   Content li = HtmlTree.LI(detailLabel);
   li.addContent(getSpace());
   Content ulNav = HtmlTree.UL(HtmlStyle.subNavList, li);
   MemberSummaryBuilder memberSummaryBuilder =
       (MemberSummaryBuilder) configuration.getBuilderFactory().getMemberSummaryBuilder(this);
   AbstractMemberWriter writerField =
       ((AbstractMemberWriter)
           memberSummaryBuilder.getMemberSummaryWriter(VisibleMemberMap.ANNOTATION_TYPE_FIELDS));
   AbstractMemberWriter writerOptional =
       ((AbstractMemberWriter)
           memberSummaryBuilder.getMemberSummaryWriter(
               VisibleMemberMap.ANNOTATION_TYPE_MEMBER_OPTIONAL));
   AbstractMemberWriter writerRequired =
       ((AbstractMemberWriter)
           memberSummaryBuilder.getMemberSummaryWriter(
               VisibleMemberMap.ANNOTATION_TYPE_MEMBER_REQUIRED));
   Content liNavField = new HtmlTree(HtmlTag.LI);
   if (writerField != null) {
     writerField.addNavDetailLink(annotationType.fields().length > 0, liNavField);
   } else {
     liNavField.addContent(getResource("doclet.navField"));
   }
   addNavGap(liNavField);
   ulNav.addContent(liNavField);
   if (writerOptional != null) {
     Content liNavOpt = new HtmlTree(HtmlTag.LI);
     writerOptional.addNavDetailLink(annotationType.elements().length > 0, liNavOpt);
     ulNav.addContent(liNavOpt);
   } else if (writerRequired != null) {
     Content liNavReq = new HtmlTree(HtmlTag.LI);
     writerRequired.addNavDetailLink(annotationType.elements().length > 0, liNavReq);
     ulNav.addContent(liNavReq);
   } else {
     Content liNav = HtmlTree.LI(getResource("doclet.navAnnotationTypeMember"));
     ulNav.addContent(liNav);
   }
   return ulNav;
 }