class BBB { static void f() { TerminalOp> reduceOp = BBB.>makeRef(LinkedHashSet::new, LinkedHashSet::add, LinkedHashSet::addAll); } public static TerminalOp makeRef(U seed, BiFunction reducer, BinaryOperator combiner) { return null; } public static TerminalOp makeRef(Supplier seedFactory, BiConsumer accumulator, BiConsumer reducer) { return null; } public static void main(String[] args) { f(); } } interface Supplier { T get(); } interface BiFunction { R apply(T t, U u); } interface BinaryOperator extends BiFunction {} interface BiConsumer { void accept(T t, U u); } interface TerminalOp<E_IN, R> {} class LinkedHashSet extends HashSet{ public LinkedHashSet(int initialCapacity, float loadFactor) { } public LinkedHashSet(int initialCapacity) { } public LinkedHashSet() { } } class HashSet extends AbstractSet { public HashSet() { } public HashSet(int initialCapacity, float loadFactor) { } public HashSet(int initialCapacity) { } HashSet(int initialCapacity, float loadFactor, boolean dummy) { } public boolean add(E e) { return true; } } abstract class AbstractSet extends AbstractCollection { /** * Sole constructor. (For invocation by subclass constructors, typically * implicit.) */ protected AbstractSet() { } } abstract class AbstractCollection implements Collection { public boolean add(E e) { return true; } public boolean addAll(Collection c) { boolean modified = false; return modified; } } interface Collection<E> {}