code: func (m *DatastoreFileManager) Copy(ctx context.Context, src string, dst string) error {
  	srcp := m.Path(src)
  	dstp := m.Path(dst)
  
  	f := m.FileManager.CopyDatastoreFile
  
  	if srcp.IsVMDK() {
  		// types.VirtualDiskSpec=nil as it is not implemented by vCenter
  		f = func(ctx context.Context, src string, srcDC *Datacenter, dst string, dstDC *Datacenter, force bool) (*Task, error) {
  			return m.VirtualDiskManager.CopyVirtualDisk(ctx, src, srcDC, dst, dstDC, nil, force)
  		}
  	}
  
  	task, err := f(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force)
  	if err != nil {
  		return err
  	}
  
  	return m.wait(ctx, task)
  }
docs: // Copy dispatches to the appropriate FileManager or VirtualDiskManager Copy method based on file name extension