code: func (fs *Filters) addTopicMatcher(watcher *Filter) {
  	if len(watcher.Topics) == 0 {
  		fs.allTopicsMatcher[watcher] = struct{}{}
  	} else {
  		for _, t := range watcher.Topics {
  			topic := BytesToTopic(t)
  			if fs.topicMatcher[topic] == nil {
  				fs.topicMatcher[topic] = make(map[*Filter]struct{})
  			}
  			fs.topicMatcher[topic][watcher] = struct{}{}
  		}
  	}
  }
docs: // addTopicMatcher adds a filter to the topic matchers.
  // If the filter's Topics array is empty, it will be tried on every topic.
  // Otherwise, it will be tried on the topics specified.