Sequence argSeq = path.eval(context, docs, contextSequence, contextItem); NodeProxy parent; long pid; ContextItem contextNode; NodeProxy next; Item item;  for (SequenceIterator i = argSeq.iterate(); i.hasNext();) { item = (Item) i.nextItem(); current = (NodeProxy) item; contextNode = current.getContext(); if (contextNode == null) { LOG.warn("context node is missing!"); break; }  while (contextNode != null) { next = contextNode.getNode();  result.remove(next); contextNode = contextNode.getNextItem(); }
LOG.debug("found " + result.getLength()); return result; } else { Sequence seq = arg.eval(docs, contextSequence, contextItem); return seq.effectiveBooleanValue() ? BooleanValue.TRUE : BooleanValue.FALSE;
	public Sequence eval(		StaticContext context,		DocumentSet docs,		Sequence contextSequence,		Item contextItem)		throws XPathException {		NodeSet result = new ExtArrayNodeSet();		Expression path = getArgument(0);		result.addAll(contextSequence);		NodeProxy current;		if (inPredicate)			for (SequenceIterator i = result.iterate(); i.hasNext();) {				current = (NodeProxy) i.nextItem();				current.addContextNode(current);			}		// evaluate argument expression		Sequence argSeq =			path.eval(context, docs, contextSequence, contextItem);		NodeProxy parent;		long pid;		ContextItem contextNode;		NodeProxy next;		Item item;		// iterate through nodes and remove hits from result		for (SequenceIterator i = argSeq.iterate(); i.hasNext();) {			item = (Item) i.nextItem();			current = (NodeProxy) item;			contextNode = current.getContext();			if (contextNode == null) {				LOG.warn("context node is missing!");				break;			}			while (contextNode != null) {				next = contextNode.getNode();				//if ((parent = result.get(next)) != null)					result.remove(next);				contextNode = contextNode.getNextItem();			}		}		LOG.debug("found " + result.getLength());		return result;	}