def do_call(aargs, caller_ep, caller_env, scratch, replace_recv_ty,, replace_cref,, &ctn)
aargs = scratch.globalize_type(aargs, caller_env, caller_ep)
dummy_ctx = TypedContext.new(@caller_ep, @mid)
scratch.add_block_signature!(self, aargs.to_block_signature)
scratch.add_block_to_ctx!(self, dummy_ctx)
@blk.call(aargs, caller_ep, caller_env, scratch, replace_recv_ty: replace_recv_ty, replace_cref: replace_cref) do |ret_ty, ep, env|
scratch.add_return_value!(dummy_ctx, ret_ty)
ctn[ret_ty, ep, env]
end
end