code: private static String printSubtree(IQTree subTree, String offset) {
          String childOffset = offset + TAB_STR;
  
          return offset + subTree.getRootNode() + "\n"
                  + subTree.getChildren().stream()
                      .map(c -> printSubtree(c, childOffset))
                      .reduce("", (c, a) -> c + a);
      }
docs: Recursive