groupByUniqueKey

For each element of the iterable, the function is evaluated and he results of these evaluations are collected
into a new map, where the transformed value is the key. The generated keys must each be unique, or else an
exception is thrown.