code: func (p *sharedProcessor) shouldResync() bool {
  	p.listenersLock.Lock()
  	defer p.listenersLock.Unlock()
  
  	p.syncingListeners = []*processorListener{}
  
  	resyncNeeded := false
  	now := p.clock.Now()
  	for _, listener := range p.listeners {
  		// need to loop through all the listeners to see if they need to resync so we can prepare any
  		// listeners that are going to be resyncing.
  		if listener.shouldResync(now) {
  			resyncNeeded = true
  			p.syncingListeners = append(p.syncingListeners, listener)
  			listener.determineNextResync(now)
  		}
  	}
  	return resyncNeeded
  }
docs: // shouldResync queries every listener to determine if any of them need a resync, based on each
  // listener's resyncPeriod.