An immutable ListMultimap with reliable user-specified key and value
iteration order. Does not permit null keys or values.

Unlike Multimaps.unmodifiableListMultimap(ListMultimap), which is
a view of a separate multimap which can still change, an instance of
ImmutableListMultimap contains its own data and will never
change. ImmutableListMultimap is convenient for
public static final multimaps ("constant multimaps") and also lets
you easily make a "defensive copy" of a multimap provided to your class by
a caller.

Note: Although this class is not final, it cannot be subclassed as
it has no public or protected constructors. Thus, instances of this class
are guaranteed to be immutable.

Returns an immutable multimap containing the same mappings as multimap. The generated multimap's key and value orderings correspond to
the iteration ordering of the multimap.asMap() view.

Despite the method name, this method attempts to avoid actually copying
the data when it is safe to do so. The exact circumstances under which a
copy will or will not be performed are undocumented and subject to change.

Returns an immutable list of the values for the given key. If no mappings
in the multimap have the provided key, an empty immutable list is
returned. The values are in the same order as the parameters used to build
this multimap.

Because an inverse of a list multimap can contain multiple pairs with
the same key and value, this method returns an ImmutableListMultimap rather than the ImmutableMultimap specified
in the ImmutableMultimap class.