# File lib/state_machine/state_collection.rb, line 93
    def by_priority
      order = select {|state| state.initial}.map {|state| state.name}
      
      machine.events.each {|event| order += event.known_states}
      order += select {|state| state.methods.any?}.map {|state| state.name}
      order += keys(:name) - machine.callbacks.values.flatten.map {|callback| callback.known_states}.flatten
      order += keys(:name)
      
      order.uniq!
      order.map! {|name| self[name]}
      order
    end