return currentSet.selectAncestorDescendant(contextSet, NodeSet.DESCENDANT, axis == Constants.DESCENDANT_SELF_AXIS, inPredicate); } else { DocumentSet docs = contextSet.getDocumentSet(); NodeSelector selector = axis == Constants.DESCENDANT_SELF_AXIS ? new DescendantOrSelfSelector(contextSet, inPredicate) : new DescendantSelector(contextSet, inPredicate);
	protected NodeSet getDescendants(		XQueryContext context,		NodeSet contextSet) {		if (test.isWildcardTest()) {			// test is one out of *, text(), node()			VirtualNodeSet vset = new VirtualNodeSet(axis, test, contextSet);			vset.setInPredicate(inPredicate);			return vset;		} else if(preloadNodeSets()){		    DocumentSet docs = getDocumentSet(contextSet);			if (currentSet == null || currentDocs == null || !(docs == currentDocs || docs.equals(currentDocs))) {                currentDocs = docs;                currentSet =                    (NodeSet) context.getBroker().getElementIndex().findElementsByTagName(                        ElementValue.ELEMENT,                        currentDocs,                        test.getName(), null);                registerUpdateListener();            }            return currentSet.selectAncestorDescendant(contextSet, NodeSet.DESCENDANT,                     axis == Constants.DESCENDANT_SELF_AXIS, inPredicate);		} else {			DocumentSet docs = contextSet.getDocumentSet();			NodeSelector selector = axis == Constants.DESCENDANT_SELF_AXIS ?					new DescendantOrSelfSelector(contextSet, inPredicate) :						new DescendantSelector(contextSet, inPredicate);			return context.getBroker().getElementIndex().findElementsByTagName(					ElementValue.ELEMENT, docs, test.getName(), selector			);		}	}