docs: public void enlist(OnePhaseXAResource resource) throws IllegalStateException, LTCSystemException
      {
  
          if (tc.isEntryEnabled()) Tr.entry(tc, "enlist", resource);
  
          /* Rollup of MD19518
          if ((_current == null) || (_current.globalTranExists()))
          {
              IllegalStateException ise = new IllegalStateException("Cannot enlist Resource. A Global transaction is active.");
              FFDCFilter.processException(ise, "com.ibm.tx.ltc.LocalTranCoordImpl.enlist", "326", this);
              Tr.error(tc,"ERR_ENLIST_TX_GLB_ACT");
              if (tc.isEntryEnabled()) Tr.exit(tc, "enlist", ise);
              throw ise;
          } end rollup of MD19518 */
  
          if (_cleanupResources != null)
          {
              final IllegalStateException ise = new IllegalStateException("Cannot enlist Resource. This LTC scope is being used for cleanup.");
              FFDCFilter.processException(ise, "com.ibm.tx.ltc.LocalTranCoordImpl.enlist", "335", this);
              Tr.error(tc,"ERR_ENLIST_TX_CLEANUP");
              if (tc.isEntryEnabled()) Tr.exit(tc, "enlist", ise);
              throw ise;
          }
  
          if (_rollbackOnly)
          {
              final IllegalStateException ise = new IllegalStateException("Cannot enlist Resource. LocalTransaction is marked RollbackOnly.");
              FFDCFilter.processException(ise, "com.ibm.tx.ltc.LocalTranCoordImpl.enlist", "344", this);
              Tr.error(tc, "ERR_STATE_RB_ONLY");
              if (tc.isEntryEnabled()) Tr.exit(tc, "enlist", ise);
              throw ise;
          }
  
          // d131059.1 IllegalState matches global transaction behaviour
          if (resource == null)
          {
              final IllegalStateException ise = new IllegalStateException("enlist failed. Resource specified was null.");
              FFDCFilter.processException(ise, "com.ibm.tx.ltc.LocalTranCoordImpl.enlist", "354", this);
              if (tc.isEntryEnabled()) Tr.exit(tc, "enlist", ise);
              throw ise;
          }
  
          if ((_state != Running) && (_state != Suspended))
          {
              final IllegalStateException ise = new IllegalStateException("Cannot enlist Resource. LocalTransaction is completing or completed.");
              FFDCFilter.processException(ise, "com.ibm.tx.ltc.LocalTranCoordImpl.enlist", "362", this);
              Tr.error(tc, "ERR_ENLIST_LTC_COMPLETE");
              if (tc.isEntryEnabled()) Tr.exit(tc, "enlist", ise);
              throw ise;
          }
  
          //
          // Need to begin the LocalTransaction
          // by calling the resource.
          //
          try
          {
              resource.start(null, 0);
              //
              // Finally, need to add the resource to our internal collection
              // so that it can be driven to completion when necessary.
              //
              if (_enlistedResources == null)
              {
                  _enlistedResources = new ArrayList<OnePhaseXAResource>();
  
                  // Now we need to get the rest of the LTC config to see how to end the LTC
                  getComponentMetadataForLTC();
  
                  // This is the first resource (local transaction) to be enlisted with the LTC. 
                  // Record this with the performance monitor as the start point for the
                  // 'LocalTransaction'. In fact multiple resources local transactions can become
                  // involved with the LTC and we are going to track them collectively rather
                  // than individually.
  
                  startTime = perfStarted();
              }
  
              _enlistedResources.add(resource);
          }
          catch (XAException xe)
          {
              FFDCFilter.processException(xe, "com.ibm.tx.ltc.LocalTranCoordImpl.enlist", "232", this);
              Tr.error(tc, "ERR_XA_RESOURCE_START", new Object[] {resource.getResourceName(), xe});
              // Raise an exception to indicate failure
              final LTCSystemException ltcse = new LTCSystemException("Resource enlistment failed due to failure in xa_start.");
              if (tc.isEntryEnabled()) Tr.exit(tc, "enlist", ltcse);
              throw ltcse;
          }
  
          if (tc.isEntryEnabled()) Tr.exit(tc, "enlist");
      }