anchor.diff:    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
  +   for Counter:=0 to CountSubMatches-1 do begin
       OnePassNFAMatchSubMatches[Counter]:=OnePassNFAWorkSubMatches[Counter];
      end;
      if (MatchCondition and sfCapMask)<>0 then begin
  -    for Counter:=0 to TwoCountOfCaptures-1 do begin
  +    for Counter:=0 to CountSubMatches-1 do begin
        if (MatchCondition and ((1 shl sfCapShift) shl Counter))<>0 then begin
         OnePassNFAMatchSubMatches[Counter]:=CurrentPosition;
        end;
  
positive.code:   end;
  
    if (Condition and sfCapMask)<>0 then begin
     for Counter:=0 to TwoCountOfCaptures-1 do begin
      if (Condition and ((1 shl sfCapShift) shl Counter))<>0 then begin
       OnePassNFAWorkSubMatches[Counter]:=CurrentPosition;
      end;
  
negative.code: 
  function TFLREThreadLocalStorageInstance.SearchMatchOnePassNFA(var Captures:TFLRECaptures;const StartPosition,UntilExcludingPosition:longint):boolean;
  var State,Nodes:PFLREOnePassNFAState;
      LocalInputLength,CurrentPosition,StateSize,CountSubMatches,Counter:longint;
      LocalByteMap:PFLREByteMap;
      Done:boolean;
      NextMatchCondition,MatchCondition,Condition,NextIndex:longword;
  