private static GsonBuilder createGsonBuilder() {
RuntimeTypeAdapterFactory<Body> req = RuntimeTypeAdapterFactory.of(Body.class, "a")
.registerSubtype(ErrorResponse.class, Action.ERROR_RESPONSE.ordinal())
.registerSubtype(CommandInsertRequest.class, Action.COMMAND_INSERT_REQUEST.ordinal())
.registerSubtype(CommandInsertResponse.class, Action.COMMAND_INSERT_RESPONSE.ordinal())
.registerSubtype(CommandSearchRequest.class, Action.COMMAND_SEARCH_REQUEST.ordinal())
.registerSubtype(CommandSearchResponse.class, Action.COMMAND_SEARCH_RESPONSE.ordinal())
.registerSubtype(CommandSubscribeRequest.class, Action.COMMAND_SUBSCRIBE_REQUEST.ordinal())
.registerSubtype(CommandSubscribeResponse.class, Action.COMMAND_SUBSCRIBE_RESPONSE.ordinal())
.registerSubtype(CommandUnsubscribeRequest.class, Action.COMMAND_UNSUBSCRIBE_REQUEST.ordinal())
.registerSubtype(CommandUnsubscribeResponse.class, Action.COMMAND_UNSUBSCRIBE_RESPONSE.ordinal())
.registerSubtype(CommandUpdateSubscribeRequest.class, Action.COMMAND_UPDATE_SUBSCRIBE_REQUEST.ordinal())
.registerSubtype(CommandUpdateSubscribeResponse.class, Action.COMMAND_UPDATE_SUBSCRIBE_RESPONSE.ordinal())
.registerSubtype(CommandUpdateRequest.class, Action.COMMAND_UPDATE_REQUEST.ordinal())
.registerSubtype(CommandsUpdateRequest.class, Action.COMMANDS_UPDATE_REQUEST.ordinal())
.registerSubtype(NotificationSearchRequest.class, Action.NOTIFICATION_SEARCH_REQUEST.ordinal())
.registerSubtype(NotificationSearchResponse.class, Action.NOTIFICATION_SEARCH_RESPONSE.ordinal())
.registerSubtype(NotificationInsertRequest.class, Action.NOTIFICATION_INSERT_REQUEST.ordinal())
.registerSubtype(NotificationInsertResponse.class, Action.NOTIFICATION_INSERT_RESPONSE.ordinal())
.registerSubtype(NotificationSubscribeRequest.class, Action.NOTIFICATION_SUBSCRIBE_REQUEST.ordinal())
.registerSubtype(NotificationSubscribeResponse.class, Action.NOTIFICATION_SUBSCRIBE_RESPONSE.ordinal())
.registerSubtype(NotificationUnsubscribeRequest.class, Action.NOTIFICATION_UNSUBSCRIBE_REQUEST.ordinal())
.registerSubtype(NotificationUnsubscribeResponse.class, Action.NOTIFICATION_UNSUBSCRIBE_RESPONSE.ordinal())
.registerSubtype(NotificationEvent.class, Action.NOTIFICATION_EVENT.ordinal())
.registerSubtype(CommandEvent.class, Action.COMMAND_EVENT.ordinal())
.registerSubtype(CommandUpdateEvent.class, Action.COMMAND_UPDATE_EVENT.ordinal())
.registerSubtype(CommandsUpdateEvent.class, Action.COMMANDS_UPDATE_EVENT.ordinal())