use ctx.alloc().buffer()