code: public JSONObject put(String name, Object value) throws JSONException {
          if (value == null) {
              nameValuePairs.remove(name);
              return this;
          }
          if (value instanceof Number) {
              // deviate from the original by checking all Numbers, not just floats & doubles
              JSON.checkDouble(((Number) value).doubleValue());
          }
          nameValuePairs.put(checkName(name), value);
          return this;
      }
docs: Maps {@code name} to {@code value}, clobbering any existing name/value
  mapping with the same name. If the value is {@code null}, any existing
  mapping for {@code name} is removed.
  
  @param value a {@link JSONObject}, {@link JSONArray}, String, Boolean,
  Integer, Long, Double, {@link #NULL}, or {@code null}. May not be
  {@link Double#isNaN() NaNs} or {@link Double#isInfinite()
  infinities}.
  @return this object.