class Builder {

        /**
         * Utility constructor.
         */
        private Builder() {
        }

        /**
         * Creates new {@link ZAddArgs} and enabling {@literal NX}.
         *
         * @return new {@link ZAddArgs} with {@literal NX} enabled.
         * @see ZAddArgs#nx()
         */
        public static ZAddArgs nx() {
            return new ZAddArgs().nx();
        }

        /**
         * Creates new {@link ZAddArgs} and enabling {@literal XX}.
         *
         * @return new {@link ZAddArgs} with {@literal XX} enabled.
         * @see ZAddArgs#xx()
         */
        public static ZAddArgs xx() {
            return new ZAddArgs().xx();
        }

        /**
         * Creates new {@link ZAddArgs} and enabling {@literal CH}.
         *
         * @return new {@link ZAddArgs} with {@literal CH} enabled.
         * @see ZAddArgs#ch()
         */
        public static ZAddArgs ch() {
            return new ZAddArgs().ch();
        }

        /**
         * Creates new {@link ZAddArgs} and enabling {@literal GT}.
         *
         * @return new {@link ZAddArgs} with {@literal GT} enabled.
         * @see ZAddArgs#gt()
         * @since 6.1
         */
        public static ZAddArgs gt() {
            return new ZAddArgs().gt();
        }

        /**
         * Creates new {@link ZAddArgs} and enabling {@literal LT}.
         *
         * @return new {@link ZAddArgs} with {@literal LT} enabled.
         * @see ZAddArgs#lt()
         * @since 6.1
         */
        public static ZAddArgs lt() {
            return new ZAddArgs().lt();
        }

    }

    /**
     * Don't update already existing elements. Always add new elements.
     *
     * @return {@code this} {@link ZAddArgs}.
     */
    public ZAddArgs nx() {

        this.nx = true;
        return this;
    }

    /**
     * Only update elements that already exist. Never add elements.
     *
     * @return {@code this} {@link ZAddArgs}.
     */
    public ZAddArgs xx() {

        this.xx = true;
        return this;
    }

    /**
     * Modify the return value from the number of new elements added, to the total number of elements changed.
     *
     * @return {@code this} {@link ZAddArgs}.
     */
    public ZAddArgs ch() {

        this.ch = true;
        return this;
    }

    /**
     * Only update existing elements if the new score is greater than the current score. This flag doesn't prevent adding new
     * elements.
     *
     * @return {@code this} {@link ZAddArgs}.
     * @since 6.1
     */
    public ZAddArgs gt() {

        this.gt = true;
        this.lt = false;
        return this;
    }

    /**
     * Only update existing elements if the new score is less than the current score. This flag doesn't prevent adding new
     * elements.
     *
     * @return {@code this} {@link ZAddArgs}.
     * @since 6.1
     */
    public ZAddArgs lt() {

        this.lt = true;
        this.gt = false;
        return this;
    }

    @Override
    public <K, V> void build(CommandArgs<K, V> args) {<FILL_FUNCTION_BODY>


        if (nx) {
            args.add(NX);
        }

        if (xx) {
            args.add(XX);
        }

        if (gt) {
            args.add("GT");
        }

        if (lt) {
            args.add("LT");
        }

        if (ch) {
            args.add(CH);
        }
    
<no_super_class>