Cerrar sobre una variable inmutable y acumular valores en múltiples iteraciones como una expresión lambda - Java 8

El cliente WebTarget en Jersey se implementa como un objeto inmutable, y cualquier operación para cambiar el estado devuelve un nuevo WebTarget. Para agregarle parámetros de consulta, que viene comoMap<> El siguiente código fue escrito.

public WebTarget webTarget(String path, Map<String, String> queryMap) {

    WebTarget webTarget = client.target(this.address.getUrl()).path(path);
    if (queryMap != null)
        queryMap.entrySet().forEach(e -> webTarget.queryParam(e.getKey(), e.getValue()));
    return webTarget;
 }

El problema aquí es cada llamada a.queryParam() devuelve un nuevo WebTarget y estoy atascado en cómo acumular, ya que las variables utilizadas dentro de una expresión lambda deben ser finales o implícitamente finales, sin ninguna reasignación.

EDITAR: Reducir puede no ser una opción en este caso, ya que WebTarget carece del mecanismo de reducción, que no puedo obtener el queryParam de un objetivo web y configurarlo en otro. Si la API WebTarget tuviera un mejor soporte para la acumulación, podría haber sido utilizada.

UsadoJool para tratar de aprovechar foldLeft, que carece de la API nativa de Java 8, pero aún así toca fondo ya que la API de WebTarget carecía de soporte para ello.

EDIT2: foldLeft es el camino como se sugiere en la respuesta a continuación, escribí un pequeñoBlog en este

Respuestas a la pregunta(2)

Su respuesta a la pregunta