docs: @Override
      public void closeSession(Throwable e) throws SIConnectionLostException, SIResourceException, SIErrorException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "closeSession", e);
  
          if (e == null)
          {
              //try and build an appropriate exception
              if (_consumerKey.isClosedDueToDelete())
              {
                  e = new SISessionDroppedException(
                                  nls.getFormattedMessage(
                                                          "DESTINATION_DELETED_ERROR_CWSIP00221",
                                                          new Object[] {
                                                                        _consumerDispatcher.getDestination().getName(),
                                                                        _messageProcessor.getMessagingEngineName() },
                                                          null));
              }
              else if (_consumerKey.isClosedDueToReceiveExclusive())
              {
                  e = new SISessionDroppedException(
                                  nls.getFormattedMessage(
                                                          "DESTINATION_EXCLUSIVE_ERROR_CWSIP00222",
                                                          new Object[] {
                                                                        _consumerDispatcher.getDestination().getName(),
                                                                        _messageProcessor.getMessagingEngineName() },
                                                          null));
              }
          }
  
          //and close the session
          _consumerSession.close();
  
          if (e != null)
              notifyException(e);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "closeSession", e);
      }