/// <summary>
        /// Processes action provided by the given vertex.
        /// </summary>
        /// <param name="vertex">The vertex.</param>
        /// <param name="executionInfo">The object that stores the information about the execution of the schedule.</param>
        /// <returns>A value indicating if the execution of the schedule should continue.</returns>
        public ScheduleExecutionState Process(IScheduleVertex vertex, ScheduleExecutionInfo executionInfo)
        {
            var markVertex = vertex as MarkHistoryVertex;

            if (markVertex == null)
            {
                Debug.Assert(false, "The vertex is of the incorrect type.");
                return(ScheduleExecutionState.IncorrectProcessorForVertex);
            }

            if (executionInfo.Cancellation.IsCancellationRequested)
            {
                return(ScheduleExecutionState.Canceled);
            }

            if (executionInfo.PauseHandler.IsPaused)
            {
                executionInfo.PauseHandler.WaitForUnPause(executionInfo.Cancellation);
            }

            var marker = m_Timeline.Mark();

            m_OnMarkerStorage(marker);
            return(ScheduleExecutionState.Executing);
        }