code: func (vd *VariantDictionary) readVariantDictionary(data []byte) error {
  	r := bytes.NewReader(data)
  
  	if err := binary.Read(r, binary.LittleEndian, &vd.Version); err != nil {
  		return err
  	}
  
  	for {
  		vdi := new(VariantDictionaryItem)
  		if err := binary.Read(r, binary.LittleEndian, &vdi.Type); err != nil {
  			return err
  		}
  
  		if vdi.Type != 0x00 {
  			if err := binary.Read(r, binary.LittleEndian, &vdi.NameLength); err != nil {
  				return err
  			}
  			vdi.Name = make([]byte, vdi.NameLength)
  			if err := binary.Read(r, binary.LittleEndian, &vdi.Name); err != nil {
  				return err
  			}
  
  			if err := binary.Read(r, binary.LittleEndian, &vdi.ValueLength); err != nil {
  				return err
  			}
  			vdi.Value = make([]byte, vdi.ValueLength)
  			if err := binary.Read(r, binary.LittleEndian, &vdi.Value); err != nil {
  				return err
  			}
  
  			vd.Items = append(vd.Items, vdi)
  		} else {
  			break
  		}
  	}
  	return nil
  }
docs: // readVariantDictionary reads a variant dictionary