class Builder {

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

        /**
         * Creates new {@link ClientListArgs} setting {@literal client-id}.
         *
         * @param id client ids.
         * @return new {@link ClientListArgs} with {@literal client-id} set.
         * @see ClientListArgs#ids(long...)
         */
        public static ClientListArgs ids(long... id) {
            return new ClientListArgs().ids(id);
        }

        /**
         * Creates new {@link ClientListArgs} setting {@literal TYPE PUBSUB}.
         *
         * @return new {@link ClientListArgs} with {@literal TYPE PUBSUB} set.
         * @see ClientListArgs#type(Type)
         */
        public static ClientListArgs typePubsub() {
            return new ClientListArgs().type(Type.PUBSUB);
        }

        /**
         * Creates new {@link ClientListArgs} setting {@literal TYPE NORMAL}.
         *
         * @return new {@link ClientListArgs} with {@literal TYPE NORMAL} set.
         * @see ClientListArgs#type(Type)
         */
        public static ClientListArgs typeNormal() {
            return new ClientListArgs().type(Type.NORMAL);
        }

        /**
         * Creates new {@link ClientListArgs} setting {@literal TYPE MASTER}.
         *
         * @return new {@link ClientListArgs} with {@literal TYPE MASTER} set.
         * @see ClientListArgs#type(Type)
         */
        public static ClientListArgs typeMaster() {
            return new ClientListArgs().type(Type.MASTER);
        }

        /**
         * Creates new {@link ClientListArgs} setting {@literal TYPE REPLICA}.
         *
         * @return new {@link ClientListArgs} with {@literal TYPE REPLICA} set.
         * @see ClientListArgs#type(Type)
         */
        public static ClientListArgs typeReplica() {
            return new ClientListArgs().type(Type.REPLICA);
        }

    }

    /**
     * Filter the clients with its client {@code ids}.
     *
     * @param ids client ids
     * @return {@code this} {@link ClientListArgs}.
     */
    public ClientListArgs ids(long... ids) {
        LettuceAssert.notNull(ids, "Ids must not be null");

        this.ids = new ArrayList<>(ids.length);

        for (long id : ids) {
            this.ids.add(id);
        }
        return this;
    }

    /**
     * This filters the connections of all the clients in the specified {@link ClientListArgs.Type}. Note that clients blocked
     * into the {@literal MONITOR} command are considered to belong to the normal class.
     *
     * @param type must not be {@code null}.
     * @return {@code this} {@link ClientListArgs}.
     */
    public ClientListArgs type(Type type) {<FILL_FUNCTION_BODY>


        LettuceAssert.notNull(type, "Type must not be null");

        this.type = type;
        return this;
    
<no_super_class>