anchor.diff:              raise ESearchExpressionParserException.CreateFmt('Unexpected token found : "%s"', [TokenToStr(LToken)]);
           end;
         tkOpeningParenthesis, tkOpeningBracket:
  -        if AExpressionKind = ekSet then
  +        if LExpressionKind = ekSet then
             if LPrevToken <> tkNone then
               raise ESearchExpressionParserException.CreateFmt('Bad "between" expression. Unexpected "%s"', [TokenToStr(LToken)])
             else
  
positive.code:         else
            raise ESearchExpressionParserException.Create('Unexpected occurrence of % found');
        tkLess..tkGreaterOrEqual:
          case AExpressionKind of
            ekNum:
              if LPrevToken <> tkNone then
                raise ESearchExpressionParserException.Create('Bad numeric expression')
  
negative.code:   end;
  
    ESearchExpressionParserException = class(Exception);
  
    { TSearchExpressionService }
  
    TSearchExpressionService = class
    public
      class procedure Parse(const AExpression: utf8string;
        const AExpressionKind: TExpressionKind; out AExpressionRecord: TExpressionRecord); overload;
      class function Parse(const AExpression: utf8string): TExpressionRecord; overload;
    end;
  
  