code: func (pc *P) WithMutex(key interface{}, fn func()) {
  	// Get a lock for this config key, and increment its reference.
  	me := pc.getConfigLock(key)
  	defer pc.decRef(me, key)
  
  	// Hold this lock's mutex and call "fn".
  	me.Lock()
  	defer me.Unlock()
  
  	fn()
  }
docs: // WithMutex locks the Mutex matching the specified key and executes fn while
  // holding its lock.
  //
  // If a mutex for key doesn't exist, one will be created, and will be
  // automatically cleaned up when no longer referenced.