anchor.diff:       PPFLREInstructionsStatic=^TPFLREInstructionsStatic;
        TPFLREInstructionsStatic=array[0..65535] of PFLREInstruction;
   
  -     PFLRESubMatchesItem=^TFLRESubMatchesItem;
  -     TFLRESubMatchesItem=longint;
  -
  -     TFLRESubMatchesItems=array of TFLRESubMatchesItem;
  -
  -     PFLRESubMatches=^TFLRESubMatches;
  -     TFLRESubMatches=record
  -      Next:PFLRESubMatches;
  +     PFLREParallelNFAStateItem=^TFLREParallelNFAStateItem;
  +     TFLREParallelNFAStateItem=longint;
  +
  +     TFLREParallelNFAStateItems=array of TFLREParallelNFAStateItem;
  +
  +     PFLREParallelNFAState=^TFLREParallelNFAState;
  +     TFLREParallelNFAState=record
  +      Next:PFLREParallelNFAState;
         ReferenceCounter:longint;
         Count:longint;
         BitState:longword;
  -      SubMatches:TFLRESubMatchesItems;
  +      SubMatches:TFLREParallelNFAStateItems;
        end;
   
        PFLREThread=^TFLREThread;
        TFLREThread=record
         Instruction:PFLREInstruction;
  -      SubMatches:PFLRESubMatches;
  +      State:PFLREParallelNFAState;
        end;
   
        TFLREThreads=array of TFLREThread;
  
positive.code: 
         function GetSatisfyFlags(const Position:longint):longword;
  
         function SubMatchesAllocate(const Count:longint;const BitState:longword):PFLRESubMatches; {$ifdef caninline}inline;{$endif}
         procedure SubMatchesRelease(const SubMatches:PFLRESubMatches); {$ifdef caninline}inline;{$endif}
         function SubMatchesUse(const SubMatches:PFLRESubMatches):PFLRESubMatches; {$ifdef caninline}inline;{$endif}
         function SubMatchesUpdate(const SubMatches:PFLRESubMatches;const Index,Position:longint):PFLRESubMatches; {$ifdef caninline}inline;{$endif}
  
         procedure ParallelNFAAddThread(const ThreadList:PFLREThreadList;Instruction:PFLREInstruction;SubMatches:PFLRESubMatches;const Position:longint);
  
         function DFACacheState(const State:PFLREDFAState):PFLREDFAState; {$ifdef caninline}inline;{$endif}
         procedure DFAAddInstructionThread(const State:PFLREDFAState;Instruction:PFLREInstruction);
  
negative.code: function TFLRE.SearchMatchParallelNFA(const ThreadLocalStorage:TFLREThreadLocalStorage;var Captures:TFLRECaptures;const StartPosition,UntilExcludingPosition:longint;const UnanchoredStart:boolean):boolean;
  var InputLength,CurrentPosition,Counter,ThreadIndex,CurrentLength,LastPosition:longint;
      CurrentThreadList,NewThreadList,TemporaryThreadList:PFLREThreadList;
      State,Matched,BestState:PFLREParallelNFAState;
      CurrentThread:PFLREThread;
      Thread:TFLREThread;
      Instruction:PFLREInstruction;
  