@Override
		public V remove(Object key) {
			return map.getAndUpdate(m -> {
				Map<K, V> withRemove = copyMap(m);
				withRemove.remove(key);
				return withRemove;
			}).get(key);
		}
Extension point: Create a mutable copy of the given map

@param map the map to copy
@return the mutable copy
Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/util/CopyOnWrite.java