# File lib/state_machine/branch.rb, line 145
    def draw(graph, event, valid_states)
      state_requirements.inject([]) do |edges, state_requirement|
        # From states determined based on the known valid states
        from_states = state_requirement[:from].filter(valid_states)
        
        # If a to state is not specified, then it's a loopback and each from
        # state maps back to itself
        if state_requirement[:to].values.empty?
          loopback = true
        else
          to_state = state_requirement[:to].values.first
          to_state = to_state ? to_state.to_s : 'nil'
          loopback = false
        end
        
        # Generate an edge between each from and to state
        from_states.each do |from_state|
          from_state = from_state ? from_state.to_s : 'nil'
          edges << graph.add_edge(from_state, loopback ? from_state : to_state, :label => event.to_s)
        end
        
        edges
      end
    end