docs: public static <T extends Number> T parseNumber(String text, Class<T> targetClass, NumberFormat numberFormat) {
  		if (numberFormat != null) {
  			Assert.notNull(text, "Text must not be null");
  			Assert.notNull(targetClass, "Target class must not be null");
  			DecimalFormat decimalFormat = null;
  			boolean resetBigDecimal = false;
  			if (numberFormat instanceof DecimalFormat) {
  				decimalFormat = (DecimalFormat) numberFormat;
  				if (BigDecimal.class.equals(targetClass) && !decimalFormat.isParseBigDecimal()) {
  					decimalFormat.setParseBigDecimal(true);
  					resetBigDecimal = true;
  				}
  			}
  			try {
  				Number number = numberFormat.parse(StringUtils.trimAllWhitespace(text));
  				return convertNumberToTargetClass(number, targetClass);
  			}
  			catch (ParseException ex) {
  				throw new IllegalArgumentException("Could not parse number: " + ex.getMessage());
  			}
  			finally {
  				if (resetBigDecimal) {
  					decimalFormat.setParseBigDecimal(false);
  				}
  			}
  		}
  		else {
  			return parseNumber(text, targetClass);
  		}
  	}