/*
 * @test /nodynamiccopyright/
 * @bug 8230105
 * @summary Verify the analyzers work reasonably for stuck lambdas
 * @compile/ref=StuckLambdas.out -XDfind=local -XDrawDiagnostics StuckLambdas.java
 */

import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.function.*;
import java.util.stream.*;

abstract class X {
    public interface N<K, V> {
        Stream<V> getValues();
    }

    abstract <K, V> N<K, V> c();

    abstract <T, K, V, M extends N<K, V>> Collector<T, ?, M> f(
            Function<? super T, ? extends K> k,
            Function<? super T, ? extends Stream<? extends V>> v,
            Supplier<M> multimapSupplier);

    void m(Map<String, N<?, ?>> c, ExecutorService s) {
        s.submit(() -> {
            String s1 = "";
            return c.entrySet()
                    .parallelStream()
                    .collect(f(Map.Entry::getKey, e -> {String s2 = ""; return e.getValue().getValues();}, this::c));
        });
    }
}