code: func (cl *Client) AddTorrentInfoHashWithStorage(infoHash metainfo.Hash, specStorage storage.ClientImpl) (t *Torrent, new bool) {
  	cl.lock()
  	defer cl.unlock()
  	t, ok := cl.torrents[infoHash]
  	if ok {
  		return
  	}
  	new = true
  
  	t = cl.newTorrent(infoHash, specStorage)
  	cl.eachDhtServer(func(s *dht.Server) {
  		go t.dhtAnnouncer(s)
  	})
  	cl.torrents[infoHash] = t
  	cl.clearAcceptLimits()
  	t.updateWantPeersEvent()
  	// Tickle Client.waitAccept, new torrent may want conns.
  	cl.event.Broadcast()
  	return
  }
docs: // Adds a torrent by InfoHash with a custom Storage implementation.
  // If the torrent already exists then this Storage is ignored and the
  // existing torrent returned with `new` set to `false`