case Constants.DESCENDANT_ATTRIBUTE_AXIS:
	public Value eval(		StaticContext context,		DocumentSet documents,		NodeSet contextSet,		NodeProxy contextNode) throws XPathException {		if (contextNode != null)			contextSet = new SingleNodeSet(contextNode);		NodeSet temp;		switch (axis) {			case Constants.DESCENDANT_AXIS :			case Constants.DESCENDANT_SELF_AXIS :				temp = getDescendants(context, documents, contextSet);				break;			case Constants.CHILD_AXIS :				temp = getChildren(context, documents, contextSet);				break;			case Constants.ANCESTOR_AXIS :			case Constants.ANCESTOR_SELF_AXIS :				temp = getAncestors(context, documents, contextSet);				break;			case Constants.SELF_AXIS :				temp = contextSet;				if (inPredicate) {					if (contextSet instanceof VirtualNodeSet) {						((VirtualNodeSet) contextSet).setInPredicate(true);						((VirtualNodeSet) contextSet).setSelfIsContext();					} else {						NodeProxy p;						for (Iterator i = temp.iterator(); i.hasNext();) {							p = (NodeProxy) i.next();							p.addContextNode(p);						}					}				}				break;			case Constants.PARENT_AXIS :				temp = getParents(context, documents, contextSet);				break;			case Constants.ATTRIBUTE_AXIS :				temp = getAttributes(context, documents, contextSet);				break;			case Constants.PRECEDING_SIBLING_AXIS :			case Constants.FOLLOWING_SIBLING_AXIS :				temp = getSiblings(context, documents, contextSet);				break;			default :				throw new IllegalArgumentException("Unsupported axis specified");		}		temp = (predicates.size() == 0) ? temp : applyPredicate(context, documents, temp);		return new ValueNodeSet(temp);	}