docs: synchronized ListenableFuture<Boolean> send(StreamSnapshotMessageType type, int blockIndex, BBContainer chunk, boolean replicatedTable) {
          SettableFuture<Boolean> sendFuture = SettableFuture.create();
          rejoinLog.trace("Sending block " + blockIndex + " of type " + (replicatedTable?"REPLICATED ":"PARTITIONED ") + type.name() +
                  " from targetId " + m_targetId + " to " + CoreUtils.hsIdToString(m_destHSId) +
                  (replicatedTable?", " + CoreUtils.hsIdCollectionToString(m_otherDestHostHSIds):""));
          SendWork sendWork = new SendWork(type, m_targetId, m_destHSId,
                  replicatedTable?m_otherDestHostHSIds:null, chunk, sendFuture);
          m_outstandingWork.put(blockIndex, sendWork);
          m_outstandingWorkCount.incrementAndGet();
          m_sender.offer(sendWork);
          return sendFuture;
      }