docs: public static <K, V> SortedMapDifference<K, V> difference(
        SortedMap<K, ? extends V> left, Map<? extends K, ? extends V> right) {
      checkNotNull(left);
      checkNotNull(right);
      Comparator<? super K> comparator = orNaturalOrder(left.comparator());
      SortedMap<K, V> onlyOnLeft = Maps.newTreeMap(comparator);
      SortedMap<K, V> onlyOnRight = Maps.newTreeMap(comparator);
      onlyOnRight.putAll(right); // will whittle it down
      SortedMap<K, V> onBoth = Maps.newTreeMap(comparator);
      SortedMap<K, MapDifference.ValueDifference<V>> differences = Maps.newTreeMap(comparator);
      doDifference(left, right, Equivalence.equals(), onlyOnLeft, onlyOnRight, onBoth, differences);
      return new SortedMapDifferenceImpl<K, V>(onlyOnLeft, onlyOnRight, onBoth, differences);
    }