@Override
  public synchronized V putIfAbsent(K key, V value) {
    V oldValue = map.get(key);
    if (oldValue == null) {
      put(key, value);
      return null;
    } else {
      return oldValue;
    }
  }
A copy on write hash map.

Note that the entryKey and keySet of this map are unmodifable. Should be easy to make them
modifiable at a future time.
geode-core/src/main/java/org/apache/geode/internal/util/concurrent/CopyOnWriteHashMap.java