code: public <K> StreamEx<T> filterBy(Function<? super T, ? extends K> mapper, K value) {
          return value == null ? filter(t -> mapper.apply(t) == null) : filter(t -> value.equals(mapper.apply(t)));
      }
docs: Returns a stream consisting of the elements of this stream for which the
  supplied mapper function returns the given value.
  
  <p>
  This is an <a href="package-summary.html#StreamOps">intermediate
  operation</a>.
  
  <p>
  This method behaves like
  {@code filter(t -> Objects.equals(value, mapper.apply(t)))}.
  
  @param <K> type of the value returned by mapper function.
  @param mapper a
  <a href="package-summary.html#NonInterference">non-interfering
  </a>, <a href="package-summary.html#Statelessness">stateless</a>
  function which is applied to the stream element and its returned
  value is compared with the supplied value.
  @param value a value the mapper function must return to pass the filter.
  @return the new stream
  @since 0.6.4
  @see #filter(Predicate)