cloneMapTyped<K, V> method
Return a typed Map<K, V> with values deep-cloned.
Preserves the concrete Map implementation (e.g. LinkedHashMap,
HashMap, UnmodifiableMapView).
Throws UnsupportedTypedCloneException if a nested plain Map is
encountered during typed cloning.
Implementation
@override
Map<K, V> cloneMapTyped<K, V>(Map<K, V> source) {
final isUnmodifiable = source is UnmodifiableMapView<K, V>;
final entries = source.entries.map(
(e) => MapEntry<K, V>(e.key, _cloneValueTyped(e.value)),
);
final Map<K, V> cloned = switch (source) {
LinkedHashMap<K, V>() => LinkedHashMap<K, V>.fromEntries(entries),
HashMap<K, V>() => HashMap<K, V>.fromEntries(entries),
_ => Map<K, V>.fromEntries(entries),
};
return isUnmodifiable ? UnmodifiableMapView<K, V>(cloned) : cloned;
}