public <KK> EntryStream<KK, V> flatMapKeys(Function<? super K, ? extends Stream<? extends KK>> mapper) {
        return new EntryStream<>(stream().flatMap(e -> withValue(mapper.apply(e.getKey()), e.getValue())), context);
    }
public < KK > EntryStream < KK , V > flatMapKeys ( Function < ? super K , ? extends Stream < ? extends KK > > mapper ) { return new EntryStream < > ( stream ( ) . flatMap ( e -> withValue ( mapper . apply ( e . getKey ( ) ) , e . getValue ( ) ) ) , context ) ; }
Returns an {@code EntryStream} consisting of the entries whose keys are
results of replacing source keys with the contents of a mapped stream
produced by applying the provided mapping function to each source key and
values are left intact. Each mapped stream is
{@link java.util.stream.BaseStream#close() closed} after its contents
have been placed into this stream. (If a mapped stream is {@code null} an
empty stream is used, instead.)

<p>
This is an <a href="package-summary.html#StreamOps">intermediate
operation</a>.

@param <KK> The type of new keys
@param mapper a <a
href="package-summary.html#NonInterference">non-interfering </a>,
<a href="package-summary.html#Statelessness">stateless</a>
function to apply to each key which produces a stream of new keys
@return the new stream