<PackageReference Include="Microsoft.Packaging.Tools" Version="1.0.0-preview2-25401-01" />

System.Collections.Immutable.ImmutableInterlocked

public static class ImmutableInterlocked
namespace System.Collections.Immutable { public static class ImmutableInterlocked { public static bool Update<T>(ref T location, Func<T, T> transformer) where T : class; public static bool Update<T, TArg>(ref T location, Func<T, TArg, T> transformer, TArg transformerArgument) where T : class; public static ImmutableArray<T> InterlockedExchange<T>(ref ImmutableArray<T> location, ImmutableArray<T> value); public static ImmutableArray<T> InterlockedCompareExchange<T>(ref ImmutableArray<T> location, ImmutableArray<T> value, ImmutableArray<T> comparand); public static bool InterlockedInitialize<T>(ref ImmutableArray<T> location, ImmutableArray<T> value); public static TValue GetOrAdd<TKey, TValue, TArg>(ref ImmutableDictionary<TKey, TValue> location, TKey key, Func<TKey, TArg, TValue> valueFactory, TArg factoryArgument); public static TValue GetOrAdd<TKey, TValue>(ref ImmutableDictionary<TKey, TValue> location, TKey key, Func<TKey, TValue> valueFactory); public static TValue GetOrAdd<TKey, TValue>(ref ImmutableDictionary<TKey, TValue> location, TKey key, TValue value); public static TValue AddOrUpdate<TKey, TValue>(ref ImmutableDictionary<TKey, TValue> location, TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory); public static TValue AddOrUpdate<TKey, TValue>(ref ImmutableDictionary<TKey, TValue> location, TKey key, TValue addValue, Func<TKey, TValue, TValue> updateValueFactory); public static bool TryAdd<TKey, TValue>(ref ImmutableDictionary<TKey, TValue> location, TKey key, TValue value); public static bool TryUpdate<TKey, TValue>(ref ImmutableDictionary<TKey, TValue> location, TKey key, TValue newValue, TValue comparisonValue); public static bool TryRemove<TKey, TValue>(ref ImmutableDictionary<TKey, TValue> location, TKey key, out TValue value); public static bool TryPop<T>(ref ImmutableStack<T> location, out T value); public static void Push<T>(ref ImmutableStack<T> location, T value); public static bool TryDequeue<T>(ref ImmutableQueue<T> location, out T value); public static void Enqueue<T>(ref ImmutableQueue<T> location, T value); } }