docs: public static <P extends Enum<P>> JSONObject putDefault(JSONObject json, P e, PointF defPoint,
                                                              boolean allowImplicitPoint) {
          if (json != null) {
              JSONObject pointJson = optJSONObject(json, e);
              if (pointJson != null) {
                  // Check both members; default if missing
                  try {
                      if (!hasNumber(pointJson, "x", true)) {
                          pointJson.put("x", defPoint.x);
                      }
                      if (!hasNumber(pointJson, "y", true)) {
                          pointJson.put("y", defPoint.y);
                      }
                  } catch (JSONException e1) {
                      throw new RuntimeException(e1);
                  }
              } else {
                  // Some properties allow a point to be implicitly specified with a single number,
                  // which is then used for both 'x' and 'y' values.
                  if (!(allowImplicitPoint && hasNumber(json, e))) {
                      put(json, e, defPoint);
                  }
              }
          }
          return json;
      }