code: public static <T, V> StreamEx<T> ofKeys(Map<T, V> map, Predicate<? super V> valueFilter) {
          return EntryStream.of(map).filterValues(valueFilter).keys();
      }
docs: Returns a sequential {@code StreamEx} of given {@link Map} keys which
  corresponding values match the supplied filter.
  
  @param <T> the type of map keys and created stream elements
  @param <V> the type of map values
  @param map input map
  @param valueFilter a predicate used to test values
  @return a sequential {@code StreamEx} over the keys of given {@code Map}
  which corresponding values match the supplied filter.
  @throws NullPointerException if map is null
  @see Map#keySet()