else
} else
    public NodeSet selectParentChild(NodeSet al, int mode, int contextId) {    	sort();    	if (al instanceof VirtualNodeSet)    		return super.selectParentChild(al, mode, contextId);    	NodeSet result = new ExtArrayNodeSet();		Iterator ia = al.iterator();		NodeProxy na = (NodeProxy) ia.next();		if (na == null || partCount == 0)			return NodeSet.EMPTY_SET;		int currentPart = 0;		while (currentPart < partCount) {			// first, try to find nodes belonging to the same doc			if (na.getDocument().getDocId() < documentIds[currentPart]) {				if (ia.hasNext())					na = (NodeProxy) ia.next();				else					break;			} else if (na.getDocument().getDocId() > documentIds[currentPart]) {				++currentPart;			} else {				parts[currentPart].selectParentChild(result, na, ia, mode, contextId);				++currentPart;			}		}		return result;    }