public ORMultiValueDictionary <TKey, TValue> Merge(ORMultiValueDictionary <TKey, TValue> other)
        {
            if (_withValueDeltas == other._withValueDeltas)
            {
                return(_withValueDeltas
                    ? new ORMultiValueDictionary <TKey, TValue>(Underlying.MergeRetainingDeletedValues(other.Underlying), _withValueDeltas)
                    : new ORMultiValueDictionary <TKey, TValue>(Underlying.Merge(other.Underlying), _withValueDeltas));
            }

            throw new ArgumentException($"Trying to merge two ORMultiValueDictionaries of different map sub-types");
        }
        public bool Equals(ORMultiValueDictionary <TKey, TValue> other)
        {
            if (ReferenceEquals(other, null))
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return(Equals(Underlying, other.Underlying));
        }