code: public void traverseAndFilter(final TreeWalker walker, final String indent, final Metadata metadata,
          final StringBuilder sb) {
  
          final Node parend = walker.getCurrentNode();
  
          final boolean isLogged = appendText(indent, (Element) parend, sb);
  
          for (final Filter filter : filterList) {
              if (filter.filter(metadata, walker)) {
                  appendText(" catched by: " + filter.getClass().getSimpleName(), sb);
                  break;
              }
          }
  
          if (isLogged) {
              appendText("\n", sb);
          }
  
          for (Node n = walker.firstChild(); n != null; n = walker.nextSibling()) {
              traverseAndFilter(walker, indent + "  ", metadata, sb);
          }
  
          walker.setCurrentNode(parend);
      }
docs: Traverses the DOM and applies the filters for each visited node.
  
  @param walker
  @param indent
  @param sb
  Optional {@link StringBuilder} used to track progress for logging purposes.