Okay there's one left in 'peek' that does a bounds check on the array and I really want to push back on that one, enabling it only in debug mode, making it opt-in rather than opt-out.

This branch will hit me on every single loop iteration, and, if all goes well (i.e. this hashtable is implemented correctly, which I believe it does given that I can do a stage3 bootstrap on the compiler which relies heavily on a working hashtable), this code is functionally useless.

Furthermore, as a user of a hashtable, I don't expect it to bounds check. Why would it? Users never pass in indexes, only indexes decided by the hashtable itself. If the hashtable has a bug which calculates an out of bounds index, it's exceedingly likely that it be found during bootstrap/test. If it isn't, then users can STILL opt-into the bounds checking with -debug on their own code and get a nice line number of the bug that they can submit.