code: func (bf *BitField) UnmarshalBinary(bs []byte) error {
  	buf := bytes.NewBuffer(bs)
  	n, err := binary.ReadUvarint(buf)
  	if err != nil {
  		return err
  	}
  	if n > math.MaxUint32 {
  		return fmt.Errorf("encoded number is out of range: %d > %d", n, uint32(math.MaxUint32))
  	}
  
  	size := uint32(n)
  	if size == 0 {
  		bf.size = 0
  		bf.data = nil
  		return nil
  	}
  	data := buf.Bytes()
  	if uint32(len(data)) != (size+8-1)>>3 {
  		return fmt.Errorf("mismatched size (%d) v. byte count (%d)", size, len(data))
  	}
  
  	bf.size = size
  	bf.data = data
  	return nil
  }
docs: // UnmarshalBinary implements encoding.BinaryUnmarshaler