array_continue(i_ctx_t *i_ctx_p)
{
    os_ptr op = osp;
    es_ptr obj = esp - 1;

    if (r_size(obj)) {		/* continue */
        push(1);
        r_dec_size(obj, 1);
        *op = *obj->value.refs;
        obj->value.refs++;
        esp += 2;
        *esp = obj[1];
        return o_push_estack;
    } else {			/* done */
        esp -= 3;		/* pop mark, object, proc */
        return o_pop_estack;
    }
}
array_continue(i_ctx_t *i_ctx_p)
{
    os_ptr op = osp;
    es_ptr obj = esp - 1;

    if (r_size(obj)) {		 
        push(1);
        r_dec_size(obj, 1);
        *op = *obj->value.refs;
        obj->value.refs++;
        esp += 2;
        *esp = obj[1];
        return o_push_estack;
    } else {			 
        esp -= 3;		 
        return o_pop_estack;
    }
}