code: func (b *Bitmap) Shift(n int) (*Bitmap, error) {
  	if n != 1 {
  		return nil, errors.New("cannot shift by a value other than 1")
  	}
  	output := NewBitmap()
  	iiter, _ := b.Containers.Iterator(0)
  	lastCarry := false
  	lastKey := uint64(0)
  	for iiter.Next() {
  		ki, ci := iiter.Value()
  		o, carry := shift(ci)
  		if lastCarry {
  			o.add(0)
  		}
  		if o.n > 0 {
  			output.Containers.Put(ki, o)
  		}
  		lastCarry = carry
  		lastKey = ki
  	}
  	// As long as the carry wasn't from the max container,
  	// append a new container and add the carried bit.
  	if lastCarry && lastKey != maxContainerKey {
  		extra := NewContainerArray([]uint16{0})
  		output.Containers.Put(lastKey+1, extra)
  	}
  
  	return output, nil
  }
docs: // Shift shifts the contents of b by 1.