Buggy code:
public class WebSphereUowTransactionManager extends JtaTransactionManager implements CallbackPreferringPlatformTransactionManager { public static final String DEFAULT_UOW_MANAGER_NAME = "java:comp//websphere//UOWManager" ; private UOWManager uowManager ; private String uowManagerName ; public WebSphereUowTransactionManager ( ) { } public WebSphereUowTransactionManager ( UOWManager uowManager ) { } public void setUowManager ( UOWManager uowManager ) { } public void setUowManagerName ( String uowManagerName ) { } @ Override public void afterPropertiesSet ( ) throws TransactionSystemException { } protected UOWManager lookupUowManager ( String uowManagerName ) throws TransactionSystemException { } protected UOWManager lookupDefaultUowManager ( ) throws TransactionSystemException { } @ Override protected void doRegisterAfterCompletionWithJtaTransaction ( JtaTransactionObject txObject , List < TransactionSynchronization > synchronizations ) { } @ Override public boolean supportsResourceAdapterManagedTransactions ( ) { } public < T > T execute ( TransactionDefinition definition , TransactionCallback < T > callback ) throws TransactionException { if ( definition == null ) { definition = new DefaultTransactionDefinition ( ) ; } if ( ( definition . getTimeout ( ) ) < ( TransactionDefinition . TIMEOUT_DEFAULT ) ) { throw new org . springframework . transaction . InvalidTimeoutException ( "Invalid<seq2seq4repair_space>transaction<seq2seq4repair_space>timeout" , definition . getTimeout ( ) ) ; } int pb = definition . getPropagationBehavior ( ) ; boolean existingTx = ( ( this . uowManager . getUOWStatus ( ) ) != ( UOWSynchronizationRegistry . UOW_STATUS_NONE ) ) && ( ( this . uowManager . getUOWType ( ) ) != ( UOWSynchronizationRegistry . UOW_TYPE_LOCAL_TRANSACTION ) ) ; int uowType = UOWSynchronizationRegistry . UOW_TYPE_GLOBAL_TRANSACTION ; boolean joinTx = false ; boolean newSynch = false ; if ( existingTx ) { if ( pb == ( TransactionDefinition . PROPAGATION_NEVER ) ) { throw new IllegalTransactionStateException ( "Transaction<seq2seq4repair_space>propagation<seq2seq4repair_space>'never'<seq2seq4repair_space>but<seq2seq4repair_space>existing<seq2seq4repair_space>transaction<seq2seq4repair_space>found" ) ; } if ( pb == ( TransactionDefinition . PROPAGATION_NESTED ) ) { throw new NestedTransactionNotSupportedException ( "Transaction<seq2seq4repair_space>propagation<seq2seq4repair_space>'nested'<seq2seq4repair_space>not<seq2seq4repair_space>supported<seq2seq4repair_space>for<seq2seq4repair_space>WebSphere<seq2seq4repair_space>UOW<seq2seq4repair_space>transactions" ) ; } if ( ( ( pb == ( TransactionDefinition . PROPAGATION_SUPPORTS ) ) || ( pb == ( TransactionDefinition . PROPAGATION_REQUIRED ) ) ) || ( pb == ( TransactionDefinition . PROPAGATION_MANDATORY ) ) ) { joinTx = true ; newSynch = ( getTransactionSynchronization ( ) ) != ( SYNCHRONIZATION_NEVER ) ; } else if ( pb == ( TransactionDefinition . PROPAGATION_NOT_SUPPORTED ) ) { uowType = UOWSynchronizationRegistry . UOW_TYPE_LOCAL_TRANSACTION ; newSynch = ( getTransactionSynchronization ( ) ) == ( SYNCHRONIZATION_ALWAYS ) ; } else { newSynch = ( getTransactionSynchronization ( ) ) != ( SYNCHRONIZATION_NEVER ) ; } } else { if ( pb == ( TransactionDefinition . PROPAGATION_MANDATORY ) ) { throw new IllegalTransactionStateException ( "Transaction<seq2seq4repair_space>propagation<seq2seq4repair_space>'mandatory'<seq2seq4repair_space>but<seq2seq4repair_space>no<seq2seq4repair_space>existing<seq2seq4repair_space>transaction<seq2seq4repair_space>found" ) ; } if ( ( ( pb == ( TransactionDefinition . PROPAGATION_SUPPORTS ) ) || ( pb == ( TransactionDefinition . PROPAGATION_NOT_SUPPORTED ) ) ) || ( pb == ( TransactionDefinition . PROPAGATION_NEVER ) ) ) { uowType = UOWSynchronizationRegistry . UOW_TYPE_LOCAL_TRANSACTION ; newSynch = ( getTransactionSynchronization ( ) ) == ( SYNCHRONIZATION_ALWAYS ) ; } else { newSynch = ( getTransactionSynchronization ( ) ) != ( SYNCHRONIZATION_NEVER ) ; } } boolean debug = logger . isDebugEnabled ( ) ; if ( debug ) { logger . debug ( ( ( ( "Creating<seq2seq4repair_space>new<seq2seq4repair_space>transaction<seq2seq4repair_space>with<seq2seq4repair_space>name<seq2seq4repair_space>[" + ( definition . getName ( ) ) ) + "]:<seq2seq4repair_space>" ) + definition ) ) ; } <START_BUG> SuspendedResourcesHolder suspendedResources = ( existingTx && ( ! joinTx ) ) ? suspend ( null ) : null ; <END_BUG> try { if ( ( definition . getTimeout ( ) ) > ( TransactionDefinition . TIMEOUT_DEFAULT ) ) { this . uowManager . setUOWTimeout ( uowType , definition . getTimeout ( ) ) ; } if ( debug ) { logger . debug ( ( ( ( "Invoking<seq2seq4repair_space>WebSphere<seq2seq4repair_space>UOW<seq2seq4repair_space>action:<seq2seq4repair_space>type=" + uowType ) + ",<seq2seq4repair_space>join=" ) + joinTx ) ) ; } WebSphereUowTransactionManager . UOWActionAdapter < T > action = new WebSphereUowTransactionManager . UOWActionAdapter < T > ( definition , callback , ( uowType == ( UOWManager . UOW_TYPE_GLOBAL_TRANSACTION ) ) , ( ! joinTx ) , newSynch , debug ) ; this . uowManager . runUnderUOW ( uowType , joinTx , action ) ; if ( debug ) { logger . debug ( ( ( ( "Returned<seq2seq4repair_space>from<seq2seq4repair_space>WebSphere<seq2seq4repair_space>UOW<seq2seq4repair_space>action:<seq2seq4repair_space>type=" + uowType ) + ",<seq2seq4repair_space>join=" ) + joinTx ) ) ; } return action . getResult ( ) ; } catch ( UOWException ex ) { throw new TransactionSystemException ( "UOWManager<seq2seq4repair_space>transaction<seq2seq4repair_space>processing<seq2seq4repair_space>failed" , ex ) ; } catch ( UOWActionException ex ) { throw new TransactionSystemException ( "UOWManager<seq2seq4repair_space>threw<seq2seq4repair_space>unexpected<seq2seq4repair_space>UOWActionException" , ex ) ; } finally { if ( suspendedResources != null ) { resume ( null , suspendedResources ) ; } } } private class UOWActionAdapter < T > implements UOWAction { private final TransactionDefinition definition ; private final TransactionCallback < T > callback ; private final boolean actualTransaction ; private final boolean newTransaction ; private final boolean newSynchronization ; private boolean debug ; private T result ; private Throwable exception ; public UOWActionAdapter ( TransactionDefinition definition , TransactionCallback < T > callback , boolean actualTransaction , boolean newTransaction , boolean newSynchronization , boolean debug ) { } public void run ( ) { } public T getResult ( ) { } } }

Fix:
SuspendedResourcesHolder suspendedResources = ( ! joinTx ) ? suspend ( null ) : null ;