private static int parse(char[] chars, int offset, int len, int radix, boolean negative) throws NumberFormatException {
		int max = Integer.MIN_VALUE / radix;
		int result = 0;
		for( int i = 0; i < len; i++ ) {
			int digit = Character.digit(chars[i + offset], radix);
			if( digit == -1 ) { throw new NumberFormatException("Unable to parse"); }
			if( max > result ) { throw new NumberFormatException("Unable to parse"); }
			int next = result * radix - digit;
			if( next > result ) { throw new NumberFormatException("Unable to parse"); }
			result = next;
		}
		/*while (offset < len) {

		}*/
		if( !negative ) {
			result = -result;
			if( result < 0 ) { throw new NumberFormatException("Unable to parse"); }
		}
		return result;
	}