code: func nodeWalk(node *client.Node, vars map[string]string) error {
  	if node != nil {
  		key := node.Key
  		if !node.Dir {
  			vars[key] = node.Value
  		} else {
  			for _, node := range node.Nodes {
  				nodeWalk(node, vars)
  			}
  		}
  	}
  	return nil
  }
docs: // nodeWalk recursively descends nodes, updating vars.