docs: @Override
      public SICoreConnection cloneConnection()
                      throws SIConnectionUnavailableException, SIConnectionDroppedException,
                      SIResourceException, SIConnectionLostException, SILimitExceededException,
                      SIErrorException
      {
          if (TraceComponent.isAnyTracingEnabled() && CoreSPIConnection.tc.isEntryEnabled())
              SibTr.entry(CoreSPIConnection.tc, "cloneConnection", this);
  
          SICoreConnection clone = null;
  
          // take a lock on  the MP _connections lock manager (required to maintain lock consistency)
  
          _messageProcessor.getConnectionLockManager().lock();
  
          try
          {
              // See if this connection has been closed
              checkNotClosed();
  
              //Create a new connection instance
              // The definition of a cloned connection is that it is connected to the
              // same ME. This is always true in the MP layer.
              clone = _messageProcessor.createConnection(_subject, false, _connectionProperties);
          } finally
          {
              _messageProcessor.getConnectionLockManager().unlock();
          }
  
          if (TraceComponent.isAnyTracingEnabled() && CoreSPIConnection.tc.isEntryEnabled())
              SibTr.exit(CoreSPIConnection.tc, "cloneConnection", clone);
          return clone;
      }