type Holder {
    value: ref<i32>,
}

fn replaceValue(holder: mutref<Holder>, next: ref<i32>) -> i32 {
    holder.value = next
    return 0
}

pub fn main() -> Void {
    var old: i32 = 1
    let next: i32 = 2
    var holder: Holder = Holder { value: &old }
    let values: [1]i32 = [1]
    let value: i32 = rescue std.mem.get(values, 0) err replaceValue(&mut holder, &next)
    old = 3
}
