docs: public void merge(JSONObject jo, boolean overwrite, boolean deep) throws JSONException {
  
          Iterator<String> it = jo.keys();
          while (it.hasNext()) {
              String key = it.next();
              if (!has(key)) {
                  put(key, jo.get(key));
                  continue;
              }
              boolean recurse = deep && (jo.optJSONObject(key) != null) && (optJSONObject(key) != null);
              if (overwrite && !recurse) {
                  put(key, jo.get(key));
                  continue;
              }
              if (recurse) {
                  getJSONObject(key).merge(jo.getJSONObject(key), overwrite, deep);
              }
          }
      }