A sorted map which forwards all its method calls to another sorted map.
Subclasses should override one or more methods to modify the behavior of
the backing sorted map as desired per the decorator pattern.

Warning: The methods of ForwardingSortedMap forward
indiscriminately to the methods of the delegate. For example,
overriding put alone will not change the behavior of putAll, which can lead to unexpected behavior. In this case, you should
override putAll as well, either providing your own implementation, or
delegating to the provided standardPutAll method.

Each of the standard methods, where appropriate, use the
comparator of the map to test equality for both keys and values, unlike
ForwardingMap.

The standard methods and the collection views they return are not
guaranteed to be thread-safe, even when all of the methods that they depend
on are thread-safe.

A sensible implementation of SortedMap.keySet in terms of the methods of
ForwardingSortedMap. In many cases, you may wish to override
ForwardingSortedMap.keySet to forward to this implementation or a subclass thereof.

A sensible definition of remove in terms of the iterator() of the entrySet() of tailMap. If you override
tailMap, you may wish to override remove to forward
to this implementation.

Deprecated:

This implementation is extremely awkward, is rarely worthwhile,
and has been discovered to interact badly with
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6467933 in Java 6
when used with certain null-friendly comparators. It is scheduled for
deletion in Guava 16.0.

A sensible default implementation of subMap(Object, Object) in
terms of headMap(Object) and tailMap(Object). In some
situations, you may wish to override subMap(Object, Object) to
forward to this implementation.