anchor.diff:   if result then begin
     SetLength(Captures,Instance.CountCaptures);
     for Counter:=0 to Instance.CountCaptures-1 do begin
  -   Captures[Counter].Start:=OnePassNFAMatchSubMatches[Counter*2];
  -   Captures[Counter].Length:=OnePassNFAMatchSubMatches[(Counter*2)+1]-OnePassNFAMatchSubMatches[Counter*2];
  +   Index:=Instance.CapturesToSubMatchesMap[Counter] shl 1;
  +   Captures[Counter].Start:=OnePassNFAMatchSubMatches[Index];
  +   Captures[Counter].Length:=OnePassNFAMatchSubMatches[Index or 1]-OnePassNFAMatchSubMatches[Index];
     end;
    end;
   
  
positive.code:  if TrySearch(StartInstruction,Position) then begin
    SetLength(Captures,Instance.CountCaptures);
    for Counter:=0 to Instance.CountCaptures-1 do begin
     Captures[Counter].Start:=BitStateNFAMatchSubMatches[Counter*2];
     Captures[Counter].Length:=BitStateNFAMatchSubMatches[(Counter*2)+1]-BitStateNFAMatchSubMatches[Counter*2];
    end;
    result:=BitStateNFAMatch;
   end else begin
  
negative.code: end;
  
  function TFLREThreadLocalStorageInstance.SearchMatchParallelNFA(var Captures:TFLRECaptures;const StartPosition,UntilExcludingPosition:longint;const UnanchoredStart:boolean):boolean;
  var LocalInputLength,CurrentPosition,Counter,ThreadIndex,CurrentLength,LastPosition,Index:longint;
      CurrentThreadList,NewThreadList,TemporaryThreadList:PFLREThreadList;
      State,Matched,BestState:PFLREParallelNFAState;
      CurrentThread:PFLREThread;
  