code: public Number optNumber(String key, Number defaultValue) {
          Object val = this.opt(key);
          if (NULL.equals(val)) {
              return defaultValue;
          }
          if (val instanceof Number){
              return (Number) val;
          }
          
          try {
              return stringToNumber(val.toString());
          } catch (Exception e) {
              return defaultValue;
          }
      }
docs: Get an optional {@link Number} value associated with a key, or the default if there
  is no such key or if the value is not a number. If the value is a string,
  an attempt will be made to evaluate it as a number. This method
  would be used in cases where type coercion of the number value is unwanted.
  
  @param key
  A key string.
  @param defaultValue
  The default.
  @return An object which is the value.