Fechando sobre variável imutável e acumulando valores em várias iterações como uma expressão lambda - Java 8

O cliente WebTarget em Jersey é implementado como um objeto imutável, e quaisquer operações para alterar o estado retornam um novo WebTarget. Para adicionar parâmetros de consulta a ele, que está chegando como umMap<> o seguinte código foi 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;
 }

Os problemas aqui são todas as chamadas para.queryParam() retorna um novo WebTarget e estou empolgado com a forma de acumular, pois as variáveis usadas dentro de uma expressão lambda precisam ser finais ou implicitamente finais, sem nenhuma reatribuição.

EDITAR: Reduzir pode não ser uma opção nesse caso, como o WebTarget não possui o mecanismo de redução, que não consigo obter o queryParam de um objeto da web e defini-lo em outro. se a API WebTarget tivesse melhor suporte para acumulação, ela poderia ter sido usada.

UsavaJool para tentar alavancar o foldLeft, que falta na API Java 8 nativa, mas ainda atinge o fundo do poço, pois a API do WebTarget não tinha suporte para isso.

EDIT2: foldLeft é o caminho a seguir, conforme sugerido na resposta abaixo, escreveu um pequenoblogue nisto

questionAnswers(2)

yourAnswerToTheQuestion