/// <inheritdoc/>
        public void LogEndStage()
        {
            if (this.m_currentStage == null)
            {
                throw new InvalidOperationException("No current stage");
            }

            this.m_currentStage.End();
            this.m_currentStage = null;
        }
 /// <inheritdoc/>
 public void LogStartStage(string stageId)
 {
     if (this.m_session == null)
     {
         throw new InvalidOperationException("No session is started");
     }
     else if (this.m_currentStage != null)
     {
         throw new InvalidOperationException("Previous stage has not been ended via LogEndStage()");
     }
     this.m_currentStage = new MatchStageDiagnosticInfo(stageId);
     this.m_session.Stages.Add(this.m_currentStage);
 }