anchor.diff:  
   function TFLREBitStateNFA.SearchMatch(var Captures:TFLRECaptures;const StartPosition,UntilExcludingPosition:longint;const UnanchoredStart:boolean):longint;
   var LocalInputLength,BasePosition,Len:longint;
  -    LocalInput:PAnsiChar;
  +    LocalInput:PFLRERawByteChar;
    function ShouldVisit(const Instruction:PFLREInstruction;const Position:longint):boolean; {$ifdef caninline}inline;{$endif}
    var i:longword;
    begin
  
positive.code:       end;
       end else begin
        if LastPosition<Captures[0].Start then begin
         result:=result+FLREPtrCopy(PAnsiChar(Input),LastPosition,Captures[0].Start-LastPosition);
        end;
        CurrentPosition:=Captures[0].Start+Captures[0].Length;
        if CurrentPosition<Next then begin
  
negative.code: function TFLRE.MatchNext(const Input:TFLRERawByteString;var Captures:TFLRECaptures;const StartPosition:longint=1):boolean;
  var Counter:longint;
  begin
   result:=PtrMatchNext(PFLRERawByteChar(@Input[1]),length(Input),Captures,StartPosition-1);
   for Counter:=0 to length(Captures)-1 do begin
    if Captures[Counter].Length>0 then begin
     inc(Captures[Counter].Start);
  