code: private boolean deserialize() {
      if (!apiVersionMatch()) {
        // when version mismatch, even when deserialization is successful,
        // we cannot guarantee data correctness. Old events containing fields that should be
        // translated/mapped to the new schema will simply not be captured by the new schema.
        return false;
      } else if (object != null) {
        // already successfully deserialized
        return true;
      } else {
        try {
          object = EventDataDeserializer.deserializeStripeObject(rawJsonObject);
          return true;
        } catch (JsonParseException e) {
          // intentionally ignore exception to fulfill simply whether deserialization succeeds
          return false;
        }
      }
    }
docs: Safe deserialize raw JSON into {@code StripeObject}. This operation mutates the state, and the
  successful result can be accessed via {@link EventDataObjectDeserializer#getObject()}.
  Matching {@link Event#getApiVersion()} and {@link Stripe#API_VERSION} is necessary condition
  to guarantee safe deserialization.
  @return whether deserialization has been successful.