code: func (p *Provisioner) InternalValidate() error {
  	if p == nil {
  		return errors.New("provisioner is nil")
  	}
  
  	var validationErrors error
  	{
  		sm := schemaMap(p.ConnSchema)
  		if err := sm.InternalValidate(sm); err != nil {
  			validationErrors = multierror.Append(validationErrors, err)
  		}
  	}
  
  	{
  		sm := schemaMap(p.Schema)
  		if err := sm.InternalValidate(sm); err != nil {
  			validationErrors = multierror.Append(validationErrors, err)
  		}
  	}
  
  	if p.ApplyFunc == nil {
  		validationErrors = multierror.Append(validationErrors, fmt.Errorf(
  			"ApplyFunc must not be nil"))
  	}
  
  	return validationErrors
  }
docs: // InternalValidate should be called to validate the structure
  // of the provisioner.
  //
  // This should be called in a unit test to verify before release that this
  // structure is properly configured for use.