if (s != null){ double d1 = Math.floor(argumentList.next.e.evalNumber(vn)+0.5d); double d2 = Math.floor(argumentList.next.next.e.evalNumber(vn)+0.5d); int i1 = Math.max(0,(int)d1 -1); if ((d1+d2)!=(d1+d2) || d1>s.length()) return ""; return s.substring(Math.max(0,(int)d1-1),Math.min(s.length(), (int)(d1-1)+(int)d2));  } return null;
double d1 = Math.floor(argumentList.next.e.evalNumber(vn) + 0.5d); double d2 = Math .floor(argumentList.next.next.e.evalNumber(vn) + 0.5d); int i1 = Math.max(0, (int) d1 - 1); if ((d1 + d2) != (d1 + d2) || d1 > s.length()) return ""; return s.substring(Math.max(0, (int) d1 - 1), Math.min(s.length(), (int) (d1 - 1) + (int) d2));
	private String subString(VTDNav vn){	    if (argCount()== 2){	        String s = argumentList.e.evalString(vn);	        if (s != null){	            double d1 = Math.floor(argumentList.next.e.evalNumber(vn)+0.5d);	            if (d1!=d1 || d1>s.length())	                return "";	            return s.substring(Math.max((int)(d1-1),0));	        }	        return null;	    } else if (argCount() == 3){	        String s = argumentList.e.evalString(vn);	        if (s != null){	            double d1 = Math.floor(argumentList.next.e.evalNumber(vn)+0.5d);	            double d2 = Math.floor(argumentList.next.next.e.evalNumber(vn)+0.5d);	            int i1 = Math.max(0,(int)d1 -1);	            if ((d1+d2)!=(d1+d2) || d1>s.length())	                return "";	            return s.substring(Math.max(0,(int)d1-1),Math.min(s.length(), (int)(d1-1)+(int)d2));	            //(int) argumentList.next.next.e.evalNumber(vn)-1);	        }	        return null;	    }	    throw new IllegalArgumentException		("substring()'s argument count is invalid");	}