code: func (b *Bitmap) CountRange(start, end uint64) (n uint64) {
  	if b.Containers.Size() == 0 {
  		return
  	}
  
  	skey := highbits(start)
  	ekey := highbits(end)
  
  	citer, found := b.Containers.Iterator(highbits(start))
  	// If range is entirely in one container then just count that range.
  	if found && skey == ekey {
  		citer.Next()
  		_, c := citer.Value()
  		return uint64(c.countRange(int32(lowbits(start)), int32(lowbits(end))))
  	}
  
  	for citer.Next() {
  		k, c := citer.Value()
  		if k < skey {
  			// TODO remove once we've validated this stuff works
  			panic("should be impossible for k to be less than skey")
  		}
  		if k == skey {
  			n += uint64(c.countRange(int32(lowbits(start)), maxContainerVal+1))
  			continue
  		}
  		if k < ekey {
  			n += uint64(c.n)
  			continue
  		}
  		if k == ekey {
  			n += uint64(c.countRange(0, int32(lowbits(end))))
  			break
  		}
  		if k > ekey {
  			break
  		}
  	}
  	return n
  }
docs: // CountRange returns the number of bits set between [start, end).