Unlike Collections.unmodifiableSortedMap, which is a view
of a separate map which can still change, an instance of ImmutableSortedMap contains its own data and will never change.
ImmutableSortedMap is convenient for public static final maps
("constant maps") and also lets you easily make a "defensive copy" of a map
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 map containing the same entries as map, sorted
by the natural ordering of the keys.

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.

This method is not type-safe, as it may be called on a map with keys
that are not mutually comparable.

Throws:

ClassCastException if the keys in map are not mutually
comparable

NullPointerException if any key or value in map is null

IllegalArgumentException if any two keys are equal according to
their natural ordering

Returns an immutable map containing the same entries as map, with
keys sorted by the provided comparator.

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.

Throws:

NullPointerException if any key or value in map is null

IllegalArgumentException if any two keys are equal according to the
comparator

Returns an immutable map containing the same entries as the provided sorted
map, with the same ordering.

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 a builder that creates immutable sorted maps with an explicit
comparator. If the comparator has a more general type than the map's keys,
such as creating a SortedMap<Integer, String> with a Comparator<Number>, use the Builder constructor instead.

Returns the comparator that orders the keys, which is
Ordering.natural() when the natural ordering of the keys is used.
Note that its behavior is not consistent with TreeMap.comparator(),
which returns null to indicate natural ordering.

This method returns a ImmutableSortedMap, consisting of the entries
whose keys are less than toKey.

The SortedMap.headMap documentation states that a submap of a
submap throws an IllegalArgumentException if passed a toKey
greater than an earlier toKey. However, this method doesn't throw
an exception in that situation, but instead keeps the original toKey.

This method returns a ImmutableSortedMap, consisting of the entries
whose keys are less than (or equal to, if inclusive) toKey.

The SortedMap.headMap documentation states that a submap of a
submap throws an IllegalArgumentException if passed a toKey
greater than an earlier toKey. However, this method doesn't throw
an exception in that situation, but instead keeps the original toKey.

This method returns a ImmutableSortedMap, consisting of the entries
whose keys ranges from fromKey, inclusive, to toKey,
exclusive.

The SortedMap.subMap documentation states that a submap of a
submap throws an IllegalArgumentException if passed a fromKey less than an earlier fromKey. However, this method doesn't
throw an exception in that situation, but instead keeps the original fromKey. Similarly, this method keeps the original toKey, instead
of throwing an exception, if passed a toKey greater than an earlier
toKey.

This method returns a ImmutableSortedMap, consisting of the entries
whose keys ranges from fromKey to toKey, inclusive or
exclusive as indicated by the boolean flags.

The SortedMap.subMap documentation states that a submap of a
submap throws an IllegalArgumentException if passed a fromKey less than an earlier fromKey. However, this method doesn't
throw an exception in that situation, but instead keeps the original fromKey. Similarly, this method keeps the original toKey, instead
of throwing an exception, if passed a toKey greater than an earlier
toKey.

This method returns a ImmutableSortedMap, consisting of the entries
whose keys are greater than or equals to fromKey.

The SortedMap.tailMap documentation states that a submap of a
submap throws an IllegalArgumentException if passed a fromKey less than an earlier fromKey. However, this method doesn't
throw an exception in that situation, but instead keeps the original fromKey.

This method returns a ImmutableSortedMap, consisting of the entries
whose keys are greater than (or equal to, if inclusive)
fromKey.

The SortedMap.tailMap documentation states that a submap of a
submap throws an IllegalArgumentException if passed a fromKey less than an earlier fromKey. However, this method doesn't
throw an exception in that situation, but instead keeps the original fromKey.

Serialized type for all ImmutableSortedMap instances. It captures the
logical contents and they are reconstructed using public factory methods.
This ensures that the implementation types remain as implementation
details.