item = new Item(broker, p);
item = new Item(broker, p, expr, ndocs);
	public void addAll(NodeSet other) {		long start = System.currentTimeMillis();		NodeProxy p;		Item item;		DocumentSet docs = new DocumentSet();		for (Iterator i = other.iterator(); i.hasNext();) {			p = (NodeProxy) i.next();			docs.add(p.doc);		}		try {			XPathLexer lexer = new XPathLexer(new StringReader(sortExpr));			XPathParser parser =				new XPathParser(pool, new User("admin", null, "dba"), lexer);			expr = new PathExpr(pool);			parser.expr(expr);			LOG.info("query: " + expr.pprint());			if (parser.foundErrors())				LOG.debug(parser.getErrorMsg());			ndocs = expr.preselect(docs);		} catch (antlr.RecognitionException re) {			LOG.debug(re);		} catch (antlr.TokenStreamException tse) {			LOG.debug(tse);		} catch (PermissionDeniedException e) {			LOG.debug(e);		} catch (EXistException e) {			LOG.debug(e);		}		DBBroker broker = null;		try {			broker = pool.get();			for (Iterator i = other.iterator(); i.hasNext();) {				p = (NodeProxy) i.next();				item = new Item(broker, p);				list.add(item);			}		} catch (EXistException e) {			LOG.debug("exception during sort", e);		} finally {			pool.release(broker);		}		LOG.debug(			"sort-expression took "				+ (System.currentTimeMillis() - start)				+ "ms.");	}