La forma más limpia de indexar una Colección por una propiedad del elemento que en sí es una colección

tengo unList<Foo>&nbsp;y quiero una guayabaMultimap<String, Foo>&nbsp;donde hemos agrupado elFoo's por cada etiqueta de suCollection<String> getTags()&nbsp;función.

Estoy usando Java 8, por lo que lambdas y referencias de métodos están bien / alentadas.

Por ejemplo si tengo:

foo1, tags=a,b,c
foo2, tags=c,d
foo3, tags=a,c,e

Obtendría unMultimap<String, Foo>&nbsp;con:

a -> foo1, foo3
b -> foo1
c -> foo1, foo2, foo3
d -> foo2
e -> foo3