import java.util.*; class Main { <T, R> Collector<T, R> m(Supplier<? extends R> supplier, BiConsumer<R, T> accumulator) { return null; } <T, C extends Collection<T>> Collector<T, C> test1(Supplier<C> collectionFactory) { return m(collectionFactory, Collection::add); } Collector<String, StringBuilder> test2(Supplier<StringBuilder> sb) { return m(sb, StringBuilder::append); } interface Supplier<T> { public T get(); } interface Collector<T, R> { } interface BiConsumer<T, U> { void accept(T t, U u); } }