DocumentSet docs,
	public Sequence eval(		DocumentSet docs,		Sequence contextSequence,		Item contextItem)		throws XPathException {		if (getLength() == 0)			return Sequence.EMPTY_SEQUENCE;		if (contextItem != null)			contextSequence = contextItem.toSequence();		Expression left = getLeft();		Expression right = getRight();		if (Type.subTypeOf(left.returnsType(), Type.NODE)			&& Type.subTypeOf(right.returnsType(), Type.NODE)) {			NodeSet rl = left.eval(docs, contextSequence, null).toNodeSet();			rl = rl.getContextNodes(inPredicate);			NodeSet rr = right.eval(docs, contextSequence, null).toNodeSet();			rr = rr.getContextNodes(inPredicate);			rl =				rl.intersection(rr);			return rl;		} else {			boolean ls =				left.eval(docs, contextSequence).effectiveBooleanValue();			boolean rs =				right.eval(docs, contextSequence).effectiveBooleanValue();			return ls && rs ? BooleanValue.TRUE : BooleanValue.FALSE;		}	}