code: func Deserialize(data []byte) (*Key, error) {
  	if len(data) != 82 {
  		return nil, ErrSerializedKeyWrongSize
  	}
  	var key = &Key{}
  	key.Version = data[0:4]
  	key.Depth = data[4]
  	key.FingerPrint = data[5:9]
  	key.ChildNumber = data[9:13]
  	key.ChainCode = data[13:45]
  
  	if data[45] == byte(0) {
  		key.IsPrivate = true
  		key.Key = data[46:78]
  	} else {
  		key.IsPrivate = false
  		key.Key = data[45:78]
  	}
  
  	// validate checksum
  	cs1, err := checksum(data[0 : len(data)-4])
  	if err != nil {
  		return nil, err
  	}
  
  	cs2 := data[len(data)-4:]
  	for i := range cs1 {
  		if cs1[i] != cs2[i] {
  			return nil, ErrInvalidChecksum
  		}
  	}
  	return key, nil
  }
docs: // Deserialize a byte slice into a Key