Do I correctly assume that this encode/decode stuff is why there's a HitSet and a HitSetImpl which it contains?
I generally find it intensely unsatisfying, especially since the HitSet constructor takes parameters which are only for the BloomHitSet.