anchor.diff:  constructor TFLRECache.Create;
   begin
    inherited Create;
  + ParallelLock:=0;
    List:=TList.Create;
    HashMap:=TFLRECacheHashMap.Create;
   end;
  
positive.code: procedure TFLRECache.Clear;
  var Index:longint;
  begin
   for Index:=0 to List.Count-1 do begin
    TFLRE(List[Index]).Free;
   end;
   List.Clear;
   HashMap.Clear;
  end;
  
  function TFLRECache.Get(const ARegularExpression:TFLRERawByteString;const AFlags:TFLREFlags=[rfDELIMITERS]):TFLRE;
  var HashKey:TFLRERawByteString;
  begin
   HashKey:=PtrCopy(pointer(@AFlags),0,SizeOf(TFLREFlags))+#0#1#0+ARegularExpression;
   result:=HashMap.GetValue(HashKey);
   if not assigned(result) then begin
    result:=TFLRE.Create(ARegularExpression,AFlags);
    List.Add(result);
    HashMap.Add(HashKey,result);
   end;
  end;
  
  
negative.code: 
       TFLRECache=class
        private
         ParallelLock:TFLREParallelLock;
         List:TList;
         HashMap:TFLRECacheHashMap;
        public
  