docs: protected JCATranWrapper findTxWrapper(int timeout, Xid xid, String providerId) throws WorkCompletedException
      {
          if (tc.isEntryEnabled()) Tr.entry(tc, "findTxWrapper", new Object[] { timeout, xid, providerId });
  
          final JCATranWrapper txWrapper;
          final ByteArray key = new ByteArray(xid.getGlobalTransactionId());
  
          synchronized (txnTable)
          {
              if (!txnTable.containsKey(key))
              {
                  // XID has not been encountered - create a new TransactionImpl and add it to the table
                  
                  // ......unless we're quiescing
                  if(!((TranManagerSet)TransactionManagerFactory.getTransactionManager()).isQuiesced())
                  {
                      final JCARecoveryData jcard = (JCARecoveryData) ((TranManagerSet)TransactionManagerFactory.getTransactionManager()).registerJCAProvider(providerId);
  
                      try
                      {
                          jcard.logRecoveryEntry();
                      }
                      catch(Exception e)
                      {
                          if (tc.isEntryEnabled()) Tr.exit(tc, "findTxWrapper", e);
                          throw new WorkCompletedException(e.getLocalizedMessage(), WorkException.TX_RECREATE_FAILED);
                      }
  
                      // Create a new wrapper, suspend any transaction, create the new TransactionImpl and mark associated
                      txWrapper = createWrapper(timeout, xid, jcard);
                      
                      txnTable.put(key, txWrapper);
                  }
                  else
                  {
                      if (tc.isEntryEnabled()) Tr.exit(tc, "findTxWrapper", "quiescing");
                      throw new WorkCompletedException("In quiesce period", WorkException.TX_RECREATE_FAILED);
                  }
              }
              else
              {
                  // XID has already been imported, retrieve JCATranWrapper from table
                  if (tc.isEventEnabled()) Tr.event(tc, "Already encountered", key);
  
                  txWrapper = txnTable.get(key);
  
                  // If we already had an association, return null so
                  // caller knows to throw an exception.
                  if (!txWrapper.hasAssociation())
                  {
                      // If we were already prepared, return null so
                      // caller knows to throw an exception.
                      if (!txWrapper.isPrepared())
                      {
                          txWrapper.addAssociation();
                      }
                      else
                      {
                          if (tc.isEntryEnabled()) Tr.exit(tc, "findTxWrapper", "already prepared");
                          return null;
                      }
                  }
                  else
                  {
                      if (tc.isEntryEnabled()) Tr.exit(tc, "findTxWrapper", "already associated");
                      return null;
                  }
  
                  // d240298 - Suspend any local transaction before we return,
                  // save it in the wrapper for resuming later
                  txWrapper.suspend();   // @D240298A
              }
          }
  
          if (tc.isEntryEnabled()) Tr.exit(tc, "findTxWrapper", txWrapper);
          return txWrapper;
      }