@Override
    public CompletableFuture<@Nullable Void> executeFuture(
            final @NonNull CommandContext<C> commandContext
    ) {
        @MonotonicNonNull CompletableFuture<@Nullable Void> composedHandler = null;

        if (this.handlers.isEmpty()) {
            composedHandler = CompletableFuture.completedFuture(null);
        } else {
            for (final CommandExecutionHandler<C> handler : this.handlers) {
                if (composedHandler == null) {
                    composedHandler = handler.executeFuture(commandContext);
                } else {
                    composedHandler = composedHandler.thenCompose(
                            ignore -> handler.executeFuture(commandContext)
                    );
                }
            }
        }

        return composedHandler;
    }
Delegates to other handlers.

@param <C> command sender type
@see #delegatingExecutionHandler(List)
cloud-core/src/main/java/org/incendo/cloud/execution/MulticastDelegateFutureCommandExecutionHandler.java