Compiling `def m; yield; end` produces the bytecode below. What does it show about how `yield` works under the hood?
# ISeq m:
# 0000 invokeblock <calldata!argc:0, ARGS_SIMPLE>
# 0002 leave
# (and the outer scope emits: definemethod :m, m / putobject :m)