docs: public void detach() throws SIResourceException, SINotPossibleInCurrentConfigurationException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "detach");
  
      // Make sure we are not ready
      notReady();
  
      // Remove us from any group we are a member of
      if(keyGroup != null)
        keyGroup.removeMember(this);
  
      // Remove this consumer from the CD's knowledge
      consumerDispatcher.detachConsumerPoint(this);
  
      // Cleanly dispose of the getCursor
      if(classifyingMessages)
      {
        // Take the classifications read lock
        consumerSet.takeClassificationReadLock();
        
        int numFilters = consumerKeyFilter.length;
        for(int i=0;i<numFilters;i++)
          consumerKeyFilter[i].detach();
        
        // Free the classifications read lock
        consumerSet.freeClassificationReadLock();
      }
      else
        consumerKeyFilter[0].detach();
  
      synchronized (this)
      {
        detached = true;
      }
      
      // Remove the consumerPoint to the consumerSet if the latter has been specified
      if(classifyingMessages)
        consumerSet.removeConsumer(consumerPoint); 
      
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "detach");
    }