docs: protected void suspendTransaction() {
          //create local variable - JIT performance improvement
          final boolean isTraceOn = com.ibm.websphere.ras.TraceComponent.isAnyTracingEnabled();
          if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
              LoggingUtil.SESSION_LOGGER_WAS.entering(methodClassName, methodNames[SUSPEND_TRANSACTION]);
          }
          Object[] suspendedTx = { null, null }; // PM56632
          //        UOWCurrent uowCurrent = TransactionManagerFactory.getUOWCurrent();
          UOWCurrent uowCurrent = this.getDatabaseStoreService().getUOWCurrent();
          UOWCoordinator uowCoord = uowCurrent.getUOWCoord();
          //        LocalTransactionCurrent ltCurrent = TransactionManagerFactory.getLocalTransactionCurrent(); //d120870.2
          LocalTransactionCurrent ltCurrent = this.getDatabaseStoreService().getLocalTransactionCurrent();
  
          if (uowCoord == null) {
              // There is no Global or Local Transaction
              // We must start a LocalTransaction
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[SUSPEND_TRANSACTION], "No Global or Local Transaction exists");
              }
          } else if (!uowCoord.isGlobal()) {
              // There is a LocalTransaction, it must be suspended
              // and a new LocalTransaction begun
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[SUSPEND_TRANSACTION], "LocalTransaction is active so suspend");
              }
              // Suspend the LocalTransaction and return the LocalTransactionCoordinator as an Object
              suspendedTx[0] = (Object) ltCurrent.suspend();
  
          } else {
              // else we have a global transaction
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[SUSPEND_TRANSACTION], "Global Transaction is Active");
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[SUSPEND_TRANSACTION], "Global Transaction is Active so suspend");
              }
              try {
                  //                suspendedTx = TransactionManagerFactory.getTransactionManager().suspend();
                  suspendedTx[0] = this.getDatabaseStoreService().getEmbeddableWebSphereTransactionManager().suspend();
              } catch (Throwable th) {
                  // Only required as JTA specifies exception, but implementation never throws one
              }
              // START: PM56632 need to check if there is a local transaction since global suspend does not suspend local transaction
              uowCoord = this.getDatabaseStoreService().getUOWCurrent().getUOWCoord();
              if (uowCoord != null && !uowCoord.isGlobal()) {
                  if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                      LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[SUSPEND_TRANSACTION], "LocalTransaction is active after global suspend");
                  }
                  // Suspend the LocalTransaction and return the LocalTransactionCoordinator as an Object
                  suspendedTx[1] = (Object) ltCurrent.suspend();
              }
              // END: PM56632
          }
  
          if (suspendedTx[0] != null || suspendedTx[1] != null)
              suspendedTransactions.put(Thread.currentThread(), suspendedTx);
  
          try {
              if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINE)) {
                  LoggingUtil.SESSION_LOGGER_WAS.logp(Level.FINE, methodClassName, methodNames[SUSPEND_TRANSACTION], "Starting a Local Transaction");
              }
              //            ltCurrent.begin();
              boolean boundaryIsAS = false; // true if the boundary is ActivitySession; false if the boundary is BeanMethod
              boolean unresActionIsCommit = false; // true if the unresolved action is commit; false if it is rollback
              boolean resolverIsCAB = false; // true if the resolver is ContainerAtBoundary; false if it is Application
              //          The following Starts a new LTC scope and associates it with the current thread.
              //          The configuration of the LTC is determined by the caller rather than via J2EE component metadata.
              //          Throws IllegalStateException if the LocalTransactionCoordinator is not in a
              //          valid state to execute the operation, for example if a global transaction is active.
              ltCurrent.begin(boundaryIsAS, unresActionIsCommit, resolverIsCAB);
          } catch (Exception ex) {
              // Absorb any exception to ensure we still exit cleanly and resume
              // any suspended LTC in postInvoke.
              LoggingUtil.SESSION_LOGGER_WAS.logp(Level.SEVERE, methodClassName, methodNames[SUSPEND_TRANSACTION], "DatabaseHashMap.cantstartLTC");
          }
  
          if (isTraceOn && LoggingUtil.SESSION_LOGGER_WAS.isLoggable(Level.FINER)) {
              LoggingUtil.SESSION_LOGGER_WAS.exiting(methodClassName, methodNames[SUSPEND_TRANSACTION]);
          }
      }