case 0: // foo()
return new CallNoArgBlockPassNode(position, receiver, name, args, blockPass);
case 1:
return new CallOneArgBlockPassNode(position, receiver, name, (ArrayNode) args, blockPass);
case 2:
return new CallTwoArgBlockPassNode(position, receiver, name, (ArrayNode) args, blockPass);
case 3:
return new CallThreeArgBlockPassNode(position, receiver, name, (ArrayNode) args, blockPass);
default:
return new CallManyArgsBlockPassNode(position, receiver, name, args, blockPass);
}