docs: public void moveMessage(boolean discard) throws SIMPControllableNotFoundException, SIMPRuntimeOperationFailedException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "moveMessage");
  
      assertValidControllable();
  
      SIMPTransactionManager txManager = messageProcessor.getTXManager();
  
      LocalTransaction tran = txManager.createLocalTransaction(false);
      long msgID = getMessageID();
      try
      {
        SIMPMessage msg = getSIMPMessage();     
        
        if(!discard)
        {
          ExceptionDestinationHandler edh = new ExceptionDestinationHandlerImpl(destination);
          UndeliverableReturnCode code =
            edh.handleUndeliverableMessage(
              msg.getMessage(),
              null,
              tran,
              SIRCConstants.SIRC0036_MESSAGE_ADMINISTRATIVELY_REROUTED_TO_EXCEPTION_DESTINATION, //TODO get proper messages!
              new String[]{""+msgID,
                           destination.toString(),
                           messageProcessor.getMessagingEngineName()});          
          if(code == UndeliverableReturnCode.OK || code == UndeliverableReturnCode.DISCARD)
          {
            discard = true;
          }
          else
          {
            SIMPRuntimeOperationFailedException finalE =
              new SIMPRuntimeOperationFailedException(
                nls.getFormattedMessage(
                  "INTERNAL_MESSAGING_ERROR_CWSIP0002",
                  new Object[] {"TransmitMessageRequest.moveMessage",
                                "1:328:1.48",
                                code},
                  null));
    
            SibTr.exception(tc, finalE);
            if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) 
              SibTr.exit(tc, "moveMessage", finalE);
            throw finalE;          
          }
        }
        
        if(discard)
        {      
          Transaction msTran = messageProcessor.resolveAndEnlistMsgStoreTransaction(tran);
          aoStream.syncRemoveValueTick(tick, msTran, msg);  
        }
        
        // Commit the tran
        tran.commit();
      }
      catch (SIException e)
      {
        FFDCFilter.processException(
          e,
          "com.ibm.ws.sib.processor.runtime.TransmitMessageRequest.moveMessage",
          "1:353:1.48",
          this);
  
        SIMPRuntimeOperationFailedException finalE =
          new SIMPRuntimeOperationFailedException(
            nls.getFormattedMessage(
              "INTERNAL_MESSAGING_ERROR_CWSIP0003",
              new Object[] {"TransmitMessageRequest.moveMessage",
                            "1:361:1.48",
                            e,
                            new Long(msgID)},
              null), e);
  
        SibTr.exception(tc, finalE);
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) 
          SibTr.exit(tc, "moveMessage", finalE);
        throw finalE;
      }    
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())  
        SibTr.exit(tc, "moveMessage");
    }