    /*
     *  call-seq:
     *     fis.add_field(name, properties = {} -> fis
     *
     *  Add a new field to the FieldInfos object. See FieldInfo for a description
     *  of the available properties.
     */
    static VALUE
    frt_fis_add_field(int argc, VALUE *argv, VALUE self)
    {
        FieldInfos *fis = (FieldInfos *)DATA_PTR(self);
        FieldInfo *fi;
        enum StoreValues store = fis->store;
        enum IndexValues index = fis->index;
        enum TermVectorValues term_vector = fis->term_vector;
        float boost = 1.0f;
        VALUE rname, roptions;

        rb_scan_args(argc, argv, "11", &rname, &roptions);
        if (argc > 1) {
            frt_fi_get_params(roptions, &store, &index, &term_vector, &boost);
        }
        fi = fi_new(frt_field(rname), store, index, term_vector);
        fi->boost = boost;
        fis_add_field(fis, fi);
        return self;
    }