code: func (f *fragment) min(filter *Row, bitDepth uint) (min, count uint64, err error) {
  
  	consider := f.row(uint64(bitDepth))
  	if filter != nil {
  		consider = consider.Intersect(filter)
  	}
  
  	// If there are no columns to consider, return early.
  	if consider.Count() == 0 {
  		return 0, 0, nil
  	}
  
  	for i := bitDepth; i > uint(0); i-- {
  		ii := i - 1 // allow for uint range: (bitDepth-1) to 0
  		row := f.row(uint64(ii))
  
  		x := consider.Difference(row)
  		count = x.Count()
  		if count > 0 {
  			consider = x
  		} else {
  			min += (1 << ii)
  			if ii == 0 {
  				count = consider.Count()
  			}
  		}
  	}
  
  	return min, count, nil
  }
docs: // min returns the min of a given bsiGroup as well as the number of columns involved.
  // A bitmap can be passed in to optionally filter the computed columns.