code: func (g *Gitlab) RepoTree(id, path, refName string) ([]*TreeNode, *ResponseMeta, error) {
  	u := g.ResourceUrl(RepositoryTreeApiPath, map[string]string{":id": id})
  
  	q := u.Query()
  	q.Set("path", path)
  	q.Set("ref_name", refName)
  	u.RawQuery = q.Encode()
  
  	var treeNodes []*TreeNode
  
  	contents, meta, err := g.buildAndExecRequest("GET", u.String(), nil)
  	if err == nil {
  		err = json.Unmarshal(contents, &treeNodes)
  	}
  
  	return treeNodes, meta, err
  }
docs: /*
  Get a list of repository files and directories in a project.
  
      GET /projects/:id/repository/tree
  
  Parameters:
  
      id (required) The ID of a project
      path (optional) The path inside repository. Used to get contend of subdirectories
  		ref_name (optional) The name of a repository branch or tag or if not given the default branch
  
  Usage:
  		pass nil when not using optional parameters
  */