anchor.diff:       result.Canonicalized:=IgnoreCase;
       end;
       else begin
  -     if (rfUTF8 in Flags) and (byte(ansichar(Source[SourcePosition]))>=$80) then begin
  +     if (rfUTF8 in Flags) and (byte(TFLRERawByteChar(Source[SourcePosition]))>=$80) then begin
         UnicodeChar:=UTF8CodeUnitGetCharAndIncFallback(Source,SourcePosition);
         result.AddChar(UnicodeChar,IgnoreCase);
        end else begin
  -      result.AddChar(byte(ansichar(Source[SourcePosition])),IgnoreCase);
  +      result.AddChar(byte(TFLRERawByteChar(Source[SourcePosition])),IgnoreCase);
         inc(SourcePosition);
        end;
       end;
  
positive.code:    end;
     if (State^.Flags and sfDFAStart)<>0 then begin
      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
  
negative.code:   procedure AddRange(const Lo,Hi:byte);
    var Node:PFLRENode;
    begin
     Node:=NewNode(ntCHAR,nil,nil,NewCharClass([TFLRERawByteChar(byte(Lo))..TFLRERawByteChar(byte(Hi))],true));
     Add(Node);
    end;
    procedure ProcessRange(Lo,Hi:longword);
  