cloneMap<K, V> method
Return an untyped Map<K, dynamic> with values deep-cloned.
The returned map's values are cloned without attempting typed casts; use this when map values may be heterogeneous or contain nested plain maps.
Preserves the concrete Map implementation (e.g. LinkedHashMap,
HashMap, UnmodifiableMapView).
Implementation
@override
Map<K, dynamic> cloneMap<K, V>(Map<K, V> source) {
final isUnmodifiable = source is UnmodifiableMapView<K, V>;
final entries = source.entries.map(
(e) => MapEntry<K, dynamic>(e.key, cloneValue(e.value)),
);
final Map<K, dynamic> cloned = switch (source) {
LinkedHashMap<K, V>() => LinkedHashMap<K, dynamic>.fromEntries(entries),
HashMap<K, V>() => HashMap<K, dynamic>.fromEntries(entries),
_ => Map<K, dynamic>.fromEntries(entries),
};
return isUnmodifiable ? UnmodifiableMapView<K, dynamic>(cloned) : cloned;
}