anchor.diff:              end;
               '-':begin
                if length(Captures)>1 then begin
  -              result:=result+PtrCopy(PAnsiChar(Input),Captures[1].Start,Captures[1].Length);
  +              result:=result+FLREPtrCopy(PAnsiChar(Input),Captures[1].Start,Captures[1].Length);
                end;
                inc(i);
               end;
               '+':begin
                if length(Captures)>1 then begin
                 e:=length(Captures)-1;
  -              result:=result+PtrCopy(PAnsiChar(Input),Captures[e].Start,Captures[e].Length);
  +              result:=result+FLREPtrCopy(PAnsiChar(Input),Captures[e].Start,Captures[e].Length);
                end;
                inc(i);
               end;
  
positive.code: function TFLRE.PtrReplaceCallback(const Input:pointer;const InputLength:longint;const ReplacementCallback:TFLREReplacementCallback;const StartPosition:longint=0;Limit:longint=-1):TFLRERawByteString;
  var CurrentPosition,Next,LastPosition,Index:longint;
      Captures:TFLRECaptures;
      MatchStrings:TFLREStrings;
      ThreadLocalStorageInstance:TFLREThreadLocalStorageInstance;
  begin
   result:='';
  
negative.code:       end;
       end;
       for Index:=0 to CountCaptures-1 do begin
        MultiExtractions[CountMultiExtractions,Index]:=FLREPtrCopy(Input,MatchResult[Index].Start,MatchResult[Index].Length);
       end;
       inc(CountMultiExtractions);
       if Limit>0 then begin
  