code: func (c *Client) Download(ctx context.Context, src string) (io.ReadCloser, int64, error) {
  	vc := c.ProcessManager.Client()
  
  	info, err := c.FileManager.InitiateFileTransferFromGuest(ctx, c.Authentication, src)
  	if err != nil {
  		return nil, 0, err
  	}
  
  	u, err := c.FileManager.TransferURL(ctx, info.Url)
  	if err != nil {
  		return nil, 0, err
  	}
  
  	p := soap.DefaultDownload
  
  	f, n, err := vc.Download(ctx, u, &p)
  	if err != nil {
  		return nil, n, err
  	}
  
  	if strings.HasPrefix(src, "/archive:/") || isDir(src) {
  		f = &archiveReader{ReadCloser: f} // look for the gzip trailer
  	}
  
  	return f, n, nil
  }
docs: // Download initiates a file transfer from the guest