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

@param name         the name of the argument
@param parser       the parser
@param defaultValue the default value
@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