code: public void disconnectCardOneConsumer()
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(tc, "disconnectCardOneConsumer");
      Object[] clonedConsumerPoints = null;
      synchronized (consumerPoints)
      {
        // we clone the list before notifying the exception, since the CP's may call methods on the CD in the
        // context of the notification, and don't want a deadlock
        clonedConsumerPoints = consumerPoints.toArray();
      }
      SILimitExceededException  e = new SILimitExceededException (
        nls.getFormattedMessage("CONSUMERCARDINALITY_LIMIT_REACHED_CWSIP0472",
                                 new Object[]{getDestName(), getLocalisationUuid().toString()},
                                 null));
      FFDCFilter.processException(e,"com.ibm.ws.sib.processor.impl.RemoteConsumerDispatcher.disconnectCardOneConsumer","1:945:1.97.2.21",this);
      SibTr.exception(tc, e);
      for (int i=0; i<clonedConsumerPoints.length; i++)
      {
        DispatchableKey ck = (DispatchableKey) clonedConsumerPoints[i];
        ck.notifyConsumerPointAboutException(e);
      }
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "disconnectCardOneConsumer");
    }
docs: The disconnectCardOneConsumer method is invoked by the Anycast Input Handler to notify it that the current
  cardinality-one consumer must be disconnected.
  This can happen when this RME becomes unreachable and the DME allows a consumer in a separate RME
  to connect. As soon as this RME becomes reachable again, the DME sends ControlCardinalityInfo to
  trigger this consumer's disconnection.