anchor.diff:   result^.SubMatches[Index]:=Position;
   end;
   
  -procedure TFLREThreadLocalStorage.ParallelNFAAddThread(const ThreadList:PFLREThreadList;Instruction:PFLREInstruction;SubMatches:PFLRESubMatches;const Position:longint);
  +procedure TFLREThreadLocalStorage.ParallelNFAAddThread(const ThreadList:PFLREThreadList;Instruction:PFLREInstruction;State:PFLREParallelNFAState;const Position:longint);
    function Satisfy(const NextFlags:longword;const Position:longint):boolean;
    begin
     result:=((NextFlags and sfEmptyAllFlags) and not GetSatisfyFlags(Position))=0;
  
positive.code:      continue;
      end;
      opSPLIT:begin
       ParallelNFAAddThread(ThreadList,Instruction^.Next,SubMatchesUse(SubMatches),Position);
       Instruction:=Instruction^.OtherNext;
       continue;
      end;
      opSAVE:begin
       SubMatches:=SubMatchesUpdate(SubMatches,Instruction^.Value,Position);
       Instruction:=Instruction^.Next;
       continue;
      end;
  
negative.code:       Instruction:=Instruction^.Next;
        continue;
       end else begin
        ParallelNFAStateRelease(State);
        break;
       end;
      end;
  