anchor.diff:      fOnAssert();
   end;
   
  +class procedure Assert.DoesNotContain(const theString, subString: string; const ignoreCase: boolean; const message: string);
  +begin
  +  DoAssert;
  +  if ignoreCase then
  +  begin
  +    if StrUtils.ContainsText(theString, subString) then
  +      FailFmt('[%s] does contain [%s] %s',[theString, subString, message], ReturnAddress);
  +  end
  +  else if StrUtils.ContainsStr(theString, subString) then
  +    FailFmt('[%s] does contain [%s] %s',[theString, subString, message], ReturnAddress);
  +end;
  +
   class procedure Assert.EndsWith(const subString : string; const theString : string; const ignoreCase : boolean; const message : string);
   begin
     DoAssert;
  
positive.code:     class procedure AreEqual<T>(const expected, actual : T; const message : string = '');overload;
  {$ENDIF}
      class procedure AreEqual(const expected, actual : Integer; const message : string = '');overload;
      class procedure AreEqual(const expected, actual : boolean; const message : string = '');overload;
  
      class procedure AreEqualMemory(const expected : Pointer; const actual : Pointer; const size : Cardinal; const message : string = '');
  
negative.code:   DoAssert;
    if expected <> actual then
      FailFmt('Expected %s but got %s %s' ,[BoolToStr(expected, true), BoolToStr(actual, true), message], ReturnAddress);
  end;
  
  class procedure Assert.AreEqual(const expected, actual: cardinal; const message: string);
  begin
    DoAssert;
    if expected <> actual then
      FailFmt('Expected %d but got %d %s' ,[expected, actual, message], ReturnAddress);
  end;
  
  class procedure Assert.AreEqual(const expected, actual, tolerance: Double; const message: string);
  