public Parser rangeExpression() {
        if (rangeExpressionParser == null) {
           FutureParser future = scoped("rangeExpression");
           rangeExpressionParser = future;
           future.setParser(
               sequence(
                   optional(
                       token("NOT")
                   ),
                   choice(
                       arithmeticExpression(),
                       identifier(),
                       literal()
                   ),
                   choice(
                       token("THROUGH"),
                       token("THRU")
                   ),
                   choice(
                       arithmeticExpression(),
                       identifier(),
                       literal()
                   )
               )
           );
        }

        return rangeExpressionParser;
    }