code: func (m *Machine) Transition(t string, args ...interface{}) error {
  	m.Lock()
  	defer m.Unlock()
  
  	if t == "" {
  		return nil
  	}
  
  	if m.fsm.Can(t) {
  		m.fsm.Event(t, args...)
  	} else {
  		m.Warnf("machine", "Could not fire '%s' event while in %s", t, m.fsm.Current())
  	}
  
  	return nil
  }
docs: // Transition performs the machine transition as defined by event t