@Override
		public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
			return map.getAndUpdate(m -> {
				if (m.containsKey(key)) {
					return m;
				}
				Map<K, V> withComputeIfAbsent = copyMap(m);
				withComputeIfAbsent.put(key, mappingFunction.apply(key));
				return withComputeIfAbsent;
			}).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