code: func (itr *Iterator) Seek(seek uint64) {
  	// k should always be -1 unless we're seeking into a run container. Then the
  	// "if c.isRun" section will take care of it.
  	itr.k = -1
  
  	// Move to the correct container.
  	itr.citer, _ = itr.bitmap.Containers.Iterator(highbits(seek))
  	if !itr.citer.Next() {
  		itr.c = nil
  		return // eof
  	}
  	itr.key, itr.c = itr.citer.Value()
  
  	// Move to the correct value index inside the container.
  	lb := lowbits(seek)
  	if itr.c.isArray() {
  		// Find index in the container.
  		itr.j = search32(itr.c.array(), lb)
  		if itr.j < 0 {
  			itr.j = -itr.j - 1
  		}
  		if itr.j < int32(len(itr.c.array())) {
  			itr.j--
  			return
  		}
  
  		// If it's at the end of the container then move to the next one.
  		if !itr.citer.Next() {
  			itr.c = nil
  			return
  		}
  		itr.key, itr.c = itr.citer.Value()
  		itr.j = -1
  		return
  	}
  
  	if itr.c.isRun() {
  		if seek == 0 {
  			itr.j, itr.k = 0, -1
  		}
  
  		j, contains := binSearchRuns(lb, itr.c.runs())
  		if contains {
  			itr.j = j
  			itr.k = int32(lb) - int32(itr.c.runs()[j].start) - 1
  		} else {
  			// Set iterator to next value in the Bitmap.
  			itr.j = j
  			itr.k = -1
  		}
  
  		return
  	}
  
  	// If it's a bitmap container then move to index before the value and call next().
  	itr.j = int32(lb) - 1
  }
docs: // Seek moves to the first value equal to or greater than `seek`.