private void html() {
    if (!finalPass) return;

    LOG.debug("parse: html");

    String text = scan.getToken();
    if (text.length() == 0) {
      return;
    }

    // If we detect it is all whitespace, we need to keep it for later
    // If it is not whitespace, we need to flush any whitespace we do have
    boolean contentIsWhitespace = !Pattern.compile("\\S").matcher(text).find();
    if (!contentIsWhitespace && currentlyBufferingWhitespace) {
      flushBufferedWhiteSpace();
    } else {
      currentlyBufferingWhitespace = contentIsWhitespace;
    }
    // We need to know if the last content output was not whitespace, for tag safety checks
    previousContentWasNonWhitespace = !contentIsWhitespace;

    if (currentlyBufferingWhitespace) {
      whitespaceBuffer.append(text);
    } else {
      appendHtmlPart(text);
    }
  }
 // Write out any whitespace we saved between tags
 private void flushBufferedWhiteSpace() {
   if (currentlyBufferingWhitespace) {
     appendHtmlPart(null);
   }
   currentlyBufferingWhitespace = false;
 }