anchor.diff:         function ExtractAll(const Input:TFLRERawByteString;var MultiExtractions:TFLREMultiStrings;const StartPosition:longint=1;Limit:longint=-1):boolean;
          function Replace(const Input,Replacement:TFLRERawByteString;const StartPosition:longint=1;Limit:longint=-1):TFLRERawByteString;
          function ReplaceCallback(const Input:TFLRERawByteString;const ReplacementCallback:TFLREReplacementCallback;const StartPosition:longint=1;Limit:longint=-1):TFLRERawByteString;
  -       function Split(const Input:TFLRERawByteString;var SplittedStrings:TFLREStrings;const StartPosition:longint=1;Limit:longint=-1):boolean;
  +       function Split(const Input:TFLRERawByteString;var SplittedStrings:TFLREStrings;const StartPosition:longint=1;Limit:longint=-1;const WithEmpty:boolean=true):boolean;
          function Test(const Input:TFLRERawByteString;const StartPosition:longint=1):boolean;
          function Find(const Input:TFLRERawByteString;const StartPosition:longint=1):longint;
   
  
positive.code:     SetLength(Captures,CountCaptures);
      if Limit<>0 then begin
       if InputLength=0 then begin
        if not SearchMatch(ThreadLocalStorageInstance,Captures,CurrentPosition,InputLength,HaveUnanchoredStart) then begin
         Count:=1;
         SetLength(SplittedStrings,Count);
         SplittedStrings[0]:='';
  
negative.code:        end;
        end;
        if Limit<>0 then begin
         if LastPosition<InputLength then begin
          if Count>=length(SplittedStrings) then begin
           SetLength(SplittedStrings,(Count+1)*2);
          end;
          SplittedStrings[Count]:=FLREPtrCopy(PFLRERawByteChar(Input),LastPosition,InputLength-LastPosition);
          inc(Count);
         end else if WithEmpty then begin
          if Count>=length(SplittedStrings) then begin
           SetLength(SplittedStrings,(Count+1)*2);
          end;
          SplittedStrings[Count]:='';
          inc(Count);
         end;
        end;
       end;
      end;
  