docs: public CommonTree parseQuery(String queryString, QueryResolverDelegate resolverDelegate, QueryRendererDelegate rendererDelegate) throws ParsingException {
        IckleLexer lexer = new IckleLexer(new ANTLRStringStream(queryString));
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        IckleParser parser = new IckleParser(tokens);
  
        try {
           // parser.statement() is the entry point for evaluation of any kind of statement
           IckleParser.statement_return r = parser.statement();
  
           if (parser.hasErrors()) {
              throw log.getQuerySyntaxException(queryString, parser.getErrorMessages());
           }
  
           CommonTree tree = (CommonTree) r.getTree();
           tree = resolve(tokens, tree, resolverDelegate);
           tree = render(tokens, tree, rendererDelegate);
           return tree;
        } catch (RecognitionException e) {
           throw log.getQuerySyntaxException(queryString, e);
        }
     }