code: public static <V> String printNodeTree(ParsingResult<V> parsingResult, Predicate<Node<V>> nodeFilter,
                                             Predicate<Node<V>> subTreeFilter) {
          checkArgNotNull(parsingResult, "parsingResult");
          checkArgNotNull(nodeFilter, "nodeFilter");
          checkArgNotNull(subTreeFilter, "subTreeFilter");
          return printTree(parsingResult.parseTreeRoot, new NodeFormatter<V>(parsingResult.inputBuffer), nodeFilter,
                  subTreeFilter);
      }
docs: Creates a readable string represenation of the parse tree in thee given {@link ParsingResult} object.
  The given filter predicate determines whether a particular node (incl. its subtree) is printed or not.
  
  @param parsingResult the parsing result containing the parse tree
  @param nodeFilter    the predicate selecting the nodes to print
  @param subTreeFilter the predicate determining whether to descend into a given nodes subtree or not
  @return a new String