def match(object, query = {})
      assert_valid_keys(query, :from, :to, :on, :guard)
      
      if (match = match_query(query)) && matches_conditions?(object, query)
        match
      end
    end
def match(object, query = {})
      assert_valid_keys(query, :from, :to, :on, :guard)
      
      if (match = match_query(query)) && matches_conditions?(object, query)
        match
      end
    end
Attempts to match the given object / query against the set of requirements
 configured for this branch.  In addition to matching the event, from state,
 and to state, this will also check whether the configured :if/:unless
 conditions pass on the given object.

 If a match is found, then the event/state requirements that the query
 passed successfully will be returned.  Otherwise, nil is returned if there
 was no match.

 Query options:
 * <tt>:from</tt> - One or more states being transitioned from.  If none
   are specified, then this will always match.
 * <tt>:to</tt> - One or more states being transitioned to.  If none are
   specified, then this will always match.
 * <tt>:on</tt> - One or more events that fired the transition.  If none
   are specified, then this will always match.
 * <tt>:guard</tt> - Whether to guard matches with the if/unless
   conditionals defined for this branch.  Default is true.

 == Examples

   branch = StateMachine::Branch.new(:parked => :idling, :on => :ignite)

   branch.match(object, :on => :ignite)  # => {:to => ..., :from => ..., :on => ...}
   branch.match(object, :on => :park)    # => nil