docs: public synchronized void cancelMessageRequest(boolean discard)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "cancelMessageRequest", new Boolean(discard));
        
      SIMPTransactionManager txManager = messageProcessor.getTXManager();
      LocalTransaction tran = null;
      
      try
      {
        MessageItem msg = (MessageItem)getSIMPMessage();
        
        
        if(discard)
        {
          if(msg!=null)
          {
            tran = txManager.createLocalTransaction(false);
            Transaction msTran = messageProcessor.resolveAndEnlistMsgStoreTransaction(tran);
  
            // Cleanup the AOValue and the Msg
            aoStream.syncRemoveValueTick(tick, msTran, msg);
            
            tran.commit();
          }
          else
          {
            //if the request was not in the value state, then we simply expire
            //the request
            aoStream.expiredRequest(tick, true);          
          }
        }
        else
        {  
          if(msg!=null) 
          {          
            tran = txManager.createLocalTransaction(false);
            Transaction msTran = messageProcessor.resolveAndEnlistMsgStoreTransaction(tran);
            
            // Cleanup the AOValue
            aoStream.syncRemoveValueTick(tick, msTran, null);
            
            if(msg.isInStore())
            {
              long lockID = msg.getLockID();
              if(lockID!=AbstractItem.NO_LOCK_ID)
              {
                //unlock the message for others to consume it etc
                msg.unlockMsg(lockID, msTran, true);
              }  
            }
            tran.commit();
          }
          else
            //if the request was not in the value state, then we simply expire
            //the request
            aoStream.expiredRequest(tick, true); 
        }
      }
      catch(MessageStoreException e)
      {
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.runtime.TransmitMessageRequest.cancelMessageRequest",
          "1:644:1.48",
          this); 
          
        SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
          new Object[] { "com.ibm.ws.sib.processor.runtime.TransmitMessageRequest.cancelMessageRequest", 
                         "1:649:1.48", 
                         SIMPUtils.getStackTrace(e) });
        SibTr.exception(tc, e);
        
        try
        {
          if (tran!=null)
            tran.rollback();
        }
        catch (SIException ee)
        {
          // No FFDC code needed
          SibTr.exception(tc, e);
        }
      }
      catch (SIException e)
      {
        FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.runtime.TransmitMessageRequest.cancelMessageRequest",
            "1:669:1.48",
            this); 
            
          SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
            new Object[] { "com.ibm.ws.sib.processor.runtime.TransmitMessageRequest.cancelMessageRequest", 
                           "1:674:1.48", 
                           SIMPUtils.getStackTrace(e) });
          SibTr.exception(tc, e); 
          
          try
          {
            if (tran!=null)
              tran.rollback();
          }
          catch (SIException ee)
          {
            // No FFDC code needed
            SibTr.exception(tc, e);
          }
  
      }  
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "cancelMessageRequest");
    }