code: func (l *PropertyList) UnmarshalBinary(data []byte) error {
  	headerSize := int32Size * 3
  
  	for {
  		p := new(Property)
  
  		err := p.UnmarshalBinary(data)
  		if err != nil {
  			return err
  		}
  
  		*l = append(*l, p)
  
  		offset := headerSize + p.header.Length
  		data = data[offset:]
  
  		if len(data) == 0 {
  			return nil
  		}
  	}
  }
docs: // UnmarshalBinary implements the encoding.BinaryUnmarshaler interface