/*
 * @test /nodynamiccopyright/
 * @bug 8222035
 * @summary minimal inference context optimization is forcing resolution with incomplete constraints
 * @compile/fail/ref=MinContextOpTest_A.out -XDrawDiagnostics -source 15 MinContextOpTest.java
 * @compile/fail/ref=MinContextOpTest_B.out -XDrawDiagnostics MinContextOpTest.java
 */

import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collector;
import java.util.stream.Stream;

public class MinContextOpTest {
    abstract class A {
        abstract static class T<K> {
            abstract String f();
        }

        abstract <E> Function<E, E> id();

        abstract static class ImmutableMap<K, V> implements Map<K, V> {}

        abstract <T, K, V> Collector<T, ?, ImmutableMap<K, V>> toImmutableMap(
                Function<? super T, ? extends K> k, Function<? super T, ? extends V> v);

        ImmutableMap<String, T<?>> test(Stream<T> stream) {
            return stream.collect(toImmutableMap(T::f, id()));
        }
    }
}