private HashMap<UUID, ClusteredTopDocs> broadcastQuery(ClusteredQueryCommand command) {
    ClusteredQueryInvoker invoker = new ClusteredQueryInvoker(cache, asyncExecutor);

    HashMap<UUID, ClusteredTopDocs> topDocsResponses = new HashMap<UUID, ClusteredTopDocs>();
    int resultSize = 0;
    List<QueryResponse> responses = invoker.broadcast(command);

    for (Object response : responses) {
      QueryResponse queryResponse = (QueryResponse) response;
      ClusteredTopDocs topDocs =
          new ClusteredTopDocs(queryResponse.getTopDocs(), queryResponse.getNodeUUID());

      resultSize += queryResponse.getResultSize();
      topDocs.setNodeAddress(queryResponse.getAddress());
      topDocsResponses.put(queryResponse.getNodeUUID(), topDocs);
    }

    this.resultSize = resultSize;
    return topDocsResponses;
  }