Object getAsObject() {
		if (value instanceof BigInteger) {
			BigInteger big = (BigInteger) value;
			if (big.compareTo(INTEGER_MAX) < 0) {
				return big.intValue();
			} else if (big.compareTo(LONG_MAX) < 0) {
				return big.longValue();
			}
		}
		// No need to convert to float or double since those lose precision
		return value;
	}