StaticContext context,
	public Sequence eval(		StaticContext context,		DocumentSet docs,		Sequence contextSequence,		Item contextItem)		throws XPathException {		if (contextItem != null)			contextSequence = contextItem.toSequence();		if ((getDependencies() & Dependency.CONTEXT_ITEM)			== Dependency.NO_DEPENDENCY) {			NodeSet nodes =				path == null					? contextSequence.toNodeSet()					: path.eval(context, docs, contextSequence).toNodeSet();			String arg =				searchTerm					.eval(context, docs, contextSequence)					.getStringValue();			return evalQuery(context, docs, arg, nodes);		} else {			Item current;			String arg;			NodeSet nodes = null;			NodeSet result = new ExtArrayNodeSet();			Sequence temp;			boolean haveNodes = false;			if ((path.getDependencies() & Dependency.CONTEXT_ITEM)				== Dependency.NO_DEPENDENCY) {				nodes =					path == null						? contextSequence.toNodeSet()						: path.eval(context, docs, contextSequence).toNodeSet();				haveNodes = true;			}			for (SequenceIterator i = contextSequence.iterate();				i.hasNext();				) {				current = i.nextItem();				arg =					searchTerm						.eval(context, docs, current.toSequence())						.getStringValue();				long start = System.currentTimeMillis();				if (!haveNodes) {					nodes =						path == null							? contextSequence.toNodeSet()							: path								.eval(context, docs, current.toSequence())								.toNodeSet();				}				temp = evalQuery(context, docs, arg, nodes);				result.addAll(temp);				LOG.debug(					"found "						+ temp.getLength()						+ " for "						+ arg						+ " in "						+ (System.currentTimeMillis() - start));			}			return result;		}	}