anchor.diff:  
     end else begin
   
  +   if assigned(State) and ((State^.Flags and sfDFAMatchWins)<>0) then begin
  +    MatchEnd:=Position-1;
  +    result:=DFAMatch;
  +   end;
  +
      for Position:=StartPosition to UntilExcludingPosition-1 do begin
       CurrentChar:=byte(ansichar(LocalInput[Position]));
       LastState:=State;
  
positive.code:  IsMatch:=false;
   ProcessWorkQueueOnByte(Queues[0],Queues[1],CurrentChar,AfterFlags,IsMatch);
  
   if (CurrentChar<>$ffffffff) or (MatchMode<>mmMultiMatch) then begin
    Queues[2]:=Queues[0];
    Queues[0]:=Queues[1];
    Queues[1]:=Queues[2];
  
negative.code:      end;
      end;
      opCHAR:begin
       if (CurrentChar<>256) and (ansichar(byte(CurrentChar)) in PFLRECharClass(pointer(ptruint(Instruction^.Value)))^) then begin
        AddToWorkQueue(NewWorkQueue,Instruction^.Next,Flags);
       end;
      end;
      opANY:begin
       if CurrentChar<>256 then begin
        AddToWorkQueue(NewWorkQueue,Instruction^.Next,Flags);
       end;
      end;
      opMATCH:begin
       if not (Instance.EndingAnchor and (CurrentChar<>256)) then begin
        IsMatch:=true;
        if MatchMode=mmFirstMatch then begin
         exit;
  