docs: public boolean flushAllForDeleteSource()
                      throws SIResourceException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "flushAllForDeleteSource");
  
          synchronized (this)
          {
              // Flush may have completed, if so then return
              // without starting another one.
              if (_flushedForDeleteSource)
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(tc, "flushAllForDeleteSource", Boolean.TRUE);
                  return true;
              }
  
              // Short circuit if flush already in progress
              if (_deleteFlushSource != null)
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(tc, "flushAllForDeleteSource", Boolean.FALSE);
                  return false;
              }
  
              // Otherwise, we need to start a new flush
              final PubSubInputHandler psIH = this;
              _deleteFlushSource = new FlushComplete() {
                  @Override
                  public void flushComplete(DestinationHandler destinationHandler)
                  {
                      // Remember that the flush completed for when we redrive
                      // the delete code.
                      synchronized (psIH) {
                          psIH._flushedForDeleteSource = true;
                          psIH._deleteFlushSource = null;
                      }
  
                      // PubSubOutputHandlers now safe to cleanup
                      ((BaseDestinationHandler) psIH._destination).deleteAllPubSubOutputHandlers();
  
                      // Now redrive the actual deletion
                      psIH._messageProcessor.getDestinationManager().startAsynchDeletion();
                  }
              };
          }
  
          // Start the flush and return false
          try
          {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                  SibTr.event(tc, "Started source flush for destination: " + _destination.getName());
              startFlush(_deleteFlushSource);
          } catch (FlushAlreadyInProgressException e)
          {
              // This shouldn't actually be possible so log it
              FFDCFilter.processException(
                                          e,
                                          "com.ibm.ws.sib.processor.impl.PubSubInputHandler.flushAllForDeleteSource",
                                          "1:3718:1.329.1.1",
                                          this);
  
              SibTr.exception(tc, e);
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "flushAllForDeleteSource", "FlushAlreadyInProgressException");
  
              throw new SIResourceException(e);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "flushAllForDeleteSource", Boolean.FALSE);
          return false;
      }