anchor.diff:       exit;
       end;
      end;
  -  end;
  - end;
  +   for i:=0 to a.CountIndirectInstructions-1 do begin
  +    if a.IndirectInstructions[i]<>b.IndirectInstructions[i] then begin
  +     result:=false;
  +     exit;
  +    end;
  +   end;
  +  end;
  + end;
  +end;
  +
  +function IsInstructionGreedy(Instruction:PFLREInstruction):boolean;
  +begin
  + result:=assigned(Instruction^.Next) and ((Instruction^.Next^.IDandOpcode and $ff) in [opSINGLECHAR,opCHAR,opANY]);
   end;
   
   constructor TFLREDFAStateHashMap.Create;
  
positive.code:  result:=GetState;
   result^.Instructions:=TakeOverFrom^.Instructions;
   result^.CountInstructions:=TakeOverFrom^.CountInstructions;
   result^.Flags:=TakeOverFrom^.Flags;
   TakeOverFrom^.Instructions:=nil;
   TakeOverFrom^.CountInstructions:=0;
   TakeOverFrom^.Flags:=0;
  end;
  
  
negative.code:        StatePoolSize:TFLREPtrUInt;
         StatePoolSizePowerOfTwo:TFLREPtrUInt;
         WorkQueues:TFLREDFAWorkQueues;
         QueueInstructionArray:TFLREIndirectInstructions;
  
         constructor Create(const AThreadLocalStorageInstance:TFLREThreadLocalStorageInstance;const AReversed:boolean);
         destructor Destroy; override;
  
         function CacheState(const State:PFLREDFAState):PFLREDFAState; {$ifdef caninline}inline;{$endif}
         procedure DestroyStatePool(var StatePool:PFLREDFAStatePool);
         procedure FreeUsedStatePool;
         function AllocateNewStatePool:PFLREDFAStatePool;
  