public @NonNull TypedCommandComponent<C, T> build() {
            ArgumentParser<C, T> parser = null;
            if (this.parser != null) {
                parser = this.parser;
            } else if (this.commandManager != null) {
                parser = this.commandManager.parserRegistry()
                        .createParser(this.valueType, ParserParameters.empty())
                        .orElse(null);
            }
            if (parser == null) {
                parser = (ctx, input) -> ArgumentParseResult.failure(
                        new UnsupportedOperationException("No parser was specified"));
            }

            final ComponentType componentType;
            if (this.parser instanceof LiteralParser) {
                componentType = ComponentType.LITERAL;
            } else if (this.parser instanceof CommandFlagParser) {
                componentType = ComponentType.FLAG;
            } else if (this.required) {
                componentType = ComponentType.REQUIRED_VARIABLE;
            } else {
                componentType = ComponentType.OPTIONAL_VARIABLE;
            }

            final SuggestionProvider<C> suggestionProvider;
            if (this.suggestionProvider == null) {
                suggestionProvider = parser.suggestionProvider();
            } else {
                suggestionProvider = this.suggestionProvider;
            }

            return new TypedCommandComponent<>(
                    Objects.requireNonNull(this.name, "name"),
                    parser,
                    Objects.requireNonNull(this.valueType, "valueType"),
                    Objects.requireNonNull(this.description, "description"),
                    componentType,
                    this.defaultValue,
                    suggestionProvider,
                    Objects.requireNonNull(this.componentPreprocessors, "componentPreprocessors")
            );
        }
Builds a command component using this builder.

<p>Each invocation produces a unique component.</p>

@return the built component
cloud-core/src/main/java/org/incendo/cloud/component/CommandComponent.java