code: public void start(boolean deliverImmediately)
              throws SIConnectionDroppedException, SISessionUnavailableException,
              SIConnectionUnavailableException, SIConnectionLostException,
              SIResourceException, SIErrorException, SIErrorException {
  
          final String methodName = "start";
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.entry(this, TRACE, methodName, Boolean
                      .valueOf(deliverImmediately));
          }
  
          checkValid();
  
          _delegate.start(deliverImmediately);
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.exit(this, TRACE, methodName);
          }
  
      }
docs: Starts message delivery. Checks that the session is valid then delegates.
  
  @param deliverImmediately
  whether a thread should be spun off for message delivery
  @throws SIConnectionLostException
  if the delegation fails
  @throws SIErrorException
  if the delegation fails
  @throws SIErrorException
  if the delegation fails
  @throws SIResourceException
  if the delegation fails
  @throws SISessionUnavailableException
  if the connection is not valid
  @throws SIConnectionUnavailableException
  if the delegation fails
  @throws SIConnectionDroppedException
  if the delegation fails