code: public synchronized void consumerSetChange()
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "consumerSetChange");
  
      if (transition < 0)
      {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "Negative transition, isEmpty is true");
        callback.consumerSetChange(true);
      }
      else if (transition > 0)
      {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "Positive transition, isEmpty is false");
        callback.consumerSetChange(false);
      }
      else
      {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
          SibTr.debug(tc, "Zero transition, no callback");
      }
  
      // Set transition to zero
      transition = 0;
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "consumerSetChange");
    }
docs: Method consumerSetChange
  
  If the transition variable is negative at the point of invoking the callback,
  then the callback is being called in order to signal that there are no longer
  any consumers for the expression on which the callback was registered. Similarly,
  if transition is positive, then the callback is being called in order to signal that
  there are now consumers for the expression on which the callback was registered. If
  transition is zero, then no action need be taken.
  
  @param isEmpty