code: @Override
      public boolean suspendConsumer(int suspendFlag)
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "suspendConsumer", Integer.valueOf(suspendFlag));
  
          boolean didSuspendConsumer;
          //  We can't hold the LCP lock before we hold the keyGroup lock and we don't want to
          // take the asynch lock as we'll block on a consumerMessage call but the keyGroup
          // is set inside the LCP and asynch locks and could therefore vanish between checking for it
          // and trying to lock it here. So we take a dirty read of the keyGroup and if we
          // got it we'll lock it. This does mean there are slight windows around setting
          // and unsetting of the keyGroup but the worst case is that we lock the group when
          // we didn't need to (as we're no longer a member of the group).
          JSKeyGroup cachedKeyGroup = _keyGroup;
  
          // We're a member of a group so we must lock it before we go for the LCP lock
          // and take the message
          if (cachedKeyGroup != null)
              cachedKeyGroup.lock();
  
          try
          {
              this.lock();
              try
              {
                  if (!isConsumerSuspended(suspendFlag)) // Is the consumer already suspended
                  {
                      _consumerSuspended = true;
                      _suspendFlags |= suspendFlag;
                      unsetReady();
                      didSuspendConsumer = true;
                  }
                  else
                  {
                      didSuspendConsumer = false;
                  }
              } finally
              {
                  this.unlock();
              }
          } finally
          {
              if (cachedKeyGroup != null)
                  cachedKeyGroup.unlock();
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "suspendConsumer", didSuspendConsumer);
          return didSuspendConsumer;
      }
docs: /*
  (non-Javadoc)
  
  @see com.ibm.ws.sib.processor.impl.interfaces.ConsumerPoint#suspendConsumer()