if (!(contextSequence instanceof VirtualNodeSet) &&
if (executionMode == NODE && !(contextSequence instanceof VirtualNodeSet) &&
	public Sequence evalPredicate(Sequence outerSequence, Sequence contextSequence,	int mode)		    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);        }                            Sequence result;		Expression inner = getExpression(0);		if (inner == null)			result = Sequence.EMPTY_SEQUENCE;        else {            // just to be sure: change mode to boolean if the predicate expression returns a number            //TODO : the code, likely to be correct, implements the exact contrary                 if (Type.subTypeOf(inner.returnsType(), Type.NUMBER) && executionMode == BOOLEAN) {                executionMode = POSITIONAL;            }            if (!(contextSequence instanceof VirtualNodeSet) &&             		Type.subTypeOf(contextSequence.getItemType(), Type.ATOMIC)) {            	executionMode = BOOLEAN;            }                		switch(executionMode) {    			case NODE:                     if (context.getProfiler().isEnabled())                        context.getProfiler().message(this, Profiler.OPTIMIZATION_FLAGS,                                 "OPTIMIZATION CHOICE", "selectByNodeSet");                                        result = selectByNodeSet(contextSequence);                    break;                case BOOLEAN:                     if (context.getProfiler().isEnabled())                        context.getProfiler().message(this, Profiler.OPTIMIZATION_FLAGS,                                 "OPTIMIZATION CHOICE", "evalBoolean");                                        result = evalBoolean(contextSequence, inner);                    break;    			case POSITIONAL:                     if (context.getProfiler().isEnabled())                        context.getProfiler().message(this, Profiler.OPTIMIZATION_FLAGS,                                 "OPTIMIZATION CHOICE", "selectByPosition");                                        result = selectByPosition(outerSequence, contextSequence, mode, inner);                    break;    			default:                    throw new IllegalArgumentException("Unsupported execution mode: '" + executionMode + "'");			        		}                    }                if (context.getProfiler().isEnabled())             context.getProfiler().end(this, "", result);                return result;	}