pub(crate) fn create_lambda(&mut self, block: &Block) -> VMResult {
        match block {
            Block::Block(method, outer) => {
                let outer = self.cfp_from_frame(*outer);
                let self_val = outer.self_value();
                let mut iseq = self.globals.methods[*method].as_iseq();
                iseq.kind = ISeqKind::Method(None);
                Ok(Value::procobj(self, self_val, *method, outer))
            }
            Block::Proc(proc) => Ok(*proc),
            _ => unimplemented!(),
        }
    }
Create new Lambda object from `block`,
moving outer `Context`s on stack to heap.
ruruby/src/vm/executor.rs