public Value eval(DocumentSet docs, NodeSet context, NodeProxy node) { NodeSet nodes = path == null ? context : (NodeSet) path.eval(docs, context, null).getNodeList();
public Value eval(StaticContext context, DocumentSet docs, NodeSet contextSet, NodeProxy contextNode) { NodeSet nodes = path == null ? contextSet : (NodeSet) path.eval(context, docs, contextSet, contextNode).getNodeList();
	public Value eval(DocumentSet docs, NodeSet context, NodeProxy node) {		NodeSet nodes = path == null ? context :			(NodeSet) path.eval(docs, context, null).getNodeList();		if (hits == null)			processQuery(docs);		long pid;		NodeProxy current;		NodeProxy parent;		NodeSet temp = null;		long start = System.currentTimeMillis();		for (int j = 0; j < hits.length; j++) {			temp = new ArraySet(200);			for (int k = 0; k < hits[j].length; k++) {				if (hits[j][k] == null)					continue;				((ArraySet) hits[j][k]).sort();				for (Iterator i = hits[j][k].iterator(); i.hasNext();) {					current = (NodeProxy) i.next();					parent = nodes.parentWithChild(current, false, true);					if (parent != null) {						if(temp.contains(parent)) {							parent.addMatches(current.matches);						} else {							parent.addMatches(current.matches);							temp.add(parent);						}					}				}			}			hits[j][0] = (temp == null) ? new ArraySet(1) : temp;		}		NodeSet t0 = null;		NodeSet t1;		for (int j = 0; j < hits.length; j++) {			t1 = hits[j][0];			if (t0 == null)				t0 = t1;			else				t0 =					(type == Constants.FULLTEXT_AND)						? t0.intersection(t1)						: t0.union(t1);		}		if (t0 == null)			t0 = NodeSet.EMPTY_SET;		return new ValueNodeSet(t0);	}