code: @ArgumentsChecked
  	@Throws({ IllegalNullArgumentException.class, IllegalNumberArgumentException.class })
  	public static <T extends Number> T isNumber(@Nonnull final String value, @Nullable final String name, @Nonnull final Class<T> type) {
  		Check.notNull(value, "value");
  		Check.notNull(type, "type");
  
  		final Number ret;
  		try {
  			ret = checkNumberInRange(value, type);
  		} catch (final NumberFormatException nfe) {
  			if (name == null) {
  				throw new IllegalNumberArgumentException(value, nfe);
  			} else {
  				throw new IllegalNumberArgumentException(name, value, nfe);
  			}
  		}
  
  		return type.cast(ret);
  	}
docs: Ensures that a String argument is a number. This overload supports all subclasses of {@code Number}. The number
  is first converted to a {@code BigDecimal} or {@code BigInteger}. Floating point types are only supported if the
  {@code type} is one of {@code Float, Double, BigDecimal}.
  
  <p>
  This method does also check against the ranges of the given datatypes.
  
  @param value
  value which must be a number and in the range of the given datatype.
  @param name
  (optional) name of object reference (in source code).
  @param type
  requested return value type, must be a subclass of {@code Number}, i.e. one of {@code BigDecimal,
  BigInteger, Byte, Double, Float, Integer, Long, Short}
  @return the given string argument converted to a number of the requested type
  
  @throws IllegalNumberArgumentException
  if the given argument {@code value} is no number