I think BitSet's behavior where it's virtually infinitely large by default is a mistake. I'd rather you add a `size` bit, and throw if you try to get out of bounds.