private static class MessageTypeDeserializer extends JsonDeserializer<MessageType> {
@Override
public MessageType deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException {
final ObjectCodec oc = jp.getCodec();
final JsonNode node = oc.readTree(jp);
final JsonNode messageTypeNode = node.get(MessageType.MESSSAGE_TYPE_FIELD);
return new MessageType() {
@Override
public Type getMessageType() {
if (messageTypeNode == null) {