case FuncName.CONTAINS: if (argCount()!=2){ throw new IllegalArgumentException("contains()'s argument count is invalid"); } return contains(vn); case FuncName.STARTS_WITH: if (argCount()!=2){ throw new IllegalArgumentException("starts-with()'s argument count is invalid"); } return startsWith(vn);
	public boolean evalBoolean(VTDNav vn){	  	  switch(opCode){			case FuncName.TRUE: if (argCount()!=0){									throw new IllegalArgumentException("true() doesn't take any argument");								}								return true;						case FuncName.FALSE:if (argCount()!=0){									throw new IllegalArgumentException("false() doesn't take any argument");								}								return false;				case FuncName.BOOLEAN: if (argCount()!=1){										throw new IllegalArgumentException("boolean() doesn't take any argument");								   }									return argumentList.e.evalBoolean(vn);				case FuncName.NOT:	if (argCount()!=1){										throw new IllegalArgumentException("not() doesn't take any argument");			   					}								return !argumentList.e.evalBoolean(vn);			case FuncName.CONTAINS:			    if (argCount()!=2){			        throw new IllegalArgumentException("contains()'s argument count is invalid");				}			    return contains(vn);			case FuncName.STARTS_WITH:			    if (argCount()!=2){			        throw new IllegalArgumentException("starts-with()'s argument count is invalid");			    }			    return startsWith(vn);			default: if (isNumerical()){			    		double d = evalNumber(vn);			    		if (d==0 || d!=d)			    		    return false;			    		return true;					 }else{					     return evalString(vn).length()!=0;					 }					  }	}