code: func (ret *bitArray) Deserialize(incoming []byte) error {
  	r := bytes.NewReader(incoming[1:]) // Discard identifier
  
  	err := binary.Read(r, binary.LittleEndian, &ret.lowest)
  	if err != nil {
  		return err
  	}
  
  	err = binary.Read(r, binary.LittleEndian, &ret.highest)
  	if err != nil {
  		return err
  	}
  
  	var encodedanyset uint8
  	err = binary.Read(r, binary.LittleEndian, &encodedanyset)
  	if err != nil {
  		return err
  	}
  
  	// anyset defaults to false so we don't need an else statement
  	if encodedanyset == 1 {
  		ret.anyset = true
  	}
  
  	var nextblock block
  	err = binary.Read(r, binary.LittleEndian, &nextblock)
  	for err == nil {
  		ret.blocks = append(ret.blocks, nextblock)
  		err = binary.Read(r, binary.LittleEndian, &nextblock)
  	}
  	if err != io.EOF {
  		return err
  	}
  	return nil
  }
docs: // Deserialize takes the incoming byte slice, and populates the bitArray
  // with data in the bytes. Note that this will overwrite any capacity
  // specified when creating the bitArray. Also note that if an error is returned,
  // the bitArray this is called on might be populated with partial data.