/// <summary>
    /// Display a LogMessage in the debug output window.
    /// </summary>
    /// <param name="logMessage">Message object.</param>
    public override void Process(LogMessage logMessage)
    {
      if (logMessage == null)
      {
        throw new ArgumentNullException("logMessage");
      }

      if ((logMessage.MessageType != LogMessageType.Debug) && !ShowEverything)
      {
        if (!ShowAllFailures)
        {
          return;
        }

        if (logMessage.HasDecorator(LogDecorator.TestOutcome))
        {
          TestOutcome outcome = (TestOutcome)logMessage[LogDecorator.TestOutcome];
          if (outcome == TestOutcome.Passed)
          {
            return;
          }
        }
      }

      // Skip Finishing messages, they're always duplicates
      if (logMessage.HasDecorator(LogDecorator.TestStage))
      {
        if ((TestStage)logMessage[LogDecorator.TestStage] == TestStage.Finishing)
        {
          return;
        }
      }

      Debug.WriteLine(logMessage.ToString());
    }
 /// <summary>
 /// Process an Exception that was not the expected Exception type.
 /// </summary>
 /// <param name="l">The log message.</param>
 private void ProcessIncorrectException(LogMessage l)
 {
   _writer.AddPendingErrorMessage(l.ToString());
 }