docs: public synchronized void inactivityTimeout() {
          final boolean traceOn = TraceComponent.isAnyTracingEnabled();
  
          if (traceOn && tc.isEntryEnabled())
              Tr.entry(tc, "inactivityTimeout", this);
  
          _inactivityTimerActive = false;
  
          if (_inactivityTimer != null) {
              try {
                  // important that this runs as part of synchronized block
                  // to prevent context being re-imported while processing.
                  _inactivityTimer.alarm();
              } catch (Throwable exc) {
                  FFDCFilter.processException(exc, "com.ibm.ws.tx.jta.TransactionImpl.inactivityTimeout", "2796", this);
                  if (traceOn && tc.isEventEnabled())
                      Tr.event(tc, "exception caught in inactivityTimeout", exc);
                  // swallow
              } finally {
                  _inactivityTimer = null;
              }
  
          } else {
              if (_activeAssociations <= 0) // off server ... do the rollback
              {
                  final EmbeddableTranManagerSet tranManager = (EmbeddableTranManagerSet) TransactionManagerFactory.getTransactionManager();
  
                  try {
                      // resume this onto the current thread and roll it back
                      tranManager.resume(this);
                      // PK15024
                      // If there is a superior server involved in this transaction, make sure it is told about this inactivity timeout.
                      try {
                          tranManager.setRollbackOnly();
                      } catch (Exception e) {
                          FFDCFilter.processException(e, "com.ibm.ws.Transaction.JTA.TransactionImpl.inactivityTimeout", "4353", this);
                          if (traceOn && tc.isDebugEnabled())
                              Tr.debug(tc, "inactivityTimeout setRollbackOnly threw exception", e);
                      }
                      // Mark it so that a bean on the superior server can test its status on return.
                      // PK15024
                      tranManager.rollback();
                  } catch (Exception ex) {
                      if (traceOn && tc.isDebugEnabled())
                          Tr.debug(tc, "inactivityTimeout resume/rollback threw exception", ex);
                      // swallow this exception
                      // main timeout may have already rolled back!
                  }
              }
          }
  
          if (traceOn && tc.isEntryEnabled())
              Tr.exit(tc, "inactivityTimeout");
      }