docs: public void startFlush(FlushComplete complete)
      throws FlushAlreadyInProgressException, SIRollbackException, SIConnectionLostException, SIResourceException, SIErrorException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "startFlush", new Object[] { complete });
  
      // Synchronize here to get a consistent view of "flushInProgress"
      synchronized (this)
      {
        if (flushInProgress != null)
        {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "startFlush", "FlushAlreadyInProgressException");
          // Somebody already called us so bail
          throw new FlushAlreadyInProgressException();
        }
  
        // Otherwise, update flush in progress and
        // flush immediately if possible.  Note that
        // this means the caller may receive the callback
        // on their own thread.
        flushInProgress = complete;
      }
  
      attemptFlush();
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "startFlush");
    }