public static Dictionary<TKey, HashSet<T>> Merge<TKey, T>(this Dictionary<TKey, HashSet<T>> destination, Dictionary<TKey, HashSet<T>> source)
{
if (destination.Count == 0)
{
destination.AddRange(source);
return destination;
}
if (source.Count == 0)
return destination;
foreach (var keyValuePair in source)
{
if (destination.Keys.Contains(keyValuePair.Key))
destination[keyValuePair.Key].UnionWith(keyValuePair.Value);
else
destination.Add(keyValuePair.Key, keyValuePair.Value);
}
return destination;
}