private CompletableFuture<SuggestionContext<C, ?>> addSuggestionsForLiteralArgument(
            final @NonNull SuggestionContext<C, ?> context,
            final @NonNull CommandNode<C> node,
            final @NonNull CommandInput input
    ) {
        if (!this.determineAccess(context.commandContext().sender(), node).map(PermissionResult::allowed).orElse(false)) {
            return CompletableFuture.completedFuture(context);
        }
        final CommandComponent<C> component = Objects.requireNonNull(node.component());
        return component.suggestionProvider()
                .suggestionsFuture(context.commandContext(), input.copy())
                .thenApply(suggestionsToAdd -> {
                    final String string = input.peekString();
                    for (Suggestion suggestion : suggestionsToAdd) {
                        if (suggestion.suggestion().equals(string) || !suggestion.suggestion().startsWith(string)) {
                            continue;
                        }
                        context.addSuggestion(suggestion);
                    }
                    return context;
                });
    }
Adds the suggestions for a static argument if they match the given {@code input}

@param context the suggestion context
@param node    the node containing the static argument
@param input   the current input
@return future that completes with the context
cloud-core/src/main/java/org/incendo/cloud/CommandTree.java