code: public static <P extends Enum<P>> JSONObject putDefault(JSONObject json, P e, PointF defPoint) {
          return putDefault(json, e, defPoint, true);
      }
docs: Checks the supplied {@link JSONObject} for a value mapped by an enum; if it does not exist,
  or is not an object value, the specified default value will be mapped to the enum.  If the
  value does exist, but either 'x' or 'y' field is missing, the missing field(s) will be set
  using {@code defPoint}.  However, if the value exists and is a {@link Number}, it is
  interpreted as implicitly defining both the 'x' and 'y' fields, and the value is left as-is.
  
  @param json     {@code JSONObject} to check for value
  @param e        {@link Enum} mapping the value to check
  @param defPoint The value to use as default
  @return The {@code JSONObject} passed as '{@code json}', for call-chaining.