@Override
  public String addItemListener(final ItemListener<E> listener, final boolean includeValue) {
    ClientMessage request = QueueAddListenerCodec.encodeRequest(name, includeValue);

    EventHandler<ClientMessage> eventHandler = new ItemEventHandler(includeValue, listener);
    ClientMessageDecoder responseDecoder =
        new ClientMessageDecoder() {
          @Override
          public <T> T decodeClientMessage(ClientMessage clientMessage) {
            return (T) MapAddEntryListenerWithPredicateCodec.decodeResponse(clientMessage).response;
          }
        };
    return listen(request, getPartitionKey(), eventHandler, responseDecoder);
  }
 @Override
 protected ClientMessage encodeResponse(Object response) {
   return QueueAddListenerCodec.encodeResponse((String) response);
 }
 @Override
 protected QueueAddListenerCodec.RequestParameters decodeClientMessage(
     ClientMessage clientMessage) {
   return QueueAddListenerCodec.decodeRequest(clientMessage);
 }