def draw(graph, event, valid_states)
state_requirements.inject([]) do |edges, state_requirement|
from_states = state_requirement[:from].filter(valid_states)
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
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