private Exchange processAllResults(Exchange origExchange, Iterable splitResult) throws Exception { Exchange aggregate = null; Iterator iterator = splitResult.iterator(); int counter = 0; while (iterator.hasNext()) { Object splitPart = iterator.next(); SplitIndex idx = SplitIndex.valueOf(counter, !iterator.hasNext()); Exchange subExchange = processResult(origExchange, idx, splitPart); aggregate = doAggregate(aggregate, subExchange); ++counter; } return aggregate; }