set = set.selectParentChild(contextSequence.toNodeSet(), NodeSet.DESCENDANT, inPredicate);
set = set.selectParentChild(contextSequence.toNodeSet(), NodeSet.DESCENDANT, contextId);
	public Sequence eval(Sequence contextSequence, Item contextItem) throws XPathException {        if (context.getProfiler().isEnabled()) {            context.getProfiler().start(this);                   context.getProfiler().message(this, Profiler.DEPENDENCIES, "DEPENDENCIES", Dependency.getDependenciesName(this.getDependencies()));            if (contextSequence != null)                context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT SEQUENCE", contextSequence);            if (contextItem != null)                context.getProfiler().message(this, Profiler.START_SEQUENCES, "CONTEXT ITEM", contextItem.toSequence());        }        		if (contextItem != null)			contextSequence = contextItem.toSequence();                Sequence result;		NodeSet set = expression.eval(contextSequence).toNodeSet();		if(set.getLength() == 0)			result = Sequence.EMPTY_SEQUENCE;        else {            		switch(axis) {    			case Constants.DESCENDANT_SELF_AXIS:    				set = set.selectAncestorDescendant(contextSequence.toNodeSet(), NodeSet.DESCENDANT, true, inPredicate);    				break;    			case Constants.CHILD_AXIS:    				set = set.selectParentChild(contextSequence.toNodeSet(), NodeSet.DESCENDANT, inPredicate);    				break;    			default:    				throw new XPathException("Wrong axis specified");    		}            result = set;        }        if (context.getProfiler().isEnabled())             context.getProfiler().end(this, "", result);                return result;	}