### Question:
ApnsPayloadBuilder { public ApnsPayloadBuilder addCustomProperty(final String key, final Object value) { this.customProperties.put(key, value); return this; }  ApnsPayloadBuilder setPreferStringRepresentationForAlerts(final boolean preferStringRepresentationForAlerts); ApnsPayloadBuilder setAlertBody(final String alertBody); ApnsPayloadBuilder setLocalizedAlertMessage(final String localizedAlertKey, final String... alertArguments); ApnsPayloadBuilder setAlertTitle(final String alertTitle); ApnsPayloadBuilder setLocalizedAlertTitle(final String localizedAlertTitleKey, final String... alertTitleArguments); ApnsPayloadBuilder setAlertSubtitle(final String alertSubtitle); ApnsPayloadBuilder setLocalizedAlertSubtitle(final String localizedAlertSubtitleKey, final String... alertSubtitleArguments); ApnsPayloadBuilder setLaunchImageFileName(final String launchImageFilename); ApnsPayloadBuilder setShowActionButton(final boolean showActionButton); ApnsPayloadBuilder setActionButtonLabel(final String action); ApnsPayloadBuilder setLocalizedActionButtonKey(final String localizedActionButtonKey); ApnsPayloadBuilder setBadgeNumber(final Integer badgeNumber); ApnsPayloadBuilder setCategoryName(final String categoryName); @Deprecated ApnsPayloadBuilder setSoundFileName(final String soundFileName); ApnsPayloadBuilder setSound(final String soundFileName); ApnsPayloadBuilder setSound(final String soundFileName, final boolean isCriticalAlert, final double soundVolume); ApnsPayloadBuilder setContentAvailable(final boolean contentAvailable); ApnsPayloadBuilder setMutableContent(final boolean mutableContent); ApnsPayloadBuilder setThreadId(final String threadId); ApnsPayloadBuilder setTargetContentId(final String targetContentId); ApnsPayloadBuilder setSummaryArgument(final String summaryArgument); ApnsPayloadBuilder setSummaryArgumentCount(final Integer summaryArgumentCount); ApnsPayloadBuilder setUrlArguments(final List<String> arguments); ApnsPayloadBuilder setUrlArguments(final String... arguments); ApnsPayloadBuilder addCustomProperty(final String key, final Object value); abstract String build(); abstract String buildMdmPayload(final String pushMagicValue); static final String[] EMPTY_STRING_ARRAY; static final String DEFAULT_SOUND_FILENAME; }### Answer:
@Test void testAddCustomProperty() throws ParseException { final String customKey = "string"; final String customValue = "Hello"; this.builder.addCustomProperty(customKey, customValue); final Map<String, Object> payload = new JsonParser().parseJsonObject(this.builder.build()); assertEquals(customValue, payload.get(customKey)); }