@SuppressWarnings("unchecked")
        @Override
        public Response process(Request request, Execution execution) {
            try {
                // start executions in other threads
                List<FutureResponse> futures = new ArrayList<>(parallelism - 1);
                for (int i = 1; i < parallelism; i++) {
                    futures.add(new AsyncExecution(execution).process(request.clone()));
                }

                // complete this execution
                Response response = execution.process(request);

                // wait for other executions and merge the responses
                for (Response additionalResponse : AsyncExecution.waitForAll(futures, 1000)) {
                    additionalResponse.data().completeFuture().get(); // block until we have all the data elements
                    for (Object item : additionalResponse.data().asList())
                        response.data().add((Data) item);
                    response.mergeWith(additionalResponse);
                }
                return response;
            } catch (InterruptedException | ExecutionException e) {
                throw new RuntimeException(e);
            }
        }
Multiples the amount of data returned by parallelism by performing parallel executions of the rest of the chain
container-core/src/test/java/com/yahoo/processing/test/ProcessorLibrary.java