    /*
     *  call-seq:
     *     index_reader.get_norms_into(field, buffer, offset) -> buffer
     *
     *  Expert: Get the norm values into a string +buffer+ starting at +offset+.
     */
    static VALUE
    frt_ir_get_norms_into(VALUE self, VALUE rfield, VALUE rnorms, VALUE roffset)
    {
        IndexReader *ir = (IndexReader *)DATA_PTR(self);
        int offset;
        offset = FIX2INT(roffset);
        Check_Type(rnorms, T_STRING);
        if (RSTRING(rnorms)->len < offset + ir->max_doc(ir)) {
            rb_raise(rb_eArgError, "supplied a string of length:%d to "
                     "IndexReader#get_norms_into but needed a string of length "
                     "offset:%d + maxdoc:%d",
                     RSTRING(rnorms)->len, offset, ir->max_doc(ir));
        }

        ir_get_norms_into(ir, frt_field(rfield),
                          (uchar *)RSTRING(rnorms)->ptr + offset);
        return rnorms;
    }