code: func (c *Client) UnsubscribeMultiple(topics []string) (GenericFuture, error) {
  	c.mutex.Lock()
  	defer c.mutex.Unlock()
  
  	// check if connected
  	if atomic.LoadUint32(&c.state) != clientConnected {
  		return nil, ErrClientNotConnected
  	}
  
  	// allocate unsubscribe packet
  	unsubscribe := packet.NewUnsubscribe()
  	unsubscribe.Topics = topics
  	unsubscribe.ID = c.Session.NextID()
  
  	// create future
  	unsubscribeFuture := future.New()
  
  	// store future
  	c.futureStore.Put(unsubscribe.ID, unsubscribeFuture)
  
  	// send packet
  	err := c.send(unsubscribe, true)
  	if err != nil {
  		return nil, c.cleanup(err, false, false)
  	}
  
  	return unsubscribeFuture, nil
  }
docs: // UnsubscribeMultiple will send a Unsubscribe packet containing multiple
  // topics to unsubscribe. It will return a UnsubscribeFuture that gets completed
  // once an Unsuback packet has been received.