code: public ApnsPayloadBuilder addCustomProperty(final String key, final Object value) {
          this.customProperties.put(key, value);
          return this;
      }
docs: <p>Adds a custom property to the payload. According to Apple's documentation:</p>
  
  <blockquote>Providers can specify custom payload values outside the Apple-reserved {@code aps} namespace. Custom
  values must use the JSON structured and primitive types: dictionary (object), array, string, number, and Boolean.
  You should not include customer information (or any sensitive data) as custom payload data. Instead, use it for
  such purposes as setting context (for the user interface) or internal metrics. For example, a custom payload
  value might be a conversation identifier for use by an instant-message client application or a timestamp
  identifying when the provider sent the notification. Any action associated with an alert message should not be
  destructive—for example, it should not delete data on the device.</blockquote>
  
  <p>The value for the property is serialized to JSON by <a href="https://github.com/google/gson">Gson</a>. For
  a detailed explanation of how Gson serializes Java objects to JSON, please see the
  <a href="https://github.com/google/gson/blob/master/UserGuide.md#TOC-Using-Gson">Gson User Guide</a>.</p>
  
  @param key the key of the custom property in the payload object
  @param value the value of the custom property
  
  @return a reference to this payload builder
  
  @see Gson#toJson(Object)
  @see <a href="https://github.com/google/gson/blob/master/UserGuide.md#TOC-Using-Gson">Gson User Guide - Using
  Gson</a>