anchor.diff:  var State:PFLREParallelNFAState;
   begin
   
  - while assigned(FreeSubMatches) do begin
  -  State:=FreeSubMatches;
  -  FreeSubMatches:=FreeSubMatches^.Next;
  + while assigned(FreeParallelNFAStates) do begin
  +  State:=FreeParallelNFAStates;
  +  FreeParallelNFAStates:=FreeParallelNFAStates^.Next;
     SetLength(State^.SubMatches,0);
     Finalize(State^);
     FreeMem(State);
    end;
  - FreeSubMatches:=nil;
  -
  - FreeAndNil(AllSubMatches);
  + FreeParallelNFAStates:=nil;
  +
  + FreeAndNil(AllParallelNFAStates);
   
    SetLength(OnePassNFAWorkCaptures,0);
    SetLength(OnePassNFAMatchCaptures,0);
  
positive.code:        Generation:int64;
         InstructionGenerations:TFLREInstructionGenerations;
  
         FreeSubMatches:PFLREParallelNFAState;
         AllSubMatches:TList;
  
         OnePassNFAWorkCaptures:TFLREOnePassNFACaptures;
         OnePassNFAMatchCaptures:TFLREOnePassNFACaptures;
  
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;
  