docs: public void deleteMessages(SIMessageHandle[] msgHandles,
                                SITransaction tran,
                                int priority)
        throws SISessionUnavailableException, SISessionDroppedException,
               SIConnectionUnavailableException, SIConnectionDroppedException,
               SIResourceException, SIConnectionLostException, SILimitExceededException,
               SIIncorrectCallException, SIMessageNotLockedException,
               SIErrorException
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "deleteMessages", new Object[]{msgHandles, tran, priority});
  
        if (TraceComponent.isAnyTracingEnabled()) {
          CommsLightTrace.traceMessageIds(tc, "DeleteMsgTrace", msgHandles);
        }
  
        if (sessionId == 0)
        {
           // If the session Id = 0, then no one called setSessionId(). As such we are unable to flow
           // to the server as we do not know which session to instruct the server to use.
           SIErrorException e = new SIErrorException(
              nls.getFormattedMessage("SESSION_ID_HAS_NOT_BEEN_SET_SICO1043", null, null)
           );
  
           FFDCFilter.processException(e, CLASS_NAME + ".deleteMessages",
                                       CommsConstants.CONVERSATIONHELPERIMPL_08, this);
  
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, e.getMessage(), e);
  
           throw e;
        }
  
        if (msgHandles == null)
        {
           // Some null message id's are no good to us
           SIErrorException e = new SIErrorException(
              nls.getFormattedMessage("NULL_MESSAGE_IDS_PASSED_IN_SICO1044", null, null)
           );
  
           FFDCFilter.processException(e, CLASS_NAME + ".deleteMessages",
                                       CommsConstants.CONVERSATIONHELPERIMPL_09, this);
  
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, e.getMessage(), e);
  
           throw e;
        }
  
        CommsByteBuffer request = getCommsByteBuffer();
        // Connection object id
        request.putShort(connectionObjectId);
        // Consumer session id
        request.putShort(sessionId);
        // Transaction id
        request.putSITransaction(tran);
        // Number of msgIds sent
        request.putSIMessageHandles(msgHandles);
  
        // Pass on call to server - note that if we are transacted we only fire and forget.
        // If not, we exchange.
        if (tran == null)
        {
           final CommsByteBuffer reply = jfapExchange(request,
                                                      JFapChannelConstants.SEG_DELETE_SET,
                                                      priority,
                                                      true);
  
           // Confirm appropriate data returned
           try
           {
              short err = reply.getCommandCompletionCode(JFapChannelConstants.SEG_DELETE_SET_R);
              if (err != CommsConstants.SI_NO_EXCEPTION)
              {
                 checkFor_SISessionUnavailableException(reply, err);
                 checkFor_SISessionDroppedException(reply, err);
                 checkFor_SIConnectionUnavailableException(reply, err);
                 checkFor_SIConnectionDroppedException(reply, err);
                 checkFor_SIConnectionLostException(reply, err);
                 checkFor_SIResourceException(reply, err);
                 checkFor_SILimitExceededException(reply, err);
                 checkFor_SIIncorrectCallException(reply, err);
                 checkFor_SIMessageNotLockedException(reply, err);
                 checkFor_SIErrorException(reply, err);
                 defaultChecker(reply, err);
              }
           }
           finally
           {
              if (reply != null) reply.release();
           }
        }
        else
        {
           jfapSend(request,
                    JFapChannelConstants.SEG_DELETE_SET_NOREPLY,
                    priority,
                    true,
                    ThrottlingPolicy.BLOCK_THREAD);
        }
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "deleteMessages");
     }