changed the base class of the ActionNotCallableException class to LogicException
changed the base class of the StateNotFoundException class to LogicException
added the DuplicateStateException class
changed the StateMachine::addState() method to raise a DuplicateStateException if the state is already defined
added a test StateMachineTest::raisesAnExceptionIfTheStateIsAlreadyDefinedWhenAddingAState()
added the DuplicateEventException class
changed the State::addEvent() method to raise a DuplicateEventException if the event is already defined
added a test StateTest::raisesAnExceptionIfTheEventIsAlreadyDefinedWhenAddingAnEvent()
changed the StateMachine::triggerEvent() to check the given event is a transition event
added the InvalidEventException class
added the State::setEntryEvent() method
added a test StateTest::raisesAnExceptionIfTheEventIdIsInvalidWhenSettingTheEntryEvent()
changed the StateMachineBuilder::addState() method to use the State::setEntryEvent() method instead of the addEvent() method for adding the entry event
added the State::setExitEvent() method
added a test StateTest::raisesAnExceptionIfTheEventIdIsInvalidWhenSettingTheExitEvent()
changed the StateMachineBuilder::addState() method to use the State::setExitEvent() method instead of the addEvent() method for adding the exit event
added the State::setDoEvent() method
added a test StateTest::raisesAnExceptionIfTheEventIdIsInvalidWhenSettingTheDoEvent()
changed the StateMachineBuilder::addState() method to use the State::setDoEvent() method instead of the addEvent() method for adding the do event
changed the argument type of the State::addEvent() method to TransitionEventInterface