anchor.diff:    BitStateNFAReady:=(CountForwardInstructions>0) and (CountForwardInstructions<512);
   
     BeginningWildcardLoop:=BeginningJump and BeginningSplit and BeginningWildcard;
  -  if rfLAZY in Flags then begin
  +  if rfSAFE in Flags then begin
      DoUnanchoredStart:=false;
  -  end else if rfGREEDY in Flags then begin
  +  end else if rfFAST in Flags then begin
      DoUnanchoredStart:=not BeginningAnchor;
     end else begin
      DoUnanchoredStart:=(FixedStringLength=0) and (CountObviousPrefixCharClasses<CountPrefixCharClasses) and not BeginningAnchor;
  
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;
  
         function GetRangeLow:ansistring;
         function GetRangeHigh:ansistring;
  
         function DumpRegularExpression:ansistring;
  
  
negative.code:  result:=PtrReplaceAll(pansichar(@AInput[1]),length(AInput),pansichar(@AReplacement[1]),length(AReplacement),StartPosition-1,Limit);
  end;
  
  function TFLRE.GetRange(var LowRange,HighRange:ansistring):boolean;
  begin
   result:=false;
   CriticalSection.Enter;
   try
    if not HasRange then begin
     CompileRange;
    end;
    if HasRange then begin
     LowRange:=RangeLow;
     HighRange:=RangeHigh;
     result:=true;
    end;
   finally
    CriticalSection.Leave;
   end;
  