anchor.diff:    end;
   
     CountSubMatches:=(CountParens+1)*2;
  -
  -  CompileRange;
   
     CompilePrefix;
   
  
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:  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;
  