def _down_to_do(rcvr, limit, block):
    block_method = block.get_method()

    i = rcvr.get_embedded_integer()
    if isinstance(limit, Double):
        _down_to_do_double(i, 1, limit.get_embedded_double(), block, block_method)
    else:
        _down_to_do_int(i, 1, limit.get_embedded_integer(), block, block_method)

    return rcvr