private static class AckDeserializer extends JsonDeserializer<AckMessageImpl> {
@Override
public AckMessageImpl deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException {
final ObjectCodec oc = jp.getCodec();
final JsonNode node = oc.readTree(jp);
final JsonNode acksNode = node.get(AckMessage.UPDATES_FIELD);
final Set<Ack> acks = new HashSet<Ack>();
if (acksNode.isArray()) {
for (JsonNode ackNode : acksNode) {
acks.add(new AckImpl(ackNode.get("channelID").asText(), ackNode.get("version").asLong()));