public static <R,A,B>CompletionStage<R> combine(CompletionStage<A> a,CompletionStage<B> b,BiFunction<A,B,R> function){
  return a.thenCombine(b,function);
}

public static < R , A , B > CompletionStage < R > combine ( CompletionStage < A > a , CompletionStage < B > b , BiFunction < A , B , R > function ) { return a . thenCombine ( b , function ) ; }
combines multiple stages by applying a function .
