/// <summary>
 /// Adds a key/value pair to the concurrent dictionary if the key does not
 /// already exist, or updates a key/value pair in the concurrent dictionary
 /// if the key already exists.
 /// </summary>
 public static TValue AddOrUpdate <TArg>(SystemConcurrent.ConcurrentDictionary <TKey, TValue> concurrentDictionary,
                                         TKey key, Func <TKey, TArg, TValue> addValueFactory, Func <TKey, TValue, TArg, TValue> updateValueFactory,
                                         TArg factoryArgument)
 {
     Helper.Interleave();
     return(concurrentDictionary.AddOrUpdate(key, addValueFactory, updateValueFactory, factoryArgument));
 }
 /// <summary>
 /// Adds a key/value pair to the concurrent dictionary if the key does not
 /// already exist, or updates a key/value pair in the concurrent dictionary
 /// if the key already exists.
 /// </summary>
 public static TValue AddOrUpdate(SystemConcurrent.ConcurrentDictionary <TKey, TValue> concurrentDictionary,
                                  TKey key, TValue addValue, Func <TKey, TValue, TValue> updateValueFactory)
 {
     Helper.Interleave();
     return(concurrentDictionary.AddOrUpdate(key, addValue, updateValueFactory));
 }