docs: @Override
      public void localTransactionCommitted(ConnectionEvent event) {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.entry(this, tc, "localTransactionCommitted");
          }
  
          if (event.getId() == ConnectionEvent.LOCAL_TRANSACTION_COMMITTED) {
  
              if (mcWrapper.involvedInTransaction()) {
  
                  /*
                   * The ManagedConnection is associated with a transaction.
                   * Delist the ManagedConnection from the transaction and
                   * postpone release of the connection until transaction finishes.
                   */
  
                  TranWrapper wrapper = null;
                  try {
                      wrapper = mcWrapper.getCurrentTranWrapper();
                      wrapper.delist();
                  } catch (ResourceException e) {
                      // Can't delist, something went wrong.
                      //  Destroy the connection(s) so it can't cause any future problems.
                      FFDCFilter.processException(e, "com.ibm.ejs.j2c.ConnectionEventListener.localTransactionCommitted", "316", "this");
                      // add datasource name to message
                      Tr.error(tc, "DELIST_FAILED_J2CA0073", "localTransactionCommitted", e, mcWrapper.gConfigProps.cfName);
                      // Moved event.getSource() inside of catch block for performance reasons
                      ManagedConnection mc = null;
                      try {
                          mc = (ManagedConnection) event.getSource();
                      } catch (ClassCastException cce) {
                          Tr.error(tc, "GET_SOURCE_CLASS_CAST_EXCP_J2CA0098", cce);
                          throw new IllegalStateException("ClassCastException occurred attempting to cast event.getSource to ManagedConnection");
                      }
                      ConnectionEvent errorEvent = new ConnectionEvent(mc, ConnectionEvent.CONNECTION_ERROR_OCCURRED);
                      this.connectionErrorOccurred(errorEvent);
                      RuntimeException rte = new IllegalStateException(e.getMessage());
                      throw rte;
                  }
              } else {
                  // if we are not involved in a transaction, then we are likely running with NO transaction
                  //  context on the thread.  This case currently needs to be supported because
                  //  servlets can spin their own threads which would not have context.
                  // Note: it is very rare that users do this.  All other occurances are
                  //  considered to be an error.
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                      Tr.exit(this, tc, "localTransactionCommitted", "no transaction context, return without delisting");
                  }
                  return;
              }
          } else {
              // Connection Event passed in doesn't match the method called.
              // This should never happen unless there is an error in the ResourceAdapter.
              processBadEvent("localTransactionCommitted", ConnectionEvent.LOCAL_TRANSACTION_COMMITTED, event);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              Tr.exit(this, tc, "localTransactionCommitted");
          }
          return;
  
      }