    /*
     *  call-seq:
     *     query_parser.fields = fields -> self
     *
     *  Set the list of fields. These fields are expanded for searches on "*".
     */
    static VALUE
    frt_qp_set_fields(VALUE self, VALUE rfields)
    {
        GET_QP;
        HashSet *fields = frt_get_fields(rfields);

        if (qp->def_fields == qp->all_fields) {
            qp->def_fields = NULL;
        }
        if (fields == NULL) {
            fields = hs_new_str(&free);
        }
        hs_destroy(qp->all_fields);
        qp->all_fields = fields;
        if (qp->def_fields == NULL) {
            qp->def_fields = fields;
        }

        return self;
    }