I ran another test on the speed of BitVector vs. OpenBitSet. Unless the DocIdSetIterator is faster for OpenBitSet vs an equivalent for BitVector, BV is faster when it's bounds checking is removed. I'm trying to figure out a good way to allow a modified version of BitVector that does not do bounds checking. BitVector is final, but perhaps making it non-final and creating a FastBitVector instantiated by SegmentReader from a (is there an alternative) system property is one way to go.