public bool IsMerged(OverridableDictionary <T> obj)
        {
            if (this == obj)
            {
                return(true);
            }
            if (Count != obj.Count)
            {
                return(false);
            }

            foreach (var pair in obj)
            {
                T srcV;
                if (!TryGetValue(pair.Key, out srcV))
                {
                    return(false);
                }

                if (!srcV.IsMerged(pair.Value))
                {
                    return(false);
                }
            }

            return(true);
        }
        public void Merge(OverridableDictionary <T> obj)
        {
            if (this == obj)
            {
                return;
            }

            Clear();
            foreach (var pair in obj)
            {
                Add(pair.Key, pair.Value.Copy());
            }
        }
 public OverridableDictionary(OverridableDictionary <T> src) : base(src)
 {
 }