public NaoState GetNext(NaoCommand command)
        {
            NaoStateTransition transition = new NaoStateTransition(CurrentState, command);
            NaoState           nextState;

            if (!this._transitions.TryGetValue(transition, out nextState))
            {
                throw new Exception("Invalid transition: " + this.CurrentState + " -> " + command);
            }
            return(nextState);
        }
        public override bool Equals(object obj)
        {
            NaoStateTransition other = obj as NaoStateTransition;

            return(other != null && this._currentState == other._currentState && this._command == other._command);
        }