docs: public static Object invokeEach(InvocationContext ctx, Iterator<VisitableCommand> subCommands,
                                     BaseAsyncInterceptor interceptor, Object finalReturnValue) {
        if (!subCommands.hasNext())
           return finalReturnValue;
  
        MultiSubCommandInvoker invoker = new MultiSubCommandInvoker(interceptor, finalReturnValue, subCommands);
        VisitableCommand newCommand = subCommands.next();
        return interceptor.invokeNextThenApply(ctx, newCommand, invoker);
     }