public static <K, V> MapStream<K, V> fromKeys(Stream<K> keys, Function<K, V> valueFromKey) {
        requireNonNull(keys);
        requireNonNull(valueFromKey);
        return new MapStream<>(keys.map(k -> new AbstractMap.SimpleEntry<>(k, valueFromKey.apply(k))));
    }
Constructs a new {@code MapStream} by wrapping a key-stream and 
calculating the corresponding values using the supplied function.

@param <K>           key type
@param <V>           value type
@param keys          stream of keys to wrap
@param valueFromKey  method for calculating values from keys
@return              created {@code MapStream}
@throws NullPointerException if any of the provided parameters are {@code null}
common-parent/mapstream/src/main/java/com/speedment/common/mapstream/MapStream.java