@API(status = API.Status.STABLE)
    public @NonNull CompletableFuture<@Nullable Command<C>> parse(
            final @NonNull CommandContext<C> commandContext,
            final @NonNull CommandInput commandInput,
            final @NonNull Executor parsingExecutor
    ) {
        return CompletableFutures.scheduleOn(parsingExecutor, () -> this.parseDirect(commandContext, commandInput, parsingExecutor))
                .thenApply(command -> {
                    if (command != null) {
                        commandContext.command(command);
                    }
                    return command;
                });
    }
Attempts to parse a command from the provided input.

@param commandContext  command context instance
@param commandInput    command input
@param parsingExecutor executor to schedule parsing logic on
@return parsed command, if one could be found
cloud-core/src/main/java/org/incendo/cloud/CommandTree.java