anchor.diff:   end;
   begin
   
  - TwoCountOfCaptures:=Instance.CountSubMatches;
  + CountSubMatches:=Instance.CountSubMatches;
   
    LocalInput:=Input;
    LocalInputLength:=InputLength;
  
positive.code:   if (MatchCondition<>sfImpossible) and
       (((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
      OnePassNFAMatchSubMatches[Counter]:=OnePassNFAWorkSubMatches[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
        OnePassNFAMatchSubMatches[Counter]:=CurrentPosition;
       end;
  
negative.code:  if assigned(State) and not Done then begin
    MatchCondition:=State^.MatchCondition;
    if (MatchCondition<>sfImpossible) and (((MatchCondition and sfEmptyAllFlags)=0) or Satisfy(MatchCondition)) then begin
     if ((MatchCondition and sfCapMask)<>0) and (CountSubMatches>0) then begin
      for Counter:=0 to CountSubMatches-1 do begin
       if (MatchCondition and ((1 shl sfCapShift) shl Counter))<>0 then begin   
        OnePassNFAWorkSubMatches[Counter]:=CurrentPosition;
       end;
      end;
     end;
     for Counter:=0 to CountSubMatches-1 do begin
      OnePassNFAMatchSubMatches[Counter]:=OnePassNFAWorkSubMatches[Counter];
     end;
     result:=true;
  