anchor.diff:  
   end;
   
  +procedure TDUnitXTestRunner.Loggers_EndTearDownFixture(const aThreadId: TThreadID; const aFixture: ITestFixtureInfo);
  +var
  +  lLogger: ITestLogger;
  +begin
  +  for lLogger in FLoggers do
  +    lLogger.OnEndTearDownFixture(aThreadId, aFixture);
  +end;
  +
  +procedure TDUnitXTestRunner.Loggers_EndTeardownTest(const aThreadId: TThreadID; const aTest: ITestInfo);
  +var
  +  lLogger: ITestLogger;
  +begin
  +  for lLogger in FLoggers do
  +    lLogger.OnEndTeardownTest(aThreadId, aTest);
  +end;
  +
   procedure TDUnitXTestRunner.Loggers_EndTest(const threadId: TThreadID; const Test: ITestResult);
   var
     logger : ITestLogger;
  
positive.code:     function ExecuteTimedOutResult(const context: ITestExecuteContext; const threadId: TThreadID; const test: ITest; const exception: Exception; const aLogMessages: TLogMessageArray) : ITestError;
      function ExecuteErrorResult(const context: ITestExecuteContext; const threadId: TThreadID; const test: ITest; const exception: Exception; const aLogMessages: TLogMessageArray): ITestError;
      function ExecuteIgnoredResult(const context: ITestExecuteContext; const threadId: TThreadID; const test: ITest; const ignoreReason: string): ITestResult;
  
      function CheckMemoryAllocations(const test: ITest; out errorResult: ITestResult; const memoryAllocationProvider: IMemoryLeakMonitor): boolean;
  
      function ExecuteTestTearDown(const context: ITestExecuteContext; const threadId: TThreadID; const fixture: ITestFixture; const test: ITest; out errorResult: ITestResult; const memoryAllocationProvider: IMemoryLeakMonitor): boolean;
      procedure ExecuteTearDownFixtureMethod(const context: ITestExecuteContext; const threadId: TThreadID; const fixture: ITestFixture);
  
      procedure RecordResult(const context: ITestExecuteContext; const threadId: TThreadID; const fixtureResult: IFixtureResult; const testResult: ITestResult);
  
  
negative.code:   Result := TDUnitXTestResult.Create(testInfo, TTestResultType.Pass, aMessage, aLogMessages);
  end;
  
  procedure TDUnitXTestRunner.ExecuteTearDownFixtureMethod(const context: ITestExecuteContext; const threadId: TThreadID; const fixture: ITestFixture; const fixtureResult: IFixtureResult);
  begin
    try
      Self.Loggers_TeardownFixture(threadId, fixture as ITestFixtureInfo);
      fixture.ExecuteFixtureTearDown; //deals with destructors in a way that stops memory leak reporting from reporting bogus leaks.
      Self.Loggers_EndTearDownFixture(threadId, fixture as ITestFixtureInfo);
    except
      on e: Exception do
      begin
        InvalidateTestsInFixture(fixture, context, threadId, e, fixtureResult);
        Log(TLogLevel.Error, Format(SFixtureTeardownError, [fixture.Name, e.Message]));
      end;
    end;
  end;
  