extension CastDeepMaps on Map { Map castKeyDeep() { return cast().map((key, value) { if (value is Map) { return MapEntry(key, value.castKeyDeep()); } else if (value is List) { return MapEntry( key, value.map((e) => e is Map ? e.castKeyDeep() : e).toList(), ); } return MapEntry(key, value); }); } }