/**
  * Add the modifier for the member.
  *
  * @param member the member for which teh modifier will be added.
  * @param htmltree the content tree to which the modifier information will be added.
  */
 protected void addModifiers(MemberDoc member, Content htmltree) {
   String mod = modifierString(member);
   // According to JLS, we should not be showing public modifier for
   // interface methods.
   if ((member.isField() || member.isMethod())
       && writer instanceof ClassWriterImpl
       && ((ClassWriterImpl) writer).getClassDoc().isInterface()) {
     // This check for isDefault() and the default modifier needs to be
     // added for it to appear on the method details section. Once the
     // default modifier is added to the Modifier list on DocEnv and once
     // it is updated to use the javax.lang.model.element.Modifier, we
     // will need to remove this.
     mod =
         (member.isMethod() && ((MethodDoc) member).isDefault())
             ? utils.replaceText(mod, "public", "default").trim()
             : utils.replaceText(mod, "public", "").trim();
   }
   if (mod.length() > 0) {
     htmltree.addContent(mod);
     htmltree.addContent(writer.getSpace());
   }
 }
 /**
  * Get the header for the section.
  *
  * @param member the member being documented.
  * @return a header content for the section.
  */
 protected Content getHead(MemberDoc member) {
   Content memberContent = new StringContent(member.name());
   Content heading = HtmlTree.HEADING(HtmlConstants.MEMBER_HEADING, memberContent);
   return heading;
 }
 /**
  * Return a string describing the access modifier flags. Don't include native or synchronized.
  *
  * <p>The modifier names are returned in canonical order, as specified by <em>The Java Language
  * Specification</em>.
  */
 protected String modifierString(MemberDoc member) {
   int ms = member.modifierSpecifier();
   int no = Modifier.NATIVE | Modifier.SYNCHRONIZED;
   return Modifier.toString(ms & ~no);
 }