anchor.diff:  begin
    dec(State^.ReferenceCounter);
    if State^.ReferenceCounter=0 then begin
  -  State^.Next:=FreeSubMatches;
  -  FreeSubMatches:=State;
  +  State^.Next:=FreeParallelNFAStates;
  +  FreeParallelNFAStates:=State;
    end;
   end;
   
  
positive.code:  SetLength(ThreadLists[0].Threads,(AInstance.CountForwardInstructions+1)*4);
   SetLength(ThreadLists[1].Threads,(AInstance.CountForwardInstructions+1)*4);
  
   FreeSubMatches:=nil;
  
   AllSubMatches:=TList.Create;
  
   OnePassNFAWorkCaptures:=nil;
   OnePassNFAMatchCaptures:=nil;
  
negative.code: 
  function TFLREThreadLocalStorage.ParallelNFAStateAllocate(const Count:longint;const BitState:longword):PFLREParallelNFAState; {$ifdef caninline}inline;{$endif}
  begin
   if assigned(FreeParallelNFAStates) then begin
    result:=FreeParallelNFAStates;
    FreeParallelNFAStates:=result^.Next;
   end else begin
    GetMem(result,SizeOf(TFLREParallelNFAState));
    FillChar(result^,SizeOf(TFLREParallelNFAState),#0);
    SetLength(result^.SubMatches,Instance.CountSubMatches);
    AllParallelNFAStates.Add(result);
   end;
   result^.ReferenceCounter:=1;
   result^.Count:=Count;
  