code: func (m *Machine) Setup() error {
  	err := m.Validate()
  	if err != nil {
  		return errors.Wrapf(err, "validation failed")
  	}
  
  	return m.buildFSM()
  }
docs: // Setup validates and prepares the machine for execution