@SuppressWarnings("unchecked")
    static <C, U, V, Z> @NonNull AggregateParserTripletBuilder<C, U, V, Z, Triplet<U, V, Z>> tripletBuilder(
            final @NonNull String firstName,
            final @NonNull ParserDescriptor<C, U> firstParser,
            final @NonNull String secondName,
            final @NonNull ParserDescriptor<C, V> secondParser,
            final @NonNull String thirdName,
            final @NonNull ParserDescriptor<C, Z> thirdParser
    ) {
        return new AggregateParserTripletBuilder<>(
                CommandComponent.builder(firstName, firstParser).build(),
                CommandComponent.builder(secondName, secondParser).build(),
                CommandComponent.builder(thirdName, thirdParser).build(),
                AggregateParserTripletBuilder.defaultMapper(),
                (TypeToken<Triplet<U, V, Z>>) TypeToken.get(TypeFactory.parameterizedClass(
                        Triplet.class,
                        GenericTypeReflector.box(firstParser.valueType().getType()),
                        GenericTypeReflector.box(secondParser.valueType().getType()),
                        GenericTypeReflector.box(thirdParser.valueType().getType())
                ))
        );
    }
Returns a new aggregate triplet command parser builder. The builder is immutable, and each method returns
a new builder instance.

@param firstName    the name of the first component
@param firstParser  the parser for the first component
@param secondName   the name of the second component
@param secondParser the parser for the second component
@param thirdName    the name of the third component
@param thirdParser  the parser for the third component
@param <C>          the command sender type
@param <U>          the type of the first component
@param <V>          the type of the second component
@param <Z>          the type of the third component
@return the builder
cloud-core/src/main/java/org/incendo/cloud/parser/aggregate/AggregateParser.java