anchor.diff:   result^.SubMatches[Index]:=Position;
   end;
   
  -function TFLREThreadLocalStorage.NewThread(const Instruction:PFLREInstruction;const SubMatches:PFLRESubMatches):TFLREThread; {$ifdef caninline}inline;{$endif}
  -begin
  - result.Instruction:=Instruction;
  - result.SubMatches:=SubMatches;
  -end;
  -
  -procedure TFLREThreadLocalStorage.AddThread(const ThreadList:PFLREThreadList;Instruction:PFLREInstruction;SubMatches:PFLRESubMatches;const Position:longint);
  +procedure TFLREThreadLocalStorage.ParallelNFAAddThread(const ThreadList:PFLREThreadList;Instruction:PFLREInstruction;SubMatches:PFLRESubMatches;const Position:longint);
    function Satisfy(const NextFlags:longword;const Position:longint):boolean;
    begin
     result:=((NextFlags and sfEmptyAllFlags) and not GetSatisfyFlags(Position))=0;
  
positive.code: 
   inc(ThreadLocalStorage.Generation);
   if UnanchoredStart then begin
    ThreadLocalStorage.AddThread(CurrentThreadList,UnanchoredStartInstruction,SubMatches,StartPosition);
   end else begin
    ThreadLocalStorage.AddThread(CurrentThreadList,AnchoredStartInstruction,SubMatches,StartPosition);
   end;
  
   Matched:=nil;
  
negative.code:      continue;
      end;
      opSPLIT:begin
       ParallelNFAAddThread(ThreadList,Instruction^.Next,SubMatchesUse(SubMatches),Position);
       Instruction:=Instruction^.OtherNext;
       continue;
      end;
  