Flattening um Iterable <Iterable <T>> na Guava

Tem algumaflatten no Guava - ou uma maneira fácil de converter umIterable<Iterable<T>> para umIterable<T>?

Eu tenho umMultimap<K, V> [sourceMultimap] e quero retornar todos os valores em que a chave corresponde a algum predicado [keyPredicate]. Então, no momento eu tenho:

Iterable<Collection<V>> vals = Maps.filterKeys(sourceMultimap.asMap(), keyPredicate).values();

Collection<V> retColl = ...;
for (Collection<V> vs : vals) retColl.addAll(vs);
return retColl;

Eu olhei os documentos do Goiaba, mas nada pulou. Estou verificando que não perdi nada. Caso contrário, extrairei minhas três linhas em um método genérico achatado curto e deixarei assi

questionAnswers(2)

yourAnswerToTheQuestion