cache args length, and utils.assert