docs: @Override
      final public void destroy() throws ResourceException {
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.entry(this, TRACE, "destroy");
          }
  
          // Invalidate all of the sessions
  
          for (final Iterator iterator = _sessions.iterator(); iterator.hasNext();) {
  
              final Object object = iterator.next();
              if (object instanceof JmsJcaSessionImpl) {
                  final JmsJcaSessionImpl session = (JmsJcaSessionImpl) object;
                  session.invalidate();
              }
  
          }
  
          // Empty the set
          _sessions.clear();
  
          try {
  
              // Deregister the connection listener
              _coreConnection.removeConnectionListener(_connectionListener);
  
              // Close the core connection
              // when destroy calls close connections then connection cannot be reset for future usage so force close by passing boolean true. - PM39926
              _coreConnection.close(true);
  
          } catch (final SIConnectionLostException exception) {
  
              // No FFDC code needed
              // d352473
              // We are remote to the ME and the ME connection has been lost
              // we shall surpress this exception as we want the destroy to complete
  
          } catch (final SIConnectionDroppedException exception) {
  
              // No FFDC code needed
              // d352473
              // We are remote to the ME and the ME connection has been dropped
              // we shall surpress this exception as we want the destroy to complete
  
          } catch (final SIException exception) {
  
              FFDCFilter.processException(exception, CLASS_NAME + "destroy",
                                          "1:408:1.91", this);
              throw new ResourceException(NLS.getFormattedMessage(
                                                                  "EXCEPTION_RECEIVED_CWSJR1110", new Object[] { exception,
                                                                                                                "createManagedConnection" }, null), exception);
  
          } catch (final SIErrorException exception) {
  
              FFDCFilter.processException(exception, CLASS_NAME + "destroy",
                                          "1:416:1.91", this);
              throw new ResourceException(NLS.getFormattedMessage(
                                                                  "EXCEPTION_RECEIVED_CWSJR1110", new Object[] { exception,
                                                                                                                "createManagedConnection" }, null), exception);
  
          }
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.exit(this, TRACE, "destroy");
          }
  
      }