docs: @SuppressWarnings("unchecked")
    public static <K, V> MapDifference<K, V> difference(
        Map<? extends K, ? extends V> left, Map<? extends K, ? extends V> right) {
      if (left instanceof SortedMap) {
        SortedMap<K, ? extends V> sortedLeft = (SortedMap<K, ? extends V>) left;
        SortedMapDifference<K, V> result = difference(sortedLeft, right);
        return result;
      }
      return difference(left, right, Equivalence.equals());
    }