internal AddActionReferenceRecord(ViewModel.ViewModelController controller, ViewModel.ActionReference actionReference, int slot) : base(ActionTypes.AddActionReference, controller, actionReference)
        {
            TransitionId = actionReference.Transition.Id;
            ActionId     = actionReference.Action.Id;
            Slot         = slot;
#if DEBUGUNDOREDO
            Debug.WriteLine($@">>> AddActionReferenceRecord.AddActionReferenceRecord: Created {UnitDescription} record, ID: {Id}, TransitionId: {TransitionId}, ActionId: {ActionId}, Slot: {Slot}");
#endif
        }
        public override void Do(IOleUndoManager pUndoManager)
        {
#if DEBUGUNDOREDO
            Debug.WriteLine(">>> AddActionReferenceRecord.Do");
#endif
            using (new ViewModel.ViewModelController.GuiChangeBlock(Controller))
            {
                ViewModel.ActionReference newActionReference = new ViewModel.ActionReference(Controller, this);
                newActionReference.Transition.ActionReferences.Insert(Slot, newActionReference);

                Controller.UndoManager.Add(new DeleteActionReferenceRecord(Controller, newActionReference));
            }
        }
        public override void Do(IOleUndoManager pUndoManager)
        {
#if DEBUGUNDOREDO
            Debug.WriteLine(">>> DeleteActionReferenceRecord.Do");
#endif
            using (new ViewModel.ViewModelController.GuiChangeBlock(Controller))
            {
                ViewModel.Transition      targetTransition      = Controller.StateMachine.Find(TransitionId) as ViewModel.Transition;
                ViewModel.ActionReference targetActionReference = targetTransition.ActionReferences[Slot];
                targetTransition.ActionReferences.RemoveAt(Slot);

                Controller.UndoManager.Add(new AddActionReferenceRecord(Controller, targetActionReference, Slot));
            }
        }
        internal DeleteActionReferenceRecord(ViewModel.ViewModelController controller, ViewModel.ActionReference actionReference) : base(ActionTypes.DeleteActionReference, controller, actionReference)
        {
            TransitionId = actionReference.Transition.Id;
            Slot         = actionReference.Transition.ActionReferences.IndexOf(actionReference);
#if DEBUGUNDOREDO
            Debug.WriteLine($@">>> DeleteActionReferenceRecord.DeleteActionReferenceRecord: Created {UnitDescription} record, ID: {Id}, TransitionId: {TransitionId}, Slot: {Slot}");
#endif
        }