This setup seems a little weird to me. Why not just use this as the definition of grow itself? Also, it's somewhat confusing to see a function called grow and move that has nothing to do with the OpenHashSet's internal growth and movement, but rather just used as a default no-op function.