anchor.diff:      FMaxCacheDataBlocks: Int64;
       FDefaultCacheDataBlocksSize : Int64;
       FGridCache : Boolean;
  +    FOnFlushedCache: TOnFinalizedCacheProc;
       function FindCacheMemDataByPosition(APosition : Int64; out APCacheMemData : PCacheMemData) : Boolean;
       procedure Delete(var APCacheMemData : PCacheMemData); overload;
       function FlushCache(const AFlushCacheList : TOrderedList<PCacheMemData>) : Boolean; overload;
  
positive.code:   FOnSaveDataProc := AOnSaveDataProc;
    FOldestUsed := Nil;
    FNewestUsed := Nil;
  end;
  
  procedure TCacheMem.Delete(var APCacheMemData : PCacheMemData);
  
negative.code: end;
  
  function TCacheMem.FlushCache(const AFlushCacheList : TOrderedList<PCacheMemData>) : Boolean;
  var i, LCount : Integer;
    PToCurrent, PToNext : PCacheMemData;
    LTotalBytesSaved, LTotalBytesError, LMillis, LInitialPendingBytes : Int64;
    LTickCount : TTickCount;
  begin
    LTickCount := TPlatform.GetTickCount;
    LTotalBytesSaved := 0;
    LTotalBytesError := 0;
    LInitialPendingBytes := FPendingToSaveBytes;
    LCount := 0;
    Result := True;
  
    if (FPendingToSaveBytes<=0) then Exit;
  