docs: public boolean delist(BeanO beanO)
                      throws TransactionRolledbackException
      {
          final boolean isTraceOn = TraceComponent.isAnyTracingEnabled(); // d532639.2
  
          if (isTraceOn && tc.isEntryEnabled())
              Tr.entry(tc, "delist",
                       new Object[] { Boolean.valueOf(globalTransaction), this, beanO });
  
          boolean removed = false; // d145697
  
          ensureActive();
  
          if (beanOs == null) { // d111555
              if (isTraceOn && tc.isEntryEnabled())
                  Tr.exit(tc, "delist : false : no beanOs");
              return removed;
          }
  
          //synchronized(beanOs)  //d173022.2
          //{
          // Can't delist after beforeCompletion                          d132828
          if (origLock == true) {
              if (isTraceOn && tc.isEventEnabled()) // d144064
                  Tr.event(tc, "Attempt to delist after beforeCompletion");
              throw new RuntimeException("Delisted after starting beforeCompletion");
          } else {
              // Only remove the BeanO from the transaction if it was already
              // enlisted. Note that only this specific BeanO is removed, not
              // just any BeanO that may have the same beanId.             d145697
              if (beanOList.contains(beanO)) {
                  beanOs.remove(beanO.beanId);
                  beanOList.remove(beanOList.indexOf(beanO));
                  afterList.remove(afterList.indexOf(beanO));
                  removed = true;
  
                  // If CMP 2.0 bean, remove from CMP 2.0 list that is sorted
                  // by home.... used for intelligent flush.             d140003.22
                  if (beanO.home.beanMetaData.cmpVersion == InternalConstants.CMP_VERSION_2_X)
                  {
                      ArrayList<BeanO> bundle =
                                      homesForPMManagedBeans.get(beanO.home);
  
                      bundle.remove(bundle.lastIndexOf(beanO));
                  }
              }
          }
          //}
  
          if (isTraceOn && tc.isEntryEnabled()) // d144064
              Tr.exit(tc, "delist : " + removed);
  
          return removed; // d145697
      }