code: private void onSuspend(final List<Address> members) {
          Message msg = null;
          Collection<Address> participantsInFlush = null;
        synchronized (sharedLock) {
           flushCoordinator = localAddress;         
  
           // start FLUSH only on group members that we need to flush
           participantsInFlush = members;
           participantsInFlush.retainAll(currentView.getMembers());
           flushMembers.clear();
           flushMembers.addAll(participantsInFlush);
           flushMembers.removeAll(suspected);
           
            msg = new Message(null).src(localAddress).setBuffer(marshal(participantsInFlush, null))
              .putHeader(this.id, new FlushHeader(FlushHeader.START_FLUSH, currentViewId()));
  
        }
          if (participantsInFlush.isEmpty()) {
              flush_promise.setResult(SUCCESS_START_FLUSH);
          } else {
              down_prot.down(msg);
              if (log.isDebugEnabled())
                  log.debug(localAddress + ": flush coordinator "
                          + " is starting FLUSH with participants " + participantsInFlush);
          }
      }
docs: Starts the flush protocol
  @param members List of participants in the flush protocol. Guaranteed to be non-null