public IRubyObject call(ThreadContext context, IRubyObject[] args, IRubyObject self) {
assert args != null;
Ruby runtime = getRuntime();
Block newBlock = block.cloneBlock();
JumpTarget jumpTarget = newBlock.getBinding().getFrame().getJumpTarget();
try {
if (self != null) newBlock.getBinding().setSelf(self);
return newBlock.call(context, args);