docs: @Override
      public void addConnectionListener(SICoreConnectionListener listener)
                      throws SIConnectionUnavailableException, SIConnectionDroppedException
      {
          if (TraceComponent.isAnyTracingEnabled() && CoreSPIConnection.tc.isEntryEnabled())
              SibTr.entry(CoreSPIConnection.tc, "addConnectionListener",
                          new Object[] { this, listener });
  
          checkNotClosed();
  
          // Synchronize on the close object, we don't want the connection closing
          // while we try to add the listener.
          synchronized (_connectionListeners)
          {
              //store a reference to the listener
              _connectionListeners.add(listener);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && CoreSPIConnection.tc.isEntryEnabled())
              SibTr.exit(CoreSPIConnection.tc, "addConnectionListener");
      }