public void UseRuntimeTrigger(IUmlTrigger trigger)
        {
            if (!_isEditable)
            {
                throw new ActivityMachineException("Assembly can only be done while the machine is in an edit mode.");
            }
            RuntimeTriggers.Add(trigger);

            if (trigger is UmlTrigger)
            {
                (trigger as UmlTrigger).LogType = LogType;
            }
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                _executionSyncEvent.Dispose();
                foreach (var trigger in RuntimeTriggers)
                {
                    trigger.Dispose();
                }
                RuntimeTriggers.Clear();
                RuntimeTriggers = null;

                if (FinishTransitionTrigger != null)
                {
                    FinishTransitionTrigger.Dispose();
                }
                FinishTransitionEffect = null;
            }
            base.Dispose(disposing);
        }