anchor.diff:      result:=DFAMatch;
      end;
      if (State^.Flags and sfDFAStart)<>0 then begin
  -    Offset:=Instance.SearchNextPossibleStartForDFA(@LocalInput[Position],UntilExcludingPosition-Position);
  -    if Offset<0 then begin
  -     exit;
  -    end;
  -    inc(Position,Offset);
  +    if Position<UntilExcludingPosition then begin
  +     TemporaryTestState:=State^.NextStates[LocalByteMap[byte(ansichar(LocalInput[Position]))]];
  +     if assigned(TemporaryTestState) and ((TemporaryTestState^.Flags and sfDFAStart)<>0) then begin
  +      Offset:=Instance.SearchNextPossibleStartForDFA(@LocalInput[Position],UntilExcludingPosition-Position);
  +      if Offset<0 then begin
  +       exit;
  +      end;
  +      inc(Position,Offset);
  +     end;
  +    end;
      end;
     end;
    end;
  
positive.code:     @IsNotMatchWin:
      test ebx,sfDFAStart
      jz @IsNotStartState
       push ecx
       push edx
        dec ecx // because "dec ecx" comes after @BackToLoop first, but "inc esi" already directly after fetching the char byte
        mov edx,esi
        mov eax,self
        mov eax,dword ptr [eax+TFLREDFA.Instance]
        call TFLRE.SearchNextPossibleStartForDFA
       pop edx
       pop ecx
       test eax,eax
       js @Done
        add esi,eax
        sub ecx,eax
        inc ecx // because "dec ecx" after @BackToLoop
      @IsNotStartState:
      jmp @BackToLoop
  
  
negative.code:    jmp SkipProcessNewStartState
   end;
   ProcessNewStartState:
    if Position<UntilExcludingPosition then begin
     TemporaryTestState:=State^.NextStates[LocalByteMap^[byte(ansichar(LocalInput[Position]))]];
     if assigned(TemporaryTestState) and ((TemporaryTestState^.Flags and sfDFAStart)<>0) then begin
      Offset:=Instance.SearchNextPossibleStartForDFA(@LocalInput[Position],UntilExcludingPosition-Position);
      if Offset<0 then begin
       exit;
      end;
      inc(Position,Offset);
      State:=InitializeStartState(Position,UnanchoredStart);
      if assigned(State) and ((State^.Flags and sfDFAMatchWins)<>0) then begin
       MatchEnd:=Position-1;
       result:=DFAMatch;
      end;
     end;
    end;
    goto NewStartState;
   SkipProcessNewStartState:
  {$else}
  