code: func (d *Driver) PreCreateCheck() error {
  	c, err := newComputeUtil(d)
  	if err != nil {
  		return err
  	}
  
  	// Check that the project exists. It will also check the credentials
  	// at the same time.
  	log.Infof("Check that the project exists")
  
  	if _, err = c.service.Projects.Get(d.Project).Do(); err != nil {
  		return fmt.Errorf("Project with ID %q not found. %v", d.Project, err)
  	}
  
  	// Check if the instance already exists. There will be an error if the instance
  	// doesn't exist, so just check instance for nil.
  	log.Infof("Check if the instance already exists")
  
  	instance, _ := c.instance()
  	if d.UseExisting {
  		if instance == nil {
  			return fmt.Errorf("unable to find instance %q in zone %q", d.MachineName, d.Zone)
  		}
  	} else {
  		if instance != nil {
  			return fmt.Errorf("instance %q already exists in zone %q", d.MachineName, d.Zone)
  		}
  	}
  
  	return nil
  }
docs: // PreCreateCheck is called to enforce pre-creation steps