code: func (f *FileNameV3) UnmarshalBinary(data []byte) error {
  	buf := bytes.NewBuffer(data)
  
  	fields := []interface{}{
  		&f.Length, &f.Flags, &f.CaseType, &f.ID,
  	}
  
  	for _, p := range fields {
  		if err := binary.Read(buf, binary.LittleEndian, p); err != nil {
  			return err
  		}
  	}
  
  	f.Name = string(buf.Next(int(f.Length)))
  
  	return nil
  }
docs: // UnmarshalBinary implements the encoding.BinaryUnmarshaler interface