import java.util.Arrays; import java.util.List; import java.util.function.Function; import static java.util.stream.Collectors.toList; abstract class FooBar { abstract void collect(List collector); void foo(FooBar objectStream) { objectStream. collect(toList( )); } static List toList() { return null; } } class Test { List> foo(List objects, Function... functions) { return objects.stream() .map(object -> Arrays.stream(functions) .map(fn -> fn.apply(object)) .collect(toList())) .collect(toList()); } }