val = returnExpr.eval(docs, val);
if(orderSpecs == null) val = returnExpr.eval(docs, val);
	public Sequence eval(		DocumentSet docs,		Sequence contextSequence,		Item contextItem)		throws XPathException {		Sequence result = new ValueSequence();		context.pushLocalContext(false);		// declare the variable		Variable var = new Variable(QName.parse(context, varName));		context.declareVariable(var);		// evaluate the "in" expression		Sequence in = inputSequence.eval(docs, null, null);		var.setValue(in);		if(whereExpr != null)			whereExpr.setInPredicate(true);		if(whereExpr != null && 			( whereExpr.getDependencies() & Dependency.CONTEXT_ITEM ) == 0) {			LOG.debug("using single walk-through");			setContext(in);			in = applyWhereExpression(context, docs, null);			whereExpr = null;		}		if(orderSpecs != null) {			OrderedValueSequence ordered = new OrderedValueSequence(docs, orderSpecs);			ordered.addAll(in);			in = ordered;		}		Sequence val = null;		int p = 0;		context.setContextPosition(0);		// loop through each variable binding		for (SequenceIterator i = in.iterate(); i.hasNext(); p++) {			contextItem = i.nextItem();			context.setContextPosition(p);			if(contextItem instanceof NodeProxy)				((NodeProxy)contextItem).addContextNode((NodeProxy)contextItem);			contextSequence = contextItem.toSequence();			var.setValue(contextSequence);			if (whereExpr != null) {				val = applyWhereExpression(context, docs, contextSequence);				if(val.getLength() == 0)					continue;			} else				val = contextItem.toSequence();			val = returnExpr.eval(docs, val);			result.addAll(val);		}		context.popLocalContext();		return result;	}