anchor.diff:   CurrentThreadList^.Count:=0;
    NewThreadList^.Count:=0;
   
  - State:=ParallelNFAStateAllocate(Instance.CountSubMatches,0);
  + State:=ParallelNFAStateAllocate(Instance.CountSubMatches,0,0);
   
    inc(Generation);
    if UnanchoredStart then begin
  
positive.code:     Instruction:PFLREInstruction;
      CurrentChar:ansichar;
      Capture:PFLRECapture;
      SubMatchesBitMask:longword;
      LocalInput:pansichar;
  begin
   result:=false;
  
negative.code:     opMATCH:begin
       if rfLONGEST in Instance.Flags then begin
        if not assigned(BestState) then begin
         BestState:=ParallelNFAStateAllocate(Instance.CountSubMatches,State^.SubMatchesBitmap,State^.UsedCheckBitmapSize);
        end;
        if State^.SubMatchesBitmap<>0 then begin
         if LastPosition<CurrentPosition then begin
          LastPosition:=CurrentPosition;
          BestState^.SubMatchesBitmap:=State^.SubMatchesBitmap;
          Move(State^.SubMatches[0],BestState^.SubMatches[0],State^.Count*SizeOf(TFLREParallelNFAStateItem));
          for Counter:=0 to longint(longword(longword(State^.UsedCheckBitmapSize+31) shr 5))-1 do begin
           BestState^.CheckBitmap[Counter]:=State^.CheckBitmap[Counter];
          end;
         end;
        end;
       end else begin
  