code: func Unpack(reader io.ReadSeeker, endianness Endianness, data interface{}, offsets ...int64) error {
  
  	switch {
  	// No offset to deal with
  	case len(offsets) == 0:
  		if err := binary.Read(reader, endianness, data); err != nil {
  			return err
  		}
  		// An offset to deal with
  	case len(offsets) == 1:
  		if soughtOffset, err := reader.Seek(offsets[0], os.SEEK_SET); soughtOffset != offsets[0] || err != nil {
  			switch {
  			case err != nil:
  				return err
  			case soughtOffset != offsets[0]:
  				return ErrSeeking
  			default:
  				if err := binary.Read(reader, endianness, data); err != nil {
  					return err
  				}
  			}
  		}
  		// Error if more than one offset
  	default:
  		return ErrMultipleOffsets
  	}
  	return nil
  }
docs: // Unpack data type from reader object. An optional offset can be specified.