There are two notions of `unsafe_length`; should they have separate names? (The one on the RHS is unsafe because of overflow; the one on the left is unsafe because a certain amount of code uses `length` in ways that don't work when arrays don't index starting at 1.) 