anchor.diff:  
         for key in cacheKeyArray do
         begin
  +        bid := fBidsCache[key];
  +
           SaveStream.Write(key.FromP);
           SaveStream.Write(key.ToP);
  -        bid := fBidsCache[key];
           SaveStream.Write(bid.Value);
  -        SaveStream.Write(bid.TimeToLive);
  +        SaveStream.Write(bid.Kind, SizeOf(bid.Kind));
  +        SaveStream.Write(bid.CreatedAt);
         end;
       end;
   
  
positive.code:   key.FromP := FromP;
    key.ToP := ToP;
    bid.Value := aValue;
    bid.TimeToLive := aTimeToLive;
    inherited Add(key, bid);
  end;
  
  
  function TKMDeliveryCache.TryGetValue(const aKey: TKMDeliveryBidKey; var aValue: TKMDeliveryBid): Boolean;
  begin
    Result := False;
    if inherited TryGetValue(aKey, aValue) then
    begin
      if aValue.TimeToLive <= 0 then //Don't return expired records
        Remove(aKey) //Remove expired record
      else
        Exit(True); // We found value
  
negative.code:     aBidBasicValue := aBidBasicValue + 1000;
  
    {$IFDEF USE_HASH}
    fBidsCache.Add(bidKey, aBidBasicValue, dbkOfferToDemand);
    {$ENDIF}
  
    aBidBasicValue := aBidBasicValue + SerfBidValue;
  