/// <summary>
 /// Initializes a new instance of the <see cref="ReadOnlyObservableRangeDictionary{TKey, TValue}"/> class
 /// </summary>
 /// <param name="observableRangeDictionary">The <see cref="IObservableRangeDictionary{TKey, TValue}"/> around which to wrap</param>
 public ReadOnlyObservableRangeDictionary(IObservableRangeDictionary <TKey, TValue> observableRangeDictionary) : base(observableRangeDictionary)
 {
     observableRangeDictionary.CollectionChanged        += HandleCollectionChanged;
     observableRangeDictionary.GenericCollectionChanged += HandleGenericCollectionChanged;
     ((INotifyDictionaryChanged)observableRangeDictionary).DictionaryChanged += HandleDictionaryChanged;
     ((INotifyDictionaryChanged <TKey, TValue>)observableRangeDictionary).DictionaryChanged += HandleDictionaryChanged;
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="ReadOnlyObservableRangeDictionary{TKey, TValue}"/> class
 /// </summary>
 /// <param name="observableRangeDictionary">The <see cref="IObservableRangeDictionary{TKey, TValue}"/> around which to wrap</param>
 public ReadOnlyObservableRangeDictionary(IObservableRangeDictionary <TKey, TValue> observableRangeDictionary) : base(observableRangeDictionary)
 {
     if (observableRangeDictionary is null)
     {
         throw new ArgumentNullException(nameof(observableRangeDictionary));
     }
     observableRangeDictionary.CollectionChanged        += HandleCollectionChanged;
     observableRangeDictionary.GenericCollectionChanged += HandleGenericCollectionChanged;
     ((INotifyDictionaryChanged)observableRangeDictionary).DictionaryChanged += HandleDictionaryChanged;
     ((INotifyDictionaryChanged <TKey, TValue>)observableRangeDictionary).DictionaryChanged += HandleDictionaryChanged;
 }