code: func (b *blockManager) SynchronizeFilterHeaders(f func(uint32) error) error {
  	b.newFilterHeadersMtx.RLock()
  	defer b.newFilterHeadersMtx.RUnlock()
  
  	return f(b.filterHeaderTip)
  }
docs: // SynchronizeFilterHeaders allows the caller to execute a function closure
  // that depends on synchronization with the current set of filter headers. This
  // allows the caller to execute an action that depends on the current filter
  // header state, thereby ensuring that the state would shift from underneath
  // them. Each execution of the closure will have the current filter header tip
  // passed in to ensue that the caller gets a consistent view.