docs: public boolean flushAllForDeleteTarget()
                      throws SIResourceException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "flushAllForDeleteTarget");
  
          synchronized (this)
          {
              // Flush may have completed, if so then return
              // without starting another one.
              if (_flushedForDeleteTarget)
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(tc, "flushAllForDeleteTarget", Boolean.TRUE);
                  return true;
              }
  
              // Short circuit if flush already in progress
              if (_deleteFlushTarget != null)
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(tc, "flushAllForDeleteTarget", Boolean.FALSE);
                  return false;
              }
  
              // If we're flushable now then return, otherwise send the query
              // and start an alarm
              if (_targetStreamManager.isEmpty())
              {
                  _flushedForDeleteTarget = true;
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(tc, "flushAllForDeleteTarget", Boolean.TRUE);
                  return true;
              }
  
              // Otherwise, send out the initial query, and set a retry alarm 
              _deleteFlushTarget = new AlarmListener() {
                  @Override
                  public void alarm(Object al)
                  {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          SibTr.entry(tc, "alarm", al);
                      PubSubInputHandler psIH = (PubSubInputHandler) al;
                      if (psIH._targetStreamManager.isEmpty())
                      {
                          // Flush finished
                          synchronized (psIH)
                          {
                              psIH._flushedForDeleteTarget = true;
                              psIH._deleteFlushTarget = null;
                          }
  
                          // Now redrive the actual deletion
                          psIH._messageProcessor.getDestinationManager().startAsynchDeletion();
  
                      }
                      else
                      {
                          // Query the flush again
                          try
                          {
                              psIH._targetStreamManager.queryUnflushedStreams();
                              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                                  SibTr.event(tc, "Querying target for flush on destination: " + _destination.getName());
                              psIH._messageProcessor.getAlarmManager().create(SIMPConstants.LOG_DELETED_FLUSH_WAIT, this, psIH);
                          }
                          catch (SIResourceException e)
                          {
                              // This shouldn't actually be possible so log it
                              FFDCFilter.processException(
                                                          e,
                                                          "com.ibm.ws.sib.processor.impl.PubSubInputHandler.alarm",
                                                          "1:3815:1.329.1.1",
                                                          this);
  
                              SibTr.exception(tc, e);
  
                              // There's no one to catch this exception so eat it.  Note that this also
                              // kills the flush retry.
                              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled())
                                  SibTr.event(tc, "Target flushed cancelled by SIResourceException");
  
                          }
                      }
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                          SibTr.exit(tc, "alarm");
                  }
              };
  
              _targetStreamManager.queryUnflushedStreams();
              _messageProcessor.getAlarmManager().create(SIMPConstants.LOG_DELETED_FLUSH_WAIT, _deleteFlushTarget, this);
  
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "flushAllForDeleteTarget", Boolean.FALSE);
          return false;
      }