    /*
     *  call-seq:
     *     lazy_doc.default(key) -> string
     *
     *  This method is used internally to lazily load fields. You should never
     *  really need to call it yourself.
     */
    static VALUE
    frt_lzd_default(VALUE self, VALUE rkey)
    {
        LazyDoc *lazy_doc = (LazyDoc *)DATA_PTR(rb_ivar_get(self, id_data));
        char *field = NULL;
        switch (TYPE(rkey)) {
            case T_STRING:
                field = RSTRING(rkey)->ptr;
                rkey = ID2SYM(rb_intern(field));
                break;
            case T_SYMBOL:
                field = frt_field(rkey);
                break;
            default:
                rb_raise(rb_eArgError,
                         "%s cannot be a key to a field. Field keys must "
                         " be symbols.", RSTRING(rb_obj_as_string(rkey))->ptr);
                break;
        }
        return frt_lazy_df_load(self, rkey, h_get(lazy_doc->field_dict, field));
    }