private void AddTransition(string pattern, IState next) { _tos[next.GetName()] = next; _transitions.Add(StateTransition.CreateStateTransition(_currentState, pattern, next.GetName())); if (_transitions.Count == 1) { _transitions.Add(StateTransition.CreateEndStateTransition(_failedState)); _transitions.Add(StateTransition.CreateEndStateTransition(_completedState)); _transitions.Add(StateTransition.CreateEndStateTransition(_stoppedState)); } if (next.IsEndState()) { _transitions.Add(StateTransition.CreateEndStateTransition(next)); } _dirty = true; }