code: func (t *importTree) ConfigTree() (*configTree, error) {
  	config, err := t.Raw.Config()
  	if err != nil {
  		return nil, errwrap.Wrapf(fmt.Sprintf("Error loading %s: {{err}}", t.Path), err)
  	}
  
  	// Build our result
  	result := &configTree{
  		Path:   t.Path,
  		Config: config,
  	}
  
  	// Build the config trees for the children
  	result.Children = make([]*configTree, len(t.Children))
  	for i, ct := range t.Children {
  		t, err := ct.ConfigTree()
  		if err != nil {
  			return nil, err
  		}
  
  		result.Children[i] = t
  	}
  
  	return result, nil
  }
docs: // ConfigTree traverses the importTree and turns each node into a *Config
  // object, ultimately returning a *configTree.