anchor.diff:   if TrySearch(StartInstruction,Position) then begin
     SetLength(Captures,Instance.CountCaptures);
     for Counter:=0 to Instance.CountCaptures-1 do begin
  -   Captures[Counter].Start:=BitStateNFAMatchCaptures[Counter*2];
  -   Captures[Counter].Length:=BitStateNFAMatchCaptures[(Counter*2)+1]-BitStateNFAMatchCaptures[Counter*2];
  +   Captures[Counter].Start:=BitStateNFAMatchSubMatches[Counter*2];
  +   Captures[Counter].Length:=BitStateNFAMatchSubMatches[(Counter*2)+1]-BitStateNFAMatchSubMatches[Counter*2];
     end;
     result:=BitStateNFAMatch;
    end else begin
  
positive.code:      (((Condition and sfMatchWins)<>0) or ((NextMatchCondition and sfEmptyAllFlags)<>0)) and
       (((MatchCondition and sfEmptyAllFlags)=0) or Satisfy(MatchCondition)) then begin
     for Counter:=0 to TwoCountOfCaptures-1 do begin
      OnePassNFAMatchCaptures[Counter]:=OnePassNFAWorkCaptures[Counter];
     end;
     if (MatchCondition and sfCapMask)<>0 then begin
      for Counter:=0 to TwoCountOfCaptures-1 do begin
       if (MatchCondition and ((1 shl sfCapShift) shl Counter))<>0 then begin
        OnePassNFAMatchCaptures[Counter]:=CurrentPosition;
       end;
      end;
     end;
  
negative.code:  FreeParallelNFAStates:=nil;
   AllParallelNFAStates:=TList.Create;
  
   OnePassNFAWorkSubMatches:=nil;
   OnePassNFAMatchSubMatches:=nil;
  
   if Instance.OnePassNFAReady then begin
    SetLength(OnePassNFAWorkSubMatches,Instance.CountSubMatches);
    SetLength(OnePassNFAMatchSubMatches,Instance.CountSubMatches);
   end;
  
   BitStateNFACountVisited:=0;
   BitStateNFAJobs:=nil;
   BitStateNFACountJobs:=0;
   BitStateNFAMaxJob:=0;
   BitStateNFAWorkSubMatches:=nil;
   BitStateNFAMatchSubMatches:=nil;
  
   if Instance.BitStateNFAReady then begin
    SetLength(BitStateNFAWorkSubMatches,Instance.CountSubMatches);
    SetLength(BitStateNFAMatchSubMatches,Instance.CountSubMatches);
   end;
  
   DFAStackInstructions:=nil;
  