anchor.diff:    LListToFlush := TOrderedList<PCacheMemData>.Create(False,_TCacheMemDataTree_Compare);
     try
       LTempCacheDataSize := FCacheDataSize;
  +    LAuxCacheDataSize := 0;
       while (Assigned(PToRemove)) and
         // Both conditions must be true
         ((LTempCacheDataSize > LFinalMaxMemSize) or (LMaxPendingRounds>0))
  
positive.code:     // Delete not deleted previously
      for i:=0 to LListToFlush.Count-1 do begin
        PToRemove := LListToFlush.Get(i);
        Delete( PToRemove );
      end;
      //
      if (Result) and (LTempCacheDataSize <> FCacheDataSize) then raise ECacheMem.Create(Format('Inconsistent error on FreeMem Expected size %d <> obtained %d (save list %d)',[LTempCacheDataSize,FCacheDataSize,LListToFlush.Count]));
      if (Result) and (LMaxPendingRounds>0) then raise ECacheMem.Create(Format('Inconsistent error on FreeMem Expected Max Blocks %d <> obtained %d',[AMaxBlocks,FCacheDataBlocks]));
    finally
      LListToFlush.Free;
  
negative.code: 
    Result := (Result) And (FCacheDataSize <= AMaxMemSize);
    {$IFDEF ABSTRACTMEM_ENABLE_STATS}
    finally
    Inc(FCacheMemStats.freememCount);
    Inc(FCacheMemStats.freememSize,LPreviousCacheDataSize - FCacheDataSize);
    Inc(FCacheMemStats.freememBlocksCount,LPreviousCacheDataBlocks - FCacheDataBlocks);
    Inc(FCacheMemStats.freememElaspedMillis,TPlatform.GetElapsedMilliseconds(LTickCount));
    end;
    {$ENDIF}
  end;
  
  