Correct. I'm avoiding a check here for the size being a power of 2 because the class is only 250 lines of code, including copyright notices and documentation. If you are changing the size such that initTable gets called with a non-power of 2, and you can't read this much code, well... :-\

As it is this class has some strange restrictions, like callers of the class *MUST* ensure they use add() *ONLY* if contains() would return false for the object. Otherwise its unpredictable what happens when there are duplicate mappings for an ObjectId.