pub(crate) fn eval_method(
        &mut self,
        method: FnId,
        self_val: impl Into<Value>,
        slice: &[Value],
        args: &Args2,
    ) -> VMResult {
        let self_val = self_val.into();
        self.stack_push(self_val);
        self.stack.extend_from_slice(slice);
        self.invoke_method(method, args, true)?.handle(self)
    }
Evaluate the method with given `self_val`, `args` and no outer context.
ruruby/src/vm/executor/method.rs