public static IDictionary <TKey, TValue> MergeDifference <TKey, TValue>(this IDictionary <TKey, TValue> first, IDictionary <TKey, TValue> second)
        {
            if (first == null)
            {
                return(second);
            }

            if (second == null)
            {
                return(first);
            }

            return(second.Concat(first).GroupBy(k => k.Key, v => v.Value).ToDictionary(d => d.Key, d => d.First()));
        }