anchor.diff:  var
     comparer : IComparer<T>;
     leftvalue, rightvalue : TValue;
  -  pInfo : PTypeInfo;
  -  tInfo : TValue;
   begin
     comparer := TComparer<T>.Default;
     if comparer.Compare(right,left) <> 0 then
     begin
       leftValue := TValue.From<T>(left);
       rightValue := TValue.From<T>(right);
  -    pInfo := TypeInfo(string);
  -
  -    if leftValue.IsEmpty or rightvalue.IsEmpty then
  -      Fail(Format('left is not equal to right %s', [message]), ReturnAddress)
  -    else
  -    begin
  -      if leftValue.TryCast(pInfo,tInfo) then
  -        Fail(Format('left %s but got %s %s', [leftValue.ToString, rightValue.ToString, message]), ReturnAddress)
  -      else
  -        Fail(Format('left is not equal to right %s', [message]), ReturnAddress)
  -    end;
  +    Fail(Format('left %s is not equal to right %s %s', [leftValue.ToString, rightValue.ToString, message]), ReturnAddress)
     end;
   end;
   {$ENDIF}
  
positive.code:   for o in list do
    begin
      if comparer.Compare(o,value) = 0 then
        Fail(Format('List contains value. %s',[message]), ReturnAddress);
    end;
  end;
  
  
negative.code:       exit;
    end;
  
    Fail(Format('List does not contain value %s. %s',[TValue.From<T>(value).ToString, message]), ReturnAddress);
  end;
  
  {$ENDIF}
  