code: func (n *TreeNode) DepthFirst(f func(node *TreeNode) bool) {
  	if !f(n) {
  		for _, node := range n.Children {
  			node.DepthFirst(f)
  		}
  	}
  }
docs: // DepthFirst performs a depth-first traversal of the rule tree rooted at n. If
  // f returns true, traversal will not continue to the children of n.