anchor.diff:        Instruction:=Instruction^.Next;
         continue;
        end else begin
  -      SubMatchesRelease(SubMatches);
  +      ParallelNFAStateRelease(State);
         break;
        end;
       end;
  
positive.code:  CurrentThreadList^.Count:=0;
   NewThreadList^.Count:=0;
  
   SubMatches:=ThreadLocalStorage.SubMatchesAllocate(CountSubMatches,0);
  
   inc(ThreadLocalStorage.Generation);
   if UnanchoredStart then begin
    ThreadLocalStorage.ParallelNFAAddThread(CurrentThreadList,UnanchoredStartInstruction,SubMatches,StartPosition);
   end else begin
    ThreadLocalStorage.ParallelNFAAddThread(CurrentThreadList,AnchoredStartInstruction,SubMatches,StartPosition);
   end;
  
   Matched:=nil;
  
   BestSubMatches:=nil;
  
   LastPosition:=-1;
  
  
negative.code:      PPFLREInstructionsStatic=^TPFLREInstructionsStatic;
       TPFLREInstructionsStatic=array[0..65535] of PFLREInstruction;
  
       PFLREParallelNFAStateItem=^TFLREParallelNFAStateItem;
       TFLREParallelNFAStateItem=longint;
  
       TFLREParallelNFAStateItems=array of TFLREParallelNFAStateItem;
  
       PFLREParallelNFAState=^TFLREParallelNFAState;
       TFLREParallelNFAState=record
        Next:PFLREParallelNFAState;
        ReferenceCounter:longint;
        Count:longint;
        BitState:longword;
        SubMatches:TFLREParallelNFAStateItems;
       end;
  
       PFLREThread=^TFLREThread;
       TFLREThread=record
        Instruction:PFLREInstruction;
        State:PFLREParallelNFAState;
       end;
  
       TFLREThreads=array of TFLREThread;
  