docs: void rollbackTransaction() throws JMSException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "rollbackTransaction");
  
          try {
              if (rolledBackDueToConnectionFailure) { //PK60857
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      SibTr.debug(tc, "rolledBackDueToConnectionFailure = true");
                  }
                  // No-op'ing the rollback because it has already happened during the commit.
                  // This means rollback should never have been called, but some components insist on calling rollback after getting a TransactionRolledBackException.
                  return; // exit trace handled by the finally block
              }
  
              jcaSession.rollbackLocalTransaction();
              uncommittedReceiveCount = 0;
          } catch (javax.resource.spi.IllegalStateException ise) {
              // No FFDC code needed
              // d238447 FFDC review. IllegalState is thrown if the jcaSession is closed, which
              //   might occur in a badly coded app due to concurrent race. No FFDC.
              throw (javax.jms.IllegalStateException) JmsErrorUtils.newThrowable(javax.jms.IllegalStateException.class,
                                                                                 "EXCEPTION_RECEIVED_CWSIA0053",
                                                                                 new Object[] { ise, "JmsSessionImpl.rollbackTransaction (#1)" },
                                                                                 ise,
                                                                                 null, // null probeId = no FFDC
                                                                                 this,
                                                                                 tc
                              );
          } catch (javax.resource.spi.LocalTransactionException lte) {
              // No FFDC code needed
              // d222942 review - ok
              // d238447 FFDC review. LTE thrown when no transaction is in progress. JMS layer shouldn't
              //   get this, so generate FFDC to indicate something has gone wrong.
              throw (javax.jms.IllegalStateException) JmsErrorUtils.newThrowable(javax.jms.IllegalStateException.class,
                                                                                 "EXCEPTION_RECEIVED_CWSIA0053",
                                                                                 new Object[] { lte, "JmsSessionImpl.rollbackTransaction (#2)" },
                                                                                 lte,
                                                                                 "JmsSessionImpl.rollbackTransaction#2",
                                                                                 this,
                                                                                 tc
                              );
          } catch (Exception e) {
              // No FFDC code needed
              // d238447 FFDC review - generate FFDC.
              throw (JMSException) JmsErrorUtils.newThrowable(JMSException.class,
                                                              "EXCEPTION_RECEIVED_CWSIA0053",
                                                              new Object[] { e, "JmsSessionImpl.rollbackTransaction (#3)" },
                                                              e,
                                                              "JmsSessionImpl.rollbackTransaction#3",
                                                              this,
                                                              tc
                              );
          } finally {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(this, tc, "commitTransaction");
          }
      }