static List constructGetAllTasks(String region,
      final Map<ServerLocation, Set> serverToFilterMap, final PoolImpl pool,
      final Object callback) {
    final List<SingleHopOperationCallable> tasks = new ArrayList<>();
    ArrayList<ServerLocation> servers = new ArrayList<>(serverToFilterMap.keySet());

    if (logger.isDebugEnabled()) {
      logger.debug("Constructing tasks for the servers {}", servers);
    }
    for (ServerLocation server : servers) {
      Set filterSet = serverToFilterMap.get(server);
      AbstractOp getAllOp = new GetAllOpImpl(region, new ArrayList(filterSet), callback);

      SingleHopOperationCallable task =
          new SingleHopOperationCallable(new ServerLocation(server.getHostName(), server.getPort()),
              pool, getAllOp, UserAttributes.userAttributes.get());
      tasks.add(task);
    }
    return tasks;
  }
Does a region getAll on a server using connections from the given pool to communicate with the
server.

@param pool the pool to use to communicate with the server.
@param region the name of the region to do the getAll on
@param keys list of keys to get
@return the map of values found by the getAll if any
geode-core/src/main/java/org/apache/geode/cache/client/internal/GetAllOp.java