anchor.diff:    {$else}
      {$undef HAS_TYPE_RAWBYTESTRING}
     {$ifend}
  +  {$if declared(UTF8String)}
  +   {$define HAS_TYPE_UTF8STRING}
  +  {$else}
  +   {$undef HAS_TYPE_UTF8STRING}
  +  {$ifend}
    {$else}
     {$undef HAS_TYPE_RAWBYTESTRING}
  +  {$undef HAS_TYPE_UTF8STRING}
    {$endif}
   {$endif}
   {$ifdef win32}
  
positive.code:      PFLREPtrInt=^TFLREPtrInt;
  
       TFLRERawByteString={$ifdef HAS_TYPE_RAWBYTESTRING}RawByteString{$else}AnsiString{$endif};
  
  {$ifdef fpc}
       TFLREQWord=qword;
  
negative.code:  result:=PtrReplaceAll(pansichar(@Input[1]),length(Input),pansichar(@Replacement[1]),length(Replacement),StartPosition-1,Limit);
  end;
  
  function TFLRE.UTF8Match(const Input:TFLREUTF8String;var Captures:TFLRECaptures;const StartPosition:longint=1):boolean;
  var Counter:longint;
  begin
   result:=PtrMatch(pansichar(@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);
    end;
    if (rfMULTIMATCH in Flags) and (Counter=0) then begin
     break;
    end;
   end;
  end;
  
  function TFLRE.UTF8MatchNext(const Input:TFLREUTF8String;var Captures:TFLRECaptures;const StartPosition:longint=1):boolean;
  var Counter:longint;
  begin
   result:=PtrMatchNext(pansichar(@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);
    end;
    if (rfMULTIMATCH in Flags) and (Counter=0) then begin
     break;
    end;
   end;
  end;
  
  function TFLRE.UTF8MatchAll(const Input:TFLREUTF8String;var MultiCaptures:TFLREMultiCaptures;const StartPosition:longint=1;Limit:longint=-1):boolean;
  var Counter,SubCounter:longint;
  begin
   result:=PtrMatchAll(pansichar(@Input[1]),length(Input),MultiCaptures,StartPosition-1,Limit);
   for Counter:=0 to length(MultiCaptures)-1 do begin
    for SubCounter:=0 to length(MultiCaptures[Counter])-1 do begin
     if MultiCaptures[Counter,SubCounter].Length>0 then begin
      inc(MultiCaptures[Counter,SubCounter].Start);
     end;
     if (rfMULTIMATCH in Flags) and (SubCounter=0) then begin
      break;
     end;
    end;
   end;
  end;
  
  function TFLRE.UTF8ReplaceAll(const Input,Replacement:TFLREUTF8String;const StartPosition:longint=1;Limit:longint=-1):TFLREUTF8String;
  begin
   result:=PtrReplaceAll(pansichar(@Input[1]),length(Input),pansichar(@Replacement[1]),length(Replacement),StartPosition-1,Limit);
  end;
  
  function TFLRE.GetRange(var LowRange,HighRange:TFLRERawByteString):boolean;
  begin
   result:=false;
  