<PackageReference Include="Microsoft.Packaging.Tools" Version="1.0.0-preview1-25301-01" />

System.Collections.Immutable.ImmutableInterlocked

public static class ImmutableInterlocked
public static TValue AddOrUpdate<TKey, TValue>(ref ImmutableDictionary location, TKey key, Func<TKey, TValue> addValueFactory, Func<TKey, TValue, TValue> updateValueFactory)

public static TValue AddOrUpdate<TKey, TValue>(ref ImmutableDictionary location, TKey key, TValue addValue, Func<TKey, TValue, TValue> updateValueFactory)

public static void Enqueue<T>(ref ImmutableQueue location, T value)

public static TValue GetOrAdd<TKey, TValue, TArg>(ref ImmutableDictionary location, TKey key, Func<TKey, TArg, TValue> valueFactory, TArg factoryArgument)

public static TValue GetOrAdd<TKey, TValue>(ref ImmutableDictionary location, TKey key, Func<TKey, TValue> valueFactory)

public static TValue GetOrAdd<TKey, TValue>(ref ImmutableDictionary location, TKey key, TValue value)

public static ImmutableArray<T> InterlockedCompareExchange<T>(ref ImmutableArray location, ImmutableArray<T> value, ImmutableArray<T> comparand)

public static ImmutableArray<T> InterlockedExchange<T>(ref ImmutableArray location, ImmutableArray<T> value)

public static bool InterlockedInitialize<T>(ref ImmutableArray location, ImmutableArray<T> value)

public static void Push<T>(ref ImmutableStack location, T value)

public static bool TryAdd<TKey, TValue>(ref ImmutableDictionary location, TKey key, TValue value)

public static bool TryDequeue<T>(ref ImmutableQueue location, out T value)

public static bool TryPop<T>(ref ImmutableStack location, out T value)

public static bool TryRemove<TKey, TValue>(ref ImmutableDictionary location, TKey key, out TValue value)

public static bool TryUpdate<TKey, TValue>(ref ImmutableDictionary location, TKey key, TValue newValue, TValue comparisonValue)

public static bool Update<T>(ref T location, Func<T, T> transformer)

public static bool Update<T, TArg>(ref T location, Func<T, TArg, T> transformer, TArg transformerArgument)