def handle_in_source_state
      if @state_machine.initial_queue.nil?
        raise RuntimeError, "State machine not started yet."
      end

      if Dispatch::Queue.current.to_s != @state_machine.initial_queue.to_s
        raise RuntimeError,
          "#{self.class.event_type}:#{@event_trigger_value} must be "\
          "called from the queue where the state machine was started."
      end

      @source_state.send :guarded_execute,
        self.class.event_type,
        @event_trigger_value
    end
def handle_in_source_state
      if @state_machine.initial_queue.nil?
        raise RuntimeError, "State machine not started yet."
      end

      if Dispatch::Queue.current.to_s != @state_machine.initial_queue.to_s
        raise RuntimeError,
          "#{self.class.event_type}:#{@event_trigger_value} must be "\
          "called from the queue where the state machine was started."
      end

      @source_state.send :guarded_execute,
        self.class.event_type,
        @event_trigger_value
    end
Delegates handling the transition to the source state, which
 makes sure that there are no ambiguous transitions for the
 same event.