code: func (ret *sparseBitArray) Deserialize(incoming []byte) error {
  	var intsize = uint64(s / 8)
  	var curLoc = uint64(1) // Ignore the identifier byte
  
  	var intsToRead uint64
  	var bytesRead int
  	intsToRead, bytesRead = Uint64FromBytes(incoming[curLoc : curLoc+intsize])
  	if bytesRead < 0 {
  		return errors.New("Invalid data for BitArray")
  	}
  	curLoc += intsize
  
  	var nextblock uint64
  	ret.blocks = make([]block, intsToRead)
  	for i := uint64(0); i < intsToRead; i++ {
  		nextblock, bytesRead = Uint64FromBytes(incoming[curLoc : curLoc+intsize])
  		if bytesRead < 0 {
  			return errors.New("Invalid data for BitArray")
  		}
  		ret.blocks[i] = block(nextblock)
  		curLoc += intsize
  	}
  
  	intsToRead, bytesRead = Uint64FromBytes(incoming[curLoc : curLoc+intsize])
  	if bytesRead < 0 {
  		return errors.New("Invalid data for BitArray")
  	}
  	curLoc += intsize
  
  	var nextuint uint64
  	ret.indices = make(uintSlice, intsToRead)
  	for i := uint64(0); i < intsToRead; i++ {
  		nextuint, bytesRead = Uint64FromBytes(incoming[curLoc : curLoc+intsize])
  		if bytesRead < 0 {
  			return errors.New("Invalid data for BitArray")
  		}
  		ret.indices[i] = nextuint
  		curLoc += intsize
  	}
  	return nil
  }
docs: // Deserialize takes the incoming byte slice, and populates the sparseBitArray
  // with data in the bytes. Note that this will overwrite any capacity
  // specified when creating the sparseBitArray. Also note that if an error
  // is returned, the sparseBitArray this is called on might be populated
  // with partial data.