def find_states(path)
      state = self
      parts = path.split('.')
      ret = []
      parts.each do |name|
        state = state.states[name.to_sym]
        ret << state
        return unless state
      end
      ret
    end
def find_states(path)
      state = self
      parts = path.split('.')
      ret = []
      parts.each do |name|
        state = state.states[name.to_sym]
        ret << state
        return unless state
      end
      ret
    end
Find all the states along the path