@API(status = API.Status.STABLE)
        public <T> @NonNull Builder<C> optional(
                final @NonNull CloudKey<T> name,
                final @NonNull ParserDescriptor<? super C, T> parser,
                final @NonNull Description description,
                final @NonNull SuggestionProvider<? super C> suggestions
        ) {
            return this.argument(
                    CommandComponent.<C, T>builder(name, parser)
                            .description(description)
                            .optional()
                            .suggestionProvider(suggestions)
                            .build()
            );
        }
Adds the given optional argument to the command.

@param name        the name of the argument
@param parser      the parser
@param description the description of the argument
@param suggestions the suggestion provider
@param <T>         the type produced by the parser
@return new builder instance with the command argument inserted into the argument list
cloud-core/src/main/java/org/incendo/cloud/Command.java