anchor.diff:  
   {$IFDEF USE_HASH}
   { TKMDeliveryBidKeyComparer }
  -function TKMDeliveryBidKeyComparer.Equals(const Left, Right: TKMDeliveryBidKey): Boolean;
  +function TKMDeliveryBidKeyEqualityComparer.Equals(const Left, Right: TKMDeliveryBidKey): Boolean;
   begin
     Result := (Left.FromUID = Right.FromUID) and (Left.ToUID = Right.ToUID);
   end;
  
positive.code: constructor TKMDeliveries.Create(aHandIndex: TKMHandID);
  {$IFDEF USE_HASH}
  var
    CacheKeyComparer: TKMDeliveryBidKeyComparer;
  {$ENDIF}
  begin
    fOwner := aHandIndex;
    {$IFDEF USE_HASH}
    if CACHE_DELIVERY_BIDS then
    begin
      CacheKeyComparer := TKMDeliveryBidKeyComparer.Create;
      fOfferToDemandCache := TDictionary<TKMDeliveryBidKey, Single>.Create(CacheKeyComparer);
      fSerfToOfferCache := TDictionary<TKMDeliveryBidKey, Single>.Create(CacheKeyComparer);
    end;
  
negative.code: 
  type
    //Custom key comparator. Probably TDictionary can handle it himself, but lets try our custom comparator
    TKMDeliveryBidKeyEqualityComparer = class(TEqualityComparer<TKMDeliveryBidKey>)
      function Equals(const Left, Right: TKMDeliveryBidKey): Boolean; override;
      function GetHashCode(const Value: TKMDeliveryBidKey): Integer; override;
    end;
  
    TKMDeliveryBidKeyComparer = class(TComparer<TKMDeliveryBidKey>)
      function Compare(const Left, Right: TKMDeliveryBidKey): Integer; override;
    end;
    {$ENDIF}
  
  