code: @SequentialOnly
      public <R, A> Stream<R> collapseByKey(final BiPredicate<? super K, ? super K> collapsible, final Collector<? super V, A, R> collector) {
          final BiPredicate<? super Entry<K, V>, ? super Entry<K, V>> collapsible2 = new BiPredicate<Entry<K, V>, Entry<K, V>>() {
              @Override
              public boolean test(Entry<K, V> t, Entry<K, V> u) {
                  return collapsible.test(t.getKey(), u.getKey());
              }
          };
  
          final Function<Entry<K, V>, V> mapper = Fn.value();
  
          return s.collapse(collapsible2, Collectors.mapping(mapper, collector));
      }
docs: Merge series of adjacent elements which satisfy the given predicate using
  the merger function and return a new stream.
  
  <br />
  This method only run sequentially, even in parallel stream.
  
  @param collapsible
  @param collector
  @return