code: public final <K, V> Map<K, V> toMap(final Function<? super T, ? extends K> keyFunction,
              final Function<? super T, ? extends V> valueFunction) {
          return ImmutableMap
                  .copyOf(toMap(keyFunction, valueFunction, Maps.<K, V>newLinkedHashMap()));
      }
docs: Terminal operation returning an immutable Map indexing the elements of this Stream as
  {@code <key, value>} pairs computed using the supplied Functions. The supplied key and
  value Functions are called for each element, producing the keys and values to store in the
  Map. If a null key or value are produced, the element is discarded. If multiple values are
  mapped to the same key, only the most recently computed one will be stored. Use
  {@link Functions#identity()} in case no transformation is required to extract the key
  and/or the value.
  
  @param keyFunction
  the key function
  @param valueFunction
  the value function
  @param <K>
  the type of key
  @param <V>
  the type of value
  @return an immutable Map with the computed {@code <key, value>} pairs