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