docs: public static Number parseNumber( String value ) {
          // Try to parse as a number ...
          char c = value.charAt(0);
  
          if ((c >= '0' && c <= '9') || c == '.' || c == '-' || c == '+') {
              // It's definitely a number ...
              if (c == '0' && value.length() > 2) {
                  // it might be a hex number that starts with '0x'
                  char two = value.charAt(1);
                  if (two == 'x' || two == 'X') {
                      try {
                          // Parse the remainder of the hex number ...
                          return Integer.parseInt(value.substring(2), 16);
                      } catch (NumberFormatException e) {
                          // Ignore and continue ...
                      }
                  }
              }
              // Try parsing as a double ...
              try {
                  if ((value.indexOf('.') > -1) || (value.indexOf('E') > -1) || (value.indexOf('e') > -1)) {
                      return Double.parseDouble(value);
                  }
                  Long longObj = new Long(value);
                  long longValue = longObj.longValue();
                  int intValue = longObj.intValue();
                  if (longValue == intValue) {
                      // Then it's just an integer ...
                      return new Integer(intValue);
                  }
                  return longObj;
              } catch (NumberFormatException e) {
                  // ignore ...
              }
          }
          return null;
      }