Returns a new MutableCollection with the results of applying the specified function to each element of the source
collection, but only for elements that evaluate to true for the specified predicate.
For each element of the iterable, the function is evaluated and the results of these evaluations are collected
into a new multimap, where the transformed value is the key and the original values are added to the same (or similar)
species of collection as the source iterable.