code: func (m *lockingMap) Add(key string, val interface{}) bool {
  	m.keyLocker.Lock(key)
  	defer m.keyLocker.Unlock(key)
  
  	m.lock.Lock()
  	defer m.lock.Unlock()
  
  	_, ok := m.data[key]
  	if ok && (m.checkFunc == nil || m.checkFunc(key, val)) {
  		return false
  	}
  
  	// Did not exist or failed to check
  	m.data[key] = val
  	return true
  }
docs: // Add safely adds a value to the map if and only if the key is not already in the map.
  // This is a convenience function if the value you want to add is not hard to calculate.
  // Else, look at AddOrGet for a more appropriate method for hard-to-derive values
  // (such as things that require setting up network connections).