docs: private void processDestinationListenerCallback (CommsByteBuffer buffer, Conversation conversation) {
       if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "processDestinationListenerCallback", new Object[]{buffer, conversation});
  
       final ClientConversationState convState = (ClientConversationState) conversation.getAttachment();
       final SICoreConnection connection = convState.getSICoreConnection();
  
       final short connectionObjectId                = buffer.getShort();
       final short destinationListenerId             = buffer.getShort();
       final SIDestinationAddress destinationAddress = buffer.getSIDestinationAddress(conversation.getHandshakeProperties().getFapLevel());
       final short destinationAvailabilityShort      = buffer.getShort();
  
       if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "connectionObjectId="+connectionObjectId);
       if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "destinationListenerId="+destinationListenerId);
       if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "destinationAddress="+destinationAddress);
  
       DestinationAvailability destinationAvailability = null;
       if (destinationAvailabilityShort != CommsConstants.NO_DEST_AVAIL) {
         destinationAvailability = DestinationAvailability.getDestinationAvailability(destinationAvailabilityShort);
       }
       if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "destinationAvailability="+destinationAvailability);
  
       // Look up the real DestinationListener in the local DestinationListenerCache
  
       final DestinationListenerCache destinationListenerCache = convState.getDestinationListenerCache();
       final DestinationListener destinationListener = destinationListenerCache.get(destinationListenerId);
  
       if (destinationListener != null) {
          //Call the listener on a seperate thread.
          ClientAsynchEventThreadPool.getInstance().dispatchDestinationListenerEvent(connection, destinationAddress, destinationAvailability, destinationListener);
       } else {
         if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "DestinationListener id="+destinationListenerId+" not found in DestinationListenerCache");
         if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, destinationListenerCache.toString());
  
         SIErrorException e = new SIErrorException(nls.getFormattedMessage("UNABLE_TO_FIND_DESTINATION_LISTENER_SICO8019", new Object[] {Short.valueOf(destinationListenerId)}, null));
         FFDCFilter.processException(e, CLASS_NAME + ".processDestinationListenerCallback", CommsConstants.PROXYRECEIVELISTENER_DESTLIST_CALLBACK_02, this);
  
         SibTr.error(tc, "UNABLE_TO_FIND_DESTINATION_LISTENER_SICO8019", e);
         throw e;
       }
  
       if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "processDestinationListenerCallback");
     }