docs: public boolean performInCallbackActions()
     throws SIConnectionLostException,
            SIResourceException,
            SIErrorException,
            SISessionDroppedException,
            SISessionUnavailableException,
            SIConnectionUnavailableException,
            SIIncorrectCallException
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "performInCallbackActions");
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "callbackThreadState="+callbackThreadState);
  
        boolean result = false;
        switch(callbackThreadState)
        {
           case CLOSED:
              close();
              result = false;
              break;
           case STOPPED_DEREGISTERED:
              stop();
              deregisterAsynchConsumerCallback();
              result = false;
              break;
           case STOPPED_REGISTERED:
              stop();
              if (callbackThreadCallback != null)
              {
                 if (callbackStoppable)
                 {
                    registerStoppableAsynchConsumerCallback((StoppableAsynchConsumerCallback)callbackThreadCallback,
                                                            callbackThreadMaxActiveMessages,
                                                            callbackThreadMessageLockExpiry,
                                                            callbackThreadMaxBatchSize,
                                                            callbackThreadOrderingContext,
                                                            callbackMaxSequentialFailures,
                                                            callbackHiddenMessageDelay);
                 }
                 else
                 {
                    registerAsynchConsumerCallback(callbackThreadCallback,
                                                   callbackThreadMaxActiveMessages,
                                                   callbackThreadMessageLockExpiry,
                                                   callbackThreadMaxBatchSize,
                                                   callbackThreadOrderingContext);
                 }
              }
              result = false;
              break;
           case STARTED_DEREGISTERED:
              stop();
              deregisterAsynchConsumerCallback();
              start(false);
              result = true;
              break;
           case STARTED_REGISTERED:
              if (callbackThreadCallback != null)
              {
                 stop();
                 if (callbackStoppable)
                 {
                    registerStoppableAsynchConsumerCallback((StoppableAsynchConsumerCallback)callbackThreadCallback,
                                                            callbackThreadMaxActiveMessages,
                                                            callbackThreadMessageLockExpiry,
                                                            callbackThreadMaxBatchSize,
                                                            callbackThreadOrderingContext,
                                                            callbackMaxSequentialFailures,
                                                            callbackHiddenMessageDelay);
                 }
                 else
                 {
                    registerAsynchConsumerCallback(callbackThreadCallback,
                                                   callbackThreadMaxActiveMessages,
                                                   callbackThreadMessageLockExpiry,
                                                   callbackThreadMaxBatchSize,
                                                   callbackThreadOrderingContext);
                 }
                 start(false);
              }
              result = true;
              break;
           default:
              FFDCFilter.processException(new Exception(), CLASS_NAME + ".performInCallbackActions",
                                          CommsConstants.CONSUMERSESSIONPROXY_INCALLBACKACT_01, callbackThreadState);
              result = false;
              break;
        }
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "performInCallbackActions", result);
        return result;
     }