anchor.diff:    SubMatchesBitMask:=Matched^.SubMatchesBitMask;
     for Counter:=0 to Instance.CountCaptures-1 do begin
      Capture:=@Captures[Counter];
  +   Index:=Instance.CapturesToSubMatchesMap[Counter] shl 1;
      if (SubMatchesBitMask and longword($80000000))<>0 then begin
  -    CurrentPosition:=Matched^.SubMatches[Counter shl 1];
  -    CurrentLength:=Matched^.SubMatches[(Counter shl 1) or 1]-CurrentPosition;
  +    CurrentPosition:=Matched^.SubMatches[Index];
  +    CurrentLength:=Matched^.SubMatches[Index or 1]-CurrentPosition;
      end else begin
  -    if (SubMatchesBitMask and (longword(1) shl (Counter shl 1)))<>0 then begin
  -     CurrentPosition:=Matched^.SubMatches[Counter shl 1];
  +    if (SubMatchesBitMask and (longword(1) shl Index))<>0 then begin
  +     CurrentPosition:=Matched^.SubMatches[Index];
       end else begin
        CurrentPosition:=0;
       end;
  -    if (SubMatchesBitMask and (longword(1) shl ((Counter shl 1) or 1)))<>0 then begin
  -     CurrentLength:=Matched^.SubMatches[(Counter shl 1) or 1]-CurrentPosition;
  +    if (SubMatchesBitMask and (longword(1) shl (Index or 1)))<>0 then begin
  +     CurrentLength:=Matched^.SubMatches[Index or 1]-CurrentPosition;
       end else begin
        CurrentLength:=0;
       end;
  
positive.code:  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];
    end;
   end;
  
  
negative.code: 
   end;
  var VisitedLength:longword;
      Position,LastPosition,Counter,Index:longint;
      StartInstruction:PFLREInstruction;
  begin
   result:=BitStateNFAError;
  