Conversión de consumidores a funciones

Muchas lambdas para elFunction la interfaz toma la forma

t -> {
    // do something to t
    return t;
}

Hago esto tan a menudo que he escrito un método como este.

static <T> Function<T, T> consumeThenReturn(Consumer<T> consumer) {
    return t -> {
        consumer.accept(t);
        return t;
    };
}

Esto me permite hacer cosas realmente bonitas como esta:

IntStream.rangeClosed('A', 'Z')
         .mapToObj(a -> (char) a)
         .collect(Collectors.collectingAndThen(Collectors.toList(), consumeThenReturn(Collections::shuffle)))
         .forEach(System.out::print); 

¿Hay otra forma de hacer conversiones como esta sin depender de mi propio método? ¿Hay algo en las nuevas API que me haya perdido que haga que mi método sea redundante?

Respuestas a la pregunta(2)

Su respuesta a la pregunta