frame_class (Debugger::Context)

    /*
     *   call-seq:
     *      context.frame_class(frame_position) -> obj
     *
     *   Returns the real class of the frame.
     *   It could be different than context.frame_self(frame).class
     */
    static VALUE
    context_frame_class(int argc, VALUE *argv, VALUE self)
    {
        VALUE frame;
        debug_context_t *debug_context;
        debug_frame_t *debug_frame;
        VALUE klass;

        debug_check_started();
        frame = optional_frame_position(argc, argv);
        Data_Get_Struct(self, debug_context_t, debug_context);

        debug_frame = GET_FRAME;

        if(CTX_FL_TEST(debug_context, CTX_FL_DEAD))
            return Qnil;

    #if RUBY_VERSION_CODE >= 190
        klass = debug_frame->info.runtime.frame->this_class;
    #else
        klass = debug_frame->info.runtime.frame->last_class;
    #endif

        klass = real_class(klass);
        if(TYPE(klass) == T_CLASS || TYPE(klass) == T_MODULE)
            return klass;
        return Qnil;
    }