def Array.get.go
import Base2584def Array.get.go(-T: Data, a: Array<T>, n: U32, +i: U32, z: Bool) -> Array<T> & T:
2585 match a z:
2586 case ALeaf{+x} _:
2587 (ALeaf{x}, x)
2588 case ANode{xs, ys} True{}:
2589 +h = U32.shr(n)
2590 Array.swap.lo(T, ys, Array.get.go(T, xs, h, i, U32.is_lt(i, U32.shr(h))))
2591 case ANode{xs, ys} False{}:
2592 +h = U32.shr(n)
2593 +j = U32.sub(i, h)
2594 Array.swap.hi(T, xs, Array.get.go(T, ys, h, j, U32.is_lt(j, U32.shr(h))))