public void DispatchAction(MyTuple <string, Action> action)
    {
        PrintLine($"Dispatch Action <{action.Item1}>");
        action.Item2();

        if (action.Item2 == ActionStopPistons)
        {
            sequence_index = -1;
            Events.Clear();
        }
        else if (action.Item2 == ActionPass)
        {
            if (sequence_index != calculated_sequence_index)
            {
                sequence_index = calculated_sequence_index;
            }
        }
        else
        {
            sequence_index++;

            if (sequence_index >= sequence.Count - 1)
            {
                sequence_index = 0;
            }
        }
    }