anchor.diff:          ')': LToken := tkClosingParenthesis;
           '[': LToken := tkOpeningBracket;
           ']': LToken := tkClosingBracket;
  +        ',': LToken := tkComma;
         else
           LValue^ := LValue^ + LChar.Char[0];
           LToken:=tkText;
  
positive.code: 
    NextValue;
    repeat
      GetChar(c, LChar, @c);
      if LChar.Length = 1 then
        case LChar.Char[0] of
          #0: Break;
  
negative.code: type
    TToken = (tkNone, tkPercent, tkLess, tkGreater, tkEqual, tkLessOrEqual,
      tkGreaterOrEqual, tkOpeningParenthesis, tkClosingParenthesis,
      tkOpeningBracket, tkClosingBracket,  tkText, tkNum, tkWhiteChar, tkComma);
  
    TUTF8Char = record
      Length: byte;
      Char: array [0..3] of AnsiChar;
    end;
  
    procedure GetChar(APos: PAnsiChar; out AChar: TUTF8Char);
    begin
      AChar.Length := UTF8CharacterLength(APos);
  
  