module Listen::FSM

def transition(new_state_name)

def transition(new_state_name)
  new_state_name.is_a?(Symbol) or raise ArgumentError, "state name must be a Symbol (got #{new_state_name.inspect})"
  if (new_state = validate_and_sanitize_new_state(new_state_name))
    transition_with_callbacks!(new_state)
  end
end