LOG.info("query: " + expr.pprint());
LOG.info("query: " + xpath);
	protected Value doQuery(User user, String xpath, DocumentSet docs, NodeSet context)		throws Exception {		XPathLexer lexer = new XPathLexer(new StringReader(xpath));		XPathParser parser = new XPathParser(brokerPool, user, lexer);		PathExpr expr = new PathExpr(brokerPool);		parser.expr(expr);		LOG.info("query: " + expr.pprint());		long start = System.currentTimeMillis();		if (parser.foundErrors())			throw new EXistException(parser.getErrorMsg());		DocumentSet ndocs = (docs == null ? expr.preselect() : expr.preselect(docs));		if (ndocs.getLength() == 0)			return null;		LOG.info("pre-select took " + (System.currentTimeMillis() - start) + "ms.");		Value result = expr.eval(ndocs, context, null);		LOG.info("query took " + (System.currentTimeMillis() - start) + "ms.");		return result;	}