private String generateOutput(
     JAMWikiLexer lexer,
     String tagName,
     String tocText,
     String tagText,
     int level,
     String raw,
     Object... args)
     throws ParserException {
   lexer
       .peekTag()
       .getTagContent()
       .append(this.updateToc(lexer.getParserInput(), tagName, tocText, level));
   int nextSection = lexer.getParserInput().getTableOfContents().size();
   String tagType = "h" + level;
   lexer.pushTag(tagType, this.generateTagOpen(raw, args));
   lexer
       .peekTag()
       .getTagContent()
       .append(this.buildSectionEditLink(lexer.getParserInput(), nextSection));
   String parsedTocText =
       this.processTocText(
           lexer.getParserInput(), lexer.getParserOutput(), tagText, lexer.getMode());
   lexer
       .peekTag()
       .getTagContent()
       .append("<span id=\"")
       .append(tagName)
       .append("\">")
       .append(parsedTocText)
       .append("</span>");
   lexer.popTag(tagType);
   return "";
 }