A thread-safe storage for key -> value associations. Unlike
ConcurrentHashMap, this map synchronizes writes since the multi-value
associations require two independent read/writes to the map state; one to
retrieve an existing collection, a second one to add another value to it.
Note that it is
not save to modify the contents of the collection
returned by this map since it is still based on the contents of this map and
not a shallow copy for performance considerations.
In addition, the values stored in this map are distinct, i.e.
if a value already exists in the values collection it is
removed
prior to the insertion of the new element.