code: func (f *fragment) value(columnID uint64, bitDepth uint) (value uint64, exists bool, err error) {
  	f.mu.Lock()
  	defer f.mu.Unlock()
  
  	// If existence bit is unset then ignore remaining bits.
  	if v, err := f.bit(uint64(bitDepth), columnID); err != nil {
  		return 0, false, errors.Wrap(err, "getting existence bit")
  	} else if !v {
  		return 0, false, nil
  	}
  
  	// Compute other bits into a value.
  	for i := uint(0); i < bitDepth; i++ {
  		if v, err := f.bit(uint64(i), columnID); err != nil {
  			return 0, false, errors.Wrapf(err, "getting value bit %d", i)
  		} else if v {
  			value |= (1 << i)
  		}
  	}
  
  	return value, true, nil
  }
docs: // value uses a column of bits to read a multi-bit value.