docs: protected void eventPostRollbackRemove(
                                             SIMPMessage msg,
                                             TransactionCommon transaction) throws SIResourceException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(
                          tc,
                          "eventPostRollbackRemove",
                          new Object[] { msg, transaction });
  
          // NB: ideally this would go in afterCompletion but we
          // dont have the transaction reference to register for the callback
          synchronized (orderLock)
          {
  
              // Remove the transaction from the transactionSet if applicable
              // Use the orderLock to synch with attachConsumer
              if (transactionSet != null)
              {
                  transactionSet.remove(transaction.getPersistentTranId());
                  if (transactionSet.isEmpty())
                  {
                      transactionSet = null;
                      // Get the consumer and resume it
                      consumerPoints.get(0).
                                      getConsumerPoint().
                                      resumeConsumer(DispatchableConsumerPoint.SUSPEND_FLAG_INITIAL_INDOUBTS);
                  }
              }
          }
  
          // 174107.1
          // Msgstore state model shows that rollback moves to locked state (IF the message
          // was removed under a lock).
          // We must explicitly unlock the message before finding a new consumer.
          try
          {
              if (!msg.isPersistentlyLocked())
              {
                  if (!msg.isHidden())
                  {
                      if (msg.isLocked())
                          msg.unlockMsg(msg.getLockID(), null, true);
                      else
                          msg.eventUnlocked();
                  }
              }
          } catch (MessageStoreException e)
          {
              // MessageStoreException shouldn't occur so FFDC.
              FFDCFilter.processException(
                                          e,
                                          "com.ibm.ws.sib.processor.impl.ConsumerDispatcher.eventPostRollbackRemove",
                                          "1:2618:1.280.5.25",
                                          this);
  
              SibTr.exception(tc, e);
              SibTr.error(tc, "INTERNAL_MESSAGING_ERROR_CWSIP0002",
                          new Object[] {
                                        "com.ibm.ws.sib.processor.impl.ConsumerDispatcher",
                                        "1:2625:1.280.5.25",
                                        e });
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "eventPostRollbackRemove", e);
  
              throw new SIResourceException(
                              nls.getFormattedMessage(
                                                      "INTERNAL_MESSAGING_ERROR_CWSIP0002",
                                                      new Object[] {
                                                                    "com.ibm.ws.sib.processor.impl.ConsumerDispatcher",
                                                                    "1:2636:1.280.5.25",
                                                                    e },
                                                      null),
                              e);
          }
          //do not want to call internalPut again yet - internalPut will be called from the
          //eventUnlocked callback
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "eventPostRollbackRemove");
      }