code: func (d *Driver) PreCreateCheck() error {
  	// Check that VBoxManage exists and works
  	version, err := d.vbmOut("--version")
  	if err != nil {
  		return err
  	}
  
  	// Check that VBoxManage is of a supported version
  	if err = checkVBoxManageVersion(strings.TrimSpace(version)); err != nil {
  		return err
  	}
  
  	if !d.NoVTXCheck {
  		if isHyperVInstalled() {
  			return ErrNotCompatibleWithHyperV
  		}
  
  		if d.IsVTXDisabled() {
  			return ErrMustEnableVTX
  		}
  	}
  
  	// Downloading boot2docker to cache should be done here to make sure
  	// that a download failure will not leave a machine half created.
  	if err := d.b2dUpdater.UpdateISOCache(d.StorePath, d.Boot2DockerURL); err != nil {
  		return err
  	}
  
  	// Check that Host-only interfaces are ok
  	if _, err = listHostOnlyAdapters(d.VBoxManager); err != nil {
  		return err
  	}
  
  	return nil
  }
docs: // PreCreateCheck checks that VBoxManage exists and works