anchor.diff:   result:=PtrReplaceAll(pansichar(@AInput[1]),length(AInput),pansichar(@AReplacement[1]),length(AReplacement),StartPosition-1,Limit);
   end;
   
  +function TFLRE.GetRangeLow:ansistring;
  +begin
  + CriticalSection.Enter;
  + try
  +  if not HasRange then begin
  +   CompileRange;
  +  end;
  +  result:=RangeLow;
  + finally
  +  CriticalSection.Leave;
  + end;
  +end;
  +
  +function TFLRE.GetRangeHigh:ansistring;
  +begin
  + CriticalSection.Enter;
  + try
  +  if not HasRange then begin
  +   CompileRange;
  +  end;
  +  result:=RangeHigh;
  + finally
  +  CriticalSection.Leave;
  + end;
  +end;
  +
   procedure InitializeFLRE;
   const FLRESignature:ansistring=' FLRE - yet another efficient, principled regular expression library - Version '+FLREVersionStr+' - Copyright (C) 2015, Benjamin ''BeRo'' Rosseaux - benjamin@rosseaux.com - http://www.rosseaux.com ';
    procedure InitializeUTF8DFA;
  
positive.code:        function MatchAll(const Input:ansistring;var Captures:TFLREMultiCaptures;const StartPosition:longint=1;Limit:longint=-1):boolean;
         function ReplaceAll(const AInput,AReplacement:ansistring;const StartPosition:longint=1;Limit:longint=-1):ansistring;
  
        published
  
         property NamedGroups:TStringList read NamedGroupStringList;
  
negative.code:   end;
  
    CountSubMatches:=(CountParens+1)*2;
  
    CompilePrefix;
  
  