/// <summary>
 /// Removes all values inside current dictionary stored under provided <paramref name="key"/>
 /// in the context of the provided cluster <paramref name="node"/>.
 /// </summary>
 public ORMultiValueDictionary <TKey, TValue> Remove(UniqueAddress node, TKey key)
 {
     if (_withValueDeltas)
     {
         var u = Underlying.AddOrUpdate(node, key, ORSet <TValue> .Empty, true, existing => existing.Clear(node));
         return(new ORMultiValueDictionary <TKey, TValue>(u.RemoveKey(node, key), _withValueDeltas));
     }
     else
     {
         return(new ORMultiValueDictionary <TKey, TValue>(Underlying.Remove(node, key), _withValueDeltas));
     }
 }
 /// <summary>
 /// Removes an entry from the map.
 /// Note that if there is a conflicting update on another node the entry will
 /// not be removed after merge.
 /// </summary>
 public PNCounterDictionary <TKey> Remove(UniqueAddress node, TKey key) =>
 new PNCounterDictionary <TKey>(_underlying.Remove(node, key));
 /// <summary>
 /// Removes all values inside current dictionary stored under provided <paramref name="key"/>
 /// in the context of the provided cluster <paramref name="node"/>.
 /// </summary>
 public ORMultiDictionary<TKey, TValue> Remove(UniqueAddress node, TKey key) => 
     new ORMultiDictionary<TKey, TValue>(_underlying.Remove(node, key));