public void CopyTo(KeyValuePair <TKey, TValue>[] array, int arrayIndex)
        {
            // Take a snapshot of the current list with a converter
            var list = ListSelect.Create(_internalCollection.List, node => node.KeyValuePair);

            list.CopyTo(array, arrayIndex);
        }
 public void Clear()
 {
     DoReadWriteNotify(
         // Get the list of keys and values from the internal list
         () => ListSelect.Create(_internalCollection.List, x => x.KeyValuePair),
         // remove the keys from the dictionary, remove the range from the list
         (items) => ImmutableDictionaryListPair <TKey, TValue> .Empty,
         // Notify which items were removed
         (items) => new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, items, 0)
         );
 }
        public IList <KeyValuePair <TKey, TValue> > GetRange(int index, int count)
        {
            var subList = List.GetRange(index, count);

            return(ListSelect.Create(subList, (s) => s.KeyValuePair));
        }
        void ICollection.CopyTo(Array array, int arrayIndex)
        {
            var list = ListSelect.Create(_internalCollection.List, node => node.KeyValuePair);

            ((ICollection)list).CopyTo(array, arrayIndex);
        }