anchor.diff:    inc(Generation);
     GetMem(DFAState,StateSize);
     FillChar(DFAState^,StateSize,AnsiChar(#0));
  -  FastAddInstructionThread(DFAState,Instance.AnchoredStartInstruction);
  -  DFAState^.Flags:=DFAState^.Flags or sfDFAFullMatch;
  +  DFAState^.Flags:=sfDFAFullMatch;
     StateCache.Add(DFAState);
     inc(CountStatesCached);
     DefaultStates[dskFullMatch]:=DFAState;
  
positive.code:   FillChar(NewState,SizeOf(TFLREDFAState),AnsiChar(#0));
  
    InstructionGenerations:=nil;
    SetLength(InstructionGenerations,Max(Instance.CountForwardInstructions,Instance.CountBackwardInstructions));
    for Index:=0 to length(InstructionGenerations)-1 do begin
     InstructionGenerations[Index]:=-1;
    end;
  
    inc(Generation);
    GetMem(DFAState,StateSize);
    FillChar(DFAState^,StateSize,AnsiChar(#0));
    FastAddInstructionThread(DFAState,Instance.AnchoredStartInstruction);
    DFAState^.Flags:=DFAState^.Flags or sfDFADead;
    StateCache.Add(DFAState);
    inc(CountStatesCached);
    DefaultStates[dskDead]:=DFAState;
  
negative.code:    break;
    end;
    if WorkQueue.IsMark(Instruction) then begin
     if (n>0) and (QueueInstructionArray[n-1]<>Mark) then begin
      SawMark:=true;
      if (n+1)>length(QueueInstructionArray) then begin
       SetLength(QueueInstructionArray,(n+1)*2);
      end;
      QueueInstructionArray[n]:=Mark;
      inc(n);
     end;
  