jetbrick-commons/src/main/java/jetbrick/collections/CopyOnWriteMap.java
@Override
    public V put(K key, V value) {
        synchronized (this) {
            Map<K, V> newMap = new HashMap<K, V>(internalMap);
            V val = newMap.put(key, value);
            internalMap = newMap;
            return val;
        }
    }
@Override
    public V put(K key, V value) {
        synchronized (this) {
            Map<K, V> newMap = new HashMap<K, V>(internalMap);
            V val = newMap.put(key, value);
            internalMap = newMap;
            return val;
        }
    }
*
Adds the provided key and value to this map.

@see java.util.Map#put(java.lang.Object, java.lang.Object)