# System.Collections.Immutable ``` diff +namespace System.Collections.Immutable { + public interface IImmutableDictionary : IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { + IImmutableDictionary Add(TKey key, TValue value); + IImmutableDictionary AddRange(IEnumerable> pairs); + IImmutableDictionary Clear(); + bool Contains(KeyValuePair pair); + IImmutableDictionary Remove(TKey key); + IImmutableDictionary RemoveRange(IEnumerable keys); + IImmutableDictionary SetItem(TKey key, TValue value); + IImmutableDictionary SetItems(IEnumerable> items); + bool TryGetKey(TKey equalKey, out TKey actualKey); + } + public interface IImmutableList : IEnumerable, IEnumerable, IReadOnlyCollection, IReadOnlyList { + IImmutableList Add(T value); + IImmutableList AddRange(IEnumerable items); + IImmutableList Clear(); + int IndexOf(T item, int index, int count, IEqualityComparer equalityComparer); + IImmutableList Insert(int index, T element); + IImmutableList InsertRange(int index, IEnumerable items); + int LastIndexOf(T item, int index, int count, IEqualityComparer equalityComparer); + IImmutableList Remove(T value, IEqualityComparer equalityComparer); + IImmutableList RemoveAll(Predicate match); + IImmutableList RemoveAt(int index); + IImmutableList RemoveRange(IEnumerable items, IEqualityComparer equalityComparer); + IImmutableList RemoveRange(int index, int count); + IImmutableList Replace(T oldValue, T newValue, IEqualityComparer equalityComparer); + IImmutableList SetItem(int index, T value); + } + public interface IImmutableQueue : IEnumerable, IEnumerable { + bool IsEmpty { get; } + IImmutableQueue Clear(); + IImmutableQueue Dequeue(); + IImmutableQueue Enqueue(T value); + T Peek(); + } + public interface IImmutableSet : IEnumerable, IEnumerable, IReadOnlyCollection { + IImmutableSet Add(T value); + IImmutableSet Clear(); + bool Contains(T value); + IImmutableSet Except(IEnumerable other); + IImmutableSet Intersect(IEnumerable other); + bool IsProperSubsetOf(IEnumerable other); + bool IsProperSupersetOf(IEnumerable other); + bool IsSubsetOf(IEnumerable other); + bool IsSupersetOf(IEnumerable other); + bool Overlaps(IEnumerable other); + IImmutableSet Remove(T value); + bool SetEquals(IEnumerable other); + IImmutableSet SymmetricExcept(IEnumerable other); + bool TryGetValue(T equalValue, out T actualValue); + IImmutableSet Union(IEnumerable other); + } + public interface IImmutableStack : IEnumerable, IEnumerable { + bool IsEmpty { get; } + IImmutableStack Clear(); + T Peek(); + IImmutableStack Pop(); + IImmutableStack Push(T value); + } + public static class ImmutableArray { + public static int BinarySearch(this ImmutableArray array, int index, int length, T value); + public static int BinarySearch(this ImmutableArray array, int index, int length, T value, IComparer comparer); + public static int BinarySearch(this ImmutableArray array, T value); + public static int BinarySearch(this ImmutableArray array, T value, IComparer comparer); + public static ImmutableArray Create(); + public static ImmutableArray Create(ImmutableArray items, int start, int length); + public static ImmutableArray Create(T item); + public static ImmutableArray Create(T item1, T item2); + public static ImmutableArray Create(T item1, T item2, T item3); + public static ImmutableArray Create(T item1, T item2, T item3, T item4); + public static ImmutableArray Create(params T[] items); + public static ImmutableArray Create(T[] items, int start, int length); + public static ImmutableArray.Builder CreateBuilder(); + public static ImmutableArray.Builder CreateBuilder(int initialCapacity); + public static ImmutableArray CreateRange(IEnumerable items); + public static ImmutableArray CreateRange(ImmutableArray items, Func selector, TArg arg); + public static ImmutableArray CreateRange(ImmutableArray items, int start, int length, Func selector, TArg arg); + public static ImmutableArray CreateRange(ImmutableArray items, Func selector); + public static ImmutableArray CreateRange(ImmutableArray items, int start, int length, Func selector); + public static ImmutableArray ToImmutableArray(this ImmutableArray.Builder builder); + public static ImmutableArray ToImmutableArray(this IEnumerable items); + } + public struct ImmutableArray : ICollection, ICollection, IEnumerable, IEnumerable, IEquatable>, IImmutableList, IList, IList, IReadOnlyCollection, IReadOnlyList, IStructuralComparable, IStructuralEquatable { + public static readonly ImmutableArray Empty; + public bool IsDefault { get; } + public bool IsDefaultOrEmpty { get; } + public bool IsEmpty { get; } + public int Length { get; } + int System.Collections.Generic.ICollection.Count { get; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + T System.Collections.Generic.IList.this[int index] { get; set; } + int System.Collections.Generic.IReadOnlyCollection.Count { get; } + T System.Collections.Generic.IReadOnlyList.this[int index] { get; } + int System.Collections.ICollection.Count { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IList.IsFixedSize { get; } + bool System.Collections.IList.IsReadOnly { get; } + object System.Collections.IList.this[int index] { get; set; } + public T this[int index] { get; } + public ImmutableArray Add(T item); + public ImmutableArray AddRange(IEnumerable items); + public ImmutableArray AddRange(ImmutableArray items); + public ImmutableArray As() where TOther : class; + public ReadOnlyMemory AsMemory(); + public ReadOnlySpan AsSpan(); + public ImmutableArray CastArray() where TOther : class; + public static ImmutableArray CastUp(ImmutableArray items) where TDerived : class, T; + public ImmutableArray Clear(); + public bool Contains(T item); + public void CopyTo(int sourceIndex, T[] destination, int destinationIndex, int length); + public void CopyTo(T[] destination); + public void CopyTo(T[] destination, int destinationIndex); + public bool Equals(ImmutableArray other); + public override bool Equals(object obj); + public ImmutableArray.Enumerator GetEnumerator(); + public override int GetHashCode(); + public int IndexOf(T item); + public int IndexOf(T item, int startIndex); + public int IndexOf(T item, int startIndex, IEqualityComparer equalityComparer); + public int IndexOf(T item, int startIndex, int count); + public int IndexOf(T item, int startIndex, int count, IEqualityComparer equalityComparer); + public ImmutableArray Insert(int index, T item); + public ImmutableArray InsertRange(int index, IEnumerable items); + public ImmutableArray InsertRange(int index, ImmutableArray items); + public ref readonly T ItemRef(int index); + public int LastIndexOf(T item); + public int LastIndexOf(T item, int startIndex); + public int LastIndexOf(T item, int startIndex, int count); + public int LastIndexOf(T item, int startIndex, int count, IEqualityComparer equalityComparer); + public IEnumerable OfType(); + public static bool operator ==(ImmutableArray left, ImmutableArray right); + public static bool operator ==(ImmutableArray? left, ImmutableArray? right); + public static bool operator !=(ImmutableArray left, ImmutableArray right); + public static bool operator !=(ImmutableArray? left, ImmutableArray? right); + public ImmutableArray Remove(T item); + public ImmutableArray Remove(T item, IEqualityComparer equalityComparer); + public ImmutableArray RemoveAll(Predicate match); + public ImmutableArray RemoveAt(int index); + public ImmutableArray RemoveRange(IEnumerable items); + public ImmutableArray RemoveRange(IEnumerable items, IEqualityComparer equalityComparer); + public ImmutableArray RemoveRange(ImmutableArray items); + public ImmutableArray RemoveRange(ImmutableArray items, IEqualityComparer equalityComparer); + public ImmutableArray RemoveRange(int index, int length); + public ImmutableArray Replace(T oldValue, T newValue); + public ImmutableArray Replace(T oldValue, T newValue, IEqualityComparer equalityComparer); + public ImmutableArray SetItem(int index, T item); + public ImmutableArray Sort(); + public ImmutableArray Sort(IComparer comparer); + public ImmutableArray Sort(Comparison comparison); + public ImmutableArray Sort(int index, int count, IComparer comparer); + void System.Collections.Generic.ICollection.Add(T item); + void System.Collections.Generic.ICollection.Clear(); + bool System.Collections.Generic.ICollection.Remove(T item); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + void System.Collections.Generic.IList.Insert(int index, T item); + void System.Collections.Generic.IList.RemoveAt(int index); + void System.Collections.ICollection.CopyTo(Array array, int index); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + int System.Collections.IList.Add(object value); + void System.Collections.IList.Clear(); + bool System.Collections.IList.Contains(object value); + int System.Collections.IList.IndexOf(object value); + void System.Collections.IList.Insert(int index, object value); + void System.Collections.IList.Remove(object value); + void System.Collections.IList.RemoveAt(int index); + IImmutableList System.Collections.Immutable.IImmutableList.Add(T value); + IImmutableList System.Collections.Immutable.IImmutableList.AddRange(IEnumerable items); + IImmutableList System.Collections.Immutable.IImmutableList.Clear(); + IImmutableList System.Collections.Immutable.IImmutableList.Insert(int index, T element); + IImmutableList System.Collections.Immutable.IImmutableList.InsertRange(int index, IEnumerable items); + IImmutableList System.Collections.Immutable.IImmutableList.Remove(T value, IEqualityComparer equalityComparer); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveAll(Predicate match); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveAt(int index); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveRange(IEnumerable items, IEqualityComparer equalityComparer); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveRange(int index, int count); + IImmutableList System.Collections.Immutable.IImmutableList.Replace(T oldValue, T newValue, IEqualityComparer equalityComparer); + IImmutableList System.Collections.Immutable.IImmutableList.SetItem(int index, T value); + int System.Collections.IStructuralComparable.CompareTo(object other, IComparer comparer); + bool System.Collections.IStructuralEquatable.Equals(object other, IEqualityComparer comparer); + int System.Collections.IStructuralEquatable.GetHashCode(IEqualityComparer comparer); + public ImmutableArray.Builder ToBuilder(); + public sealed class Builder : ICollection, IEnumerable, IEnumerable, IList, IReadOnlyCollection, IReadOnlyList { + public int Capacity { get; set; } + public int Count { get; set; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + public T this[int index] { get; set; } + public void Add(T item); + public void AddRange(ImmutableArray.Builder items); + public void AddRange(IEnumerable items); + public void AddRange(ImmutableArray items); + public void AddRange(ImmutableArray items, int length); + public void AddRange(params T[] items); + public void AddRange(T[] items, int length); + public void AddRange(ImmutableArray.Builder items) where TDerived : T; + public void AddRange(ImmutableArray items) where TDerived : T; + public void AddRange(TDerived[] items) where TDerived : T; + public void Clear(); + public bool Contains(T item); + public void CopyTo(T[] array, int index); + public IEnumerator GetEnumerator(); + public int IndexOf(T item); + public int IndexOf(T item, int startIndex); + public int IndexOf(T item, int startIndex, int count); + public int IndexOf(T item, int startIndex, int count, IEqualityComparer equalityComparer); + public void Insert(int index, T item); + public ref readonly T ItemRef(int index); + public int LastIndexOf(T item); + public int LastIndexOf(T item, int startIndex); + public int LastIndexOf(T item, int startIndex, int count); + public int LastIndexOf(T item, int startIndex, int count, IEqualityComparer equalityComparer); + public ImmutableArray MoveToImmutable(); + public bool Remove(T element); + public void RemoveAt(int index); + public void Reverse(); + public void Sort(); + public void Sort(IComparer comparer); + public void Sort(Comparison comparison); + public void Sort(int index, int count, IComparer comparer); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + public T[] ToArray(); + public ImmutableArray ToImmutable(); + } + public struct Enumerator { + public T Current { get; } + public bool MoveNext(); + } + } + public static class ImmutableDictionary { + public static bool Contains(this IImmutableDictionary map, TKey key, TValue value); + public static ImmutableDictionary Create(); + public static ImmutableDictionary Create(IEqualityComparer keyComparer); + public static ImmutableDictionary Create(IEqualityComparer keyComparer, IEqualityComparer valueComparer); + public static ImmutableDictionary.Builder CreateBuilder(); + public static ImmutableDictionary.Builder CreateBuilder(IEqualityComparer keyComparer); + public static ImmutableDictionary.Builder CreateBuilder(IEqualityComparer keyComparer, IEqualityComparer valueComparer); + public static ImmutableDictionary CreateRange(IEnumerable> items); + public static ImmutableDictionary CreateRange(IEqualityComparer keyComparer, IEnumerable> items); + public static ImmutableDictionary CreateRange(IEqualityComparer keyComparer, IEqualityComparer valueComparer, IEnumerable> items); + public static TValue GetValueOrDefault(this IImmutableDictionary dictionary, TKey key); + public static TValue GetValueOrDefault(this IImmutableDictionary dictionary, TKey key, TValue defaultValue); + public static ImmutableDictionary ToImmutableDictionary(this ImmutableDictionary.Builder builder); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable> source); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable> source, IEqualityComparer keyComparer); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable> source, IEqualityComparer keyComparer, IEqualityComparer valueComparer); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable source, Func keySelector, Func elementSelector); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable source, Func keySelector, Func elementSelector, IEqualityComparer keyComparer); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable source, Func keySelector, Func elementSelector, IEqualityComparer keyComparer, IEqualityComparer valueComparer); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable source, Func keySelector); + public static ImmutableDictionary ToImmutableDictionary(this IEnumerable source, Func keySelector, IEqualityComparer keyComparer); + } + public sealed class ImmutableDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IImmutableDictionary, IReadOnlyCollection>, IReadOnlyDictionary { + public static readonly ImmutableDictionary Empty; + public int Count { get; } + public bool IsEmpty { get; } + public IEqualityComparer KeyComparer { get; } + public IEnumerable Keys { get; } + bool System.Collections.Generic.ICollection>.IsReadOnly { get; } + TValue System.Collections.Generic.IDictionary.this[TKey key] { get; set; } + ICollection System.Collections.Generic.IDictionary.Keys { get; } + ICollection System.Collections.Generic.IDictionary.Values { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IDictionary.IsFixedSize { get; } + bool System.Collections.IDictionary.IsReadOnly { get; } + object System.Collections.IDictionary.this[object key] { get; set; } + ICollection System.Collections.IDictionary.Keys { get; } + ICollection System.Collections.IDictionary.Values { get; } + public TValue this[TKey key] { get; } + public IEqualityComparer ValueComparer { get; } + public IEnumerable Values { get; } + public ImmutableDictionary Add(TKey key, TValue value); + public ImmutableDictionary AddRange(IEnumerable> pairs); + public ImmutableDictionary Clear(); + public bool Contains(KeyValuePair pair); + public bool ContainsKey(TKey key); + public bool ContainsValue(TValue value); + public ImmutableDictionary.Enumerator GetEnumerator(); + public ImmutableDictionary Remove(TKey key); + public ImmutableDictionary RemoveRange(IEnumerable keys); + public ImmutableDictionary SetItem(TKey key, TValue value); + public ImmutableDictionary SetItems(IEnumerable> items); + void System.Collections.Generic.ICollection>.Add(KeyValuePair item); + void System.Collections.Generic.ICollection>.Clear(); + void System.Collections.Generic.ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex); + bool System.Collections.Generic.ICollection>.Remove(KeyValuePair item); + void System.Collections.Generic.IDictionary.Add(TKey key, TValue value); + bool System.Collections.Generic.IDictionary.Remove(TKey key); + IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator(); + void System.Collections.ICollection.CopyTo(Array array, int arrayIndex); + void System.Collections.IDictionary.Add(object key, object value); + void System.Collections.IDictionary.Clear(); + bool System.Collections.IDictionary.Contains(object key); + IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator(); + void System.Collections.IDictionary.Remove(object key); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.Add(TKey key, TValue value); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.AddRange(IEnumerable> pairs); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.Clear(); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.Remove(TKey key); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.RemoveRange(IEnumerable keys); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.SetItem(TKey key, TValue value); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.SetItems(IEnumerable> items); + public ImmutableDictionary.Builder ToBuilder(); + public bool TryGetKey(TKey equalKey, out TKey actualKey); + public bool TryGetValue(TKey key, out TValue value); + public ImmutableDictionary WithComparers(IEqualityComparer keyComparer); + public ImmutableDictionary WithComparers(IEqualityComparer keyComparer, IEqualityComparer valueComparer); + public sealed class Builder : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { + public int Count { get; } + public IEqualityComparer KeyComparer { get; set; } + public IEnumerable Keys { get; } + bool System.Collections.Generic.ICollection>.IsReadOnly { get; } + ICollection System.Collections.Generic.IDictionary.Keys { get; } + ICollection System.Collections.Generic.IDictionary.Values { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IDictionary.IsFixedSize { get; } + bool System.Collections.IDictionary.IsReadOnly { get; } + object System.Collections.IDictionary.this[object key] { get; set; } + ICollection System.Collections.IDictionary.Keys { get; } + ICollection System.Collections.IDictionary.Values { get; } + public TValue this[TKey key] { get; set; } + public IEqualityComparer ValueComparer { get; set; } + public IEnumerable Values { get; } + public void Add(KeyValuePair item); + public void Add(TKey key, TValue value); + public void AddRange(IEnumerable> items); + public void Clear(); + public bool Contains(KeyValuePair item); + public bool ContainsKey(TKey key); + public bool ContainsValue(TValue value); + public ImmutableDictionary.Enumerator GetEnumerator(); + public TValue GetValueOrDefault(TKey key); + public TValue GetValueOrDefault(TKey key, TValue defaultValue); + public bool Remove(KeyValuePair item); + public bool Remove(TKey key); + public void RemoveRange(IEnumerable keys); + void System.Collections.Generic.ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex); + IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator(); + void System.Collections.ICollection.CopyTo(Array array, int arrayIndex); + void System.Collections.IDictionary.Add(object key, object value); + bool System.Collections.IDictionary.Contains(object key); + IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator(); + void System.Collections.IDictionary.Remove(object key); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + public ImmutableDictionary ToImmutable(); + public bool TryGetKey(TKey equalKey, out TKey actualKey); + public bool TryGetValue(TKey key, out TValue value); + } + public struct Enumerator : IDisposable, IEnumerator, IEnumerator> { + public KeyValuePair Current { get; } + object System.Collections.IEnumerator.Current { get; } + public void Dispose(); + public bool MoveNext(); + public void Reset(); + } + } + public static class ImmutableHashSet { + public static ImmutableHashSet Create(); + public static ImmutableHashSet Create(IEqualityComparer equalityComparer); + public static ImmutableHashSet Create(IEqualityComparer equalityComparer, T item); + public static ImmutableHashSet Create(IEqualityComparer equalityComparer, params T[] items); + public static ImmutableHashSet Create(T item); + public static ImmutableHashSet Create(params T[] items); + public static ImmutableHashSet.Builder CreateBuilder(); + public static ImmutableHashSet.Builder CreateBuilder(IEqualityComparer equalityComparer); + public static ImmutableHashSet CreateRange(IEnumerable items); + public static ImmutableHashSet CreateRange(IEqualityComparer equalityComparer, IEnumerable items); + public static ImmutableHashSet ToImmutableHashSet(this ImmutableHashSet.Builder builder); + public static ImmutableHashSet ToImmutableHashSet(this IEnumerable source); + public static ImmutableHashSet ToImmutableHashSet(this IEnumerable source, IEqualityComparer equalityComparer); + } + public sealed class ImmutableHashSet : ICollection, ICollection, IEnumerable, IEnumerable, IImmutableSet, IReadOnlyCollection, IReadOnlySet, ISet { + public static readonly ImmutableHashSet Empty; + public int Count { get; } + public bool IsEmpty { get; } + public IEqualityComparer KeyComparer { get; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + public ImmutableHashSet Add(T item); + public ImmutableHashSet Clear(); + public bool Contains(T item); + public ImmutableHashSet Except(IEnumerable other); + public ImmutableHashSet.Enumerator GetEnumerator(); + public ImmutableHashSet Intersect(IEnumerable other); + public bool IsProperSubsetOf(IEnumerable other); + public bool IsProperSupersetOf(IEnumerable other); + public bool IsSubsetOf(IEnumerable other); + public bool IsSupersetOf(IEnumerable other); + public bool Overlaps(IEnumerable other); + public ImmutableHashSet Remove(T item); + public bool SetEquals(IEnumerable other); + public ImmutableHashSet SymmetricExcept(IEnumerable other); + void System.Collections.Generic.ICollection.Add(T item); + void System.Collections.Generic.ICollection.Clear(); + void System.Collections.Generic.ICollection.CopyTo(T[] array, int arrayIndex); + bool System.Collections.Generic.ICollection.Remove(T item); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + bool System.Collections.Generic.ISet.Add(T item); + void System.Collections.Generic.ISet.ExceptWith(IEnumerable other); + void System.Collections.Generic.ISet.IntersectWith(IEnumerable other); + void System.Collections.Generic.ISet.SymmetricExceptWith(IEnumerable other); + void System.Collections.Generic.ISet.UnionWith(IEnumerable other); + void System.Collections.ICollection.CopyTo(Array array, int arrayIndex); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + IImmutableSet System.Collections.Immutable.IImmutableSet.Add(T item); + IImmutableSet System.Collections.Immutable.IImmutableSet.Clear(); + IImmutableSet System.Collections.Immutable.IImmutableSet.Except(IEnumerable other); + IImmutableSet System.Collections.Immutable.IImmutableSet.Intersect(IEnumerable other); + IImmutableSet System.Collections.Immutable.IImmutableSet.Remove(T item); + IImmutableSet System.Collections.Immutable.IImmutableSet.SymmetricExcept(IEnumerable other); + IImmutableSet System.Collections.Immutable.IImmutableSet.Union(IEnumerable other); + public ImmutableHashSet.Builder ToBuilder(); + public bool TryGetValue(T equalValue, out T actualValue); + public ImmutableHashSet Union(IEnumerable other); + public ImmutableHashSet WithComparer(IEqualityComparer equalityComparer); + public sealed class Builder : ICollection, IEnumerable, IEnumerable, IReadOnlyCollection, ISet { + public int Count { get; } + public IEqualityComparer KeyComparer { get; set; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + public bool Add(T item); + public void Clear(); + public bool Contains(T item); + public void ExceptWith(IEnumerable other); + public ImmutableHashSet.Enumerator GetEnumerator(); + public void IntersectWith(IEnumerable other); + public bool IsProperSubsetOf(IEnumerable other); + public bool IsProperSupersetOf(IEnumerable other); + public bool IsSubsetOf(IEnumerable other); + public bool IsSupersetOf(IEnumerable other); + public bool Overlaps(IEnumerable other); + public bool Remove(T item); + public bool SetEquals(IEnumerable other); + public void SymmetricExceptWith(IEnumerable other); + void System.Collections.Generic.ICollection.Add(T item); + void System.Collections.Generic.ICollection.CopyTo(T[] array, int arrayIndex); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + public ImmutableHashSet ToImmutable(); + public bool TryGetValue(T equalValue, out T actualValue); + public void UnionWith(IEnumerable other); + } + public struct Enumerator : IDisposable, IEnumerator, IEnumerator { + public T Current { get; } + object System.Collections.IEnumerator.Current { get; } + public void Dispose(); + public bool MoveNext(); + public void Reset(); + } + } + public static class ImmutableInterlocked { + public static TValue AddOrUpdate(ref ImmutableDictionary location, TKey key, Func addValueFactory, Func updateValueFactory); + public static TValue AddOrUpdate(ref ImmutableDictionary location, TKey key, TValue addValue, Func updateValueFactory); + public static void Enqueue(ref ImmutableQueue location, T value); + public static TValue GetOrAdd(ref ImmutableDictionary location, TKey key, Func valueFactory, TArg factoryArgument); + public static TValue GetOrAdd(ref ImmutableDictionary location, TKey key, Func valueFactory); + public static TValue GetOrAdd(ref ImmutableDictionary location, TKey key, TValue value); + public static ImmutableArray InterlockedCompareExchange(ref ImmutableArray location, ImmutableArray value, ImmutableArray comparand); + public static ImmutableArray InterlockedExchange(ref ImmutableArray location, ImmutableArray value); + public static bool InterlockedInitialize(ref ImmutableArray location, ImmutableArray value); + public static void Push(ref ImmutableStack location, T value); + public static bool TryAdd(ref ImmutableDictionary location, TKey key, TValue value); + public static bool TryDequeue(ref ImmutableQueue location, out T value); + public static bool TryPop(ref ImmutableStack location, out T value); + public static bool TryRemove(ref ImmutableDictionary location, TKey key, out TValue value); + public static bool TryUpdate(ref ImmutableDictionary location, TKey key, TValue newValue, TValue comparisonValue); + public static bool Update(ref ImmutableArray location, Func, TArg, ImmutableArray> transformer, TArg transformerArgument); + public static bool Update(ref T location, Func transformer, TArg transformerArgument) where T : class; + public static bool Update(ref ImmutableArray location, Func, ImmutableArray> transformer); + public static bool Update(ref T location, Func transformer) where T : class; + } + public static class ImmutableList { + public static ImmutableList Create(); + public static ImmutableList Create(T item); + public static ImmutableList Create(params T[] items); + public static ImmutableList.Builder CreateBuilder(); + public static ImmutableList CreateRange(IEnumerable items); + public static int IndexOf(this IImmutableList list, T item); + public static int IndexOf(this IImmutableList list, T item, IEqualityComparer equalityComparer); + public static int IndexOf(this IImmutableList list, T item, int startIndex); + public static int IndexOf(this IImmutableList list, T item, int startIndex, int count); + public static int LastIndexOf(this IImmutableList list, T item); + public static int LastIndexOf(this IImmutableList list, T item, IEqualityComparer equalityComparer); + public static int LastIndexOf(this IImmutableList list, T item, int startIndex); + public static int LastIndexOf(this IImmutableList list, T item, int startIndex, int count); + public static IImmutableList Remove(this IImmutableList list, T value); + public static IImmutableList RemoveRange(this IImmutableList list, IEnumerable items); + public static IImmutableList Replace(this IImmutableList list, T oldValue, T newValue); + public static ImmutableList ToImmutableList(this ImmutableList.Builder builder); + public static ImmutableList ToImmutableList(this IEnumerable source); + } + public sealed class ImmutableList : ICollection, ICollection, IEnumerable, IEnumerable, IImmutableList, IList, IList, IReadOnlyCollection, IReadOnlyList { + public static readonly ImmutableList Empty; + public int Count { get; } + public bool IsEmpty { get; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + T System.Collections.Generic.IList.this[int index] { get; set; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IList.IsFixedSize { get; } + bool System.Collections.IList.IsReadOnly { get; } + object System.Collections.IList.this[int index] { get; set; } + public T this[int index] { get; } + public ImmutableList Add(T value); + public ImmutableList AddRange(IEnumerable items); + public int BinarySearch(int index, int count, T item, IComparer comparer); + public int BinarySearch(T item); + public int BinarySearch(T item, IComparer comparer); + public ImmutableList Clear(); + public bool Contains(T value); + public ImmutableList ConvertAll(Func converter); + public void CopyTo(int index, T[] array, int arrayIndex, int count); + public void CopyTo(T[] array); + public void CopyTo(T[] array, int arrayIndex); + public bool Exists(Predicate match); + public T Find(Predicate match); + public ImmutableList FindAll(Predicate match); + public int FindIndex(int startIndex, int count, Predicate match); + public int FindIndex(int startIndex, Predicate match); + public int FindIndex(Predicate match); + public T FindLast(Predicate match); + public int FindLastIndex(int startIndex, int count, Predicate match); + public int FindLastIndex(int startIndex, Predicate match); + public int FindLastIndex(Predicate match); + public void ForEach(Action action); + public ImmutableList.Enumerator GetEnumerator(); + public ImmutableList GetRange(int index, int count); + public int IndexOf(T value); + public int IndexOf(T item, int index, int count, IEqualityComparer equalityComparer); + public ImmutableList Insert(int index, T item); + public ImmutableList InsertRange(int index, IEnumerable items); + public ref readonly T ItemRef(int index); + public int LastIndexOf(T item, int index, int count, IEqualityComparer equalityComparer); + public ImmutableList Remove(T value); + public ImmutableList Remove(T value, IEqualityComparer equalityComparer); + public ImmutableList RemoveAll(Predicate match); + public ImmutableList RemoveAt(int index); + public ImmutableList RemoveRange(IEnumerable items); + public ImmutableList RemoveRange(IEnumerable items, IEqualityComparer equalityComparer); + public ImmutableList RemoveRange(int index, int count); + public ImmutableList Replace(T oldValue, T newValue); + public ImmutableList Replace(T oldValue, T newValue, IEqualityComparer equalityComparer); + public ImmutableList Reverse(); + public ImmutableList Reverse(int index, int count); + public ImmutableList SetItem(int index, T value); + public ImmutableList Sort(); + public ImmutableList Sort(IComparer comparer); + public ImmutableList Sort(Comparison comparison); + public ImmutableList Sort(int index, int count, IComparer comparer); + void System.Collections.Generic.ICollection.Add(T item); + void System.Collections.Generic.ICollection.Clear(); + bool System.Collections.Generic.ICollection.Remove(T item); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + void System.Collections.Generic.IList.Insert(int index, T item); + void System.Collections.Generic.IList.RemoveAt(int index); + void System.Collections.ICollection.CopyTo(Array array, int arrayIndex); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + int System.Collections.IList.Add(object value); + void System.Collections.IList.Clear(); + bool System.Collections.IList.Contains(object value); + int System.Collections.IList.IndexOf(object value); + void System.Collections.IList.Insert(int index, object value); + void System.Collections.IList.Remove(object value); + void System.Collections.IList.RemoveAt(int index); + IImmutableList System.Collections.Immutable.IImmutableList.Add(T value); + IImmutableList System.Collections.Immutable.IImmutableList.AddRange(IEnumerable items); + IImmutableList System.Collections.Immutable.IImmutableList.Clear(); + IImmutableList System.Collections.Immutable.IImmutableList.Insert(int index, T item); + IImmutableList System.Collections.Immutable.IImmutableList.InsertRange(int index, IEnumerable items); + IImmutableList System.Collections.Immutable.IImmutableList.Remove(T value, IEqualityComparer equalityComparer); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveAll(Predicate match); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveAt(int index); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveRange(IEnumerable items, IEqualityComparer equalityComparer); + IImmutableList System.Collections.Immutable.IImmutableList.RemoveRange(int index, int count); + IImmutableList System.Collections.Immutable.IImmutableList.Replace(T oldValue, T newValue, IEqualityComparer equalityComparer); + IImmutableList System.Collections.Immutable.IImmutableList.SetItem(int index, T value); + public ImmutableList.Builder ToBuilder(); + public bool TrueForAll(Predicate match); + public sealed class Builder : ICollection, ICollection, IEnumerable, IEnumerable, IList, IList, IReadOnlyCollection, IReadOnlyList { + public int Count { get; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IList.IsFixedSize { get; } + bool System.Collections.IList.IsReadOnly { get; } + object System.Collections.IList.this[int index] { get; set; } + public T this[int index] { get; set; } + public void Add(T item); + public void AddRange(IEnumerable items); + public int BinarySearch(int index, int count, T item, IComparer comparer); + public int BinarySearch(T item); + public int BinarySearch(T item, IComparer comparer); + public void Clear(); + public bool Contains(T item); + public ImmutableList ConvertAll(Func converter); + public void CopyTo(int index, T[] array, int arrayIndex, int count); + public void CopyTo(T[] array); + public void CopyTo(T[] array, int arrayIndex); + public bool Exists(Predicate match); + public T Find(Predicate match); + public ImmutableList FindAll(Predicate match); + public int FindIndex(int startIndex, int count, Predicate match); + public int FindIndex(int startIndex, Predicate match); + public int FindIndex(Predicate match); + public T FindLast(Predicate match); + public int FindLastIndex(int startIndex, int count, Predicate match); + public int FindLastIndex(int startIndex, Predicate match); + public int FindLastIndex(Predicate match); + public void ForEach(Action action); + public ImmutableList.Enumerator GetEnumerator(); + public ImmutableList GetRange(int index, int count); + public int IndexOf(T item); + public int IndexOf(T item, int index); + public int IndexOf(T item, int index, int count); + public int IndexOf(T item, int index, int count, IEqualityComparer equalityComparer); + public void Insert(int index, T item); + public void InsertRange(int index, IEnumerable items); + public ref readonly T ItemRef(int index); + public int LastIndexOf(T item); + public int LastIndexOf(T item, int startIndex); + public int LastIndexOf(T item, int startIndex, int count); + public int LastIndexOf(T item, int startIndex, int count, IEqualityComparer equalityComparer); + public bool Remove(T item); + public int RemoveAll(Predicate match); + public void RemoveAt(int index); + public void Reverse(); + public void Reverse(int index, int count); + public void Sort(); + public void Sort(IComparer comparer); + public void Sort(Comparison comparison); + public void Sort(int index, int count, IComparer comparer); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + void System.Collections.ICollection.CopyTo(Array array, int arrayIndex); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + int System.Collections.IList.Add(object value); + void System.Collections.IList.Clear(); + bool System.Collections.IList.Contains(object value); + int System.Collections.IList.IndexOf(object value); + void System.Collections.IList.Insert(int index, object value); + void System.Collections.IList.Remove(object value); + public ImmutableList ToImmutable(); + public bool TrueForAll(Predicate match); + } + public struct Enumerator : IDisposable, IEnumerator, IEnumerator { + public T Current { get; } + object System.Collections.IEnumerator.Current { get; } + public void Dispose(); + public bool MoveNext(); + public void Reset(); + } + } + public static class ImmutableQueue { + public static ImmutableQueue Create(); + public static ImmutableQueue Create(T item); + public static ImmutableQueue Create(params T[] items); + public static ImmutableQueue CreateRange(IEnumerable items); + public static IImmutableQueue Dequeue(this IImmutableQueue queue, out T value); + } + public sealed class ImmutableQueue : IEnumerable, IEnumerable, IImmutableQueue { + public static ImmutableQueue Empty { get; } + public bool IsEmpty { get; } + public ImmutableQueue Clear(); + public ImmutableQueue Dequeue(); + public ImmutableQueue Dequeue(out T value); + public ImmutableQueue Enqueue(T value); + public ImmutableQueue.Enumerator GetEnumerator(); + public T Peek(); + public ref readonly T PeekRef(); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + IImmutableQueue System.Collections.Immutable.IImmutableQueue.Clear(); + IImmutableQueue System.Collections.Immutable.IImmutableQueue.Dequeue(); + IImmutableQueue System.Collections.Immutable.IImmutableQueue.Enqueue(T value); + public struct Enumerator { + public T Current { get; } + public bool MoveNext(); + } + } + public static class ImmutableSortedDictionary { + public static ImmutableSortedDictionary Create(); + public static ImmutableSortedDictionary Create(IComparer keyComparer); + public static ImmutableSortedDictionary Create(IComparer keyComparer, IEqualityComparer valueComparer); + public static ImmutableSortedDictionary.Builder CreateBuilder(); + public static ImmutableSortedDictionary.Builder CreateBuilder(IComparer keyComparer); + public static ImmutableSortedDictionary.Builder CreateBuilder(IComparer keyComparer, IEqualityComparer valueComparer); + public static ImmutableSortedDictionary CreateRange(IComparer keyComparer, IEnumerable> items); + public static ImmutableSortedDictionary CreateRange(IComparer keyComparer, IEqualityComparer valueComparer, IEnumerable> items); + public static ImmutableSortedDictionary CreateRange(IEnumerable> items); + public static ImmutableSortedDictionary ToImmutableSortedDictionary(this ImmutableSortedDictionary.Builder builder); + public static ImmutableSortedDictionary ToImmutableSortedDictionary(this IEnumerable> source); + public static ImmutableSortedDictionary ToImmutableSortedDictionary(this IEnumerable> source, IComparer keyComparer); + public static ImmutableSortedDictionary ToImmutableSortedDictionary(this IEnumerable> source, IComparer keyComparer, IEqualityComparer valueComparer); + public static ImmutableSortedDictionary ToImmutableSortedDictionary(this IEnumerable source, Func keySelector, Func elementSelector); + public static ImmutableSortedDictionary ToImmutableSortedDictionary(this IEnumerable source, Func keySelector, Func elementSelector, IComparer keyComparer); + public static ImmutableSortedDictionary ToImmutableSortedDictionary(this IEnumerable source, Func keySelector, Func elementSelector, IComparer keyComparer, IEqualityComparer valueComparer); + } + public sealed class ImmutableSortedDictionary : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IImmutableDictionary, IReadOnlyCollection>, IReadOnlyDictionary { + public static readonly ImmutableSortedDictionary Empty; + public int Count { get; } + public bool IsEmpty { get; } + public IComparer KeyComparer { get; } + public IEnumerable Keys { get; } + bool System.Collections.Generic.ICollection>.IsReadOnly { get; } + TValue System.Collections.Generic.IDictionary.this[TKey key] { get; set; } + ICollection System.Collections.Generic.IDictionary.Keys { get; } + ICollection System.Collections.Generic.IDictionary.Values { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IDictionary.IsFixedSize { get; } + bool System.Collections.IDictionary.IsReadOnly { get; } + object System.Collections.IDictionary.this[object key] { get; set; } + ICollection System.Collections.IDictionary.Keys { get; } + ICollection System.Collections.IDictionary.Values { get; } + public TValue this[TKey key] { get; } + public IEqualityComparer ValueComparer { get; } + public IEnumerable Values { get; } + public ImmutableSortedDictionary Add(TKey key, TValue value); + public ImmutableSortedDictionary AddRange(IEnumerable> items); + public ImmutableSortedDictionary Clear(); + public bool Contains(KeyValuePair pair); + public bool ContainsKey(TKey key); + public bool ContainsValue(TValue value); + public ImmutableSortedDictionary.Enumerator GetEnumerator(); + public ImmutableSortedDictionary Remove(TKey value); + public ImmutableSortedDictionary RemoveRange(IEnumerable keys); + public ImmutableSortedDictionary SetItem(TKey key, TValue value); + public ImmutableSortedDictionary SetItems(IEnumerable> items); + void System.Collections.Generic.ICollection>.Add(KeyValuePair item); + void System.Collections.Generic.ICollection>.Clear(); + void System.Collections.Generic.ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex); + bool System.Collections.Generic.ICollection>.Remove(KeyValuePair item); + void System.Collections.Generic.IDictionary.Add(TKey key, TValue value); + bool System.Collections.Generic.IDictionary.Remove(TKey key); + IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator(); + void System.Collections.ICollection.CopyTo(Array array, int index); + void System.Collections.IDictionary.Add(object key, object value); + void System.Collections.IDictionary.Clear(); + bool System.Collections.IDictionary.Contains(object key); + IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator(); + void System.Collections.IDictionary.Remove(object key); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.Add(TKey key, TValue value); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.AddRange(IEnumerable> pairs); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.Clear(); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.Remove(TKey key); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.RemoveRange(IEnumerable keys); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.SetItem(TKey key, TValue value); + IImmutableDictionary System.Collections.Immutable.IImmutableDictionary.SetItems(IEnumerable> items); + public ImmutableSortedDictionary.Builder ToBuilder(); + public bool TryGetKey(TKey equalKey, out TKey actualKey); + public bool TryGetValue(TKey key, out TValue value); + public ref readonly TValue ValueRef(TKey key); + public ImmutableSortedDictionary WithComparers(IComparer keyComparer); + public ImmutableSortedDictionary WithComparers(IComparer keyComparer, IEqualityComparer valueComparer); + public sealed class Builder : ICollection, ICollection>, IDictionary, IDictionary, IEnumerable, IEnumerable>, IReadOnlyCollection>, IReadOnlyDictionary { + public int Count { get; } + public IComparer KeyComparer { get; set; } + public IEnumerable Keys { get; } + bool System.Collections.Generic.ICollection>.IsReadOnly { get; } + ICollection System.Collections.Generic.IDictionary.Keys { get; } + ICollection System.Collections.Generic.IDictionary.Values { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IDictionary.IsFixedSize { get; } + bool System.Collections.IDictionary.IsReadOnly { get; } + object System.Collections.IDictionary.this[object key] { get; set; } + ICollection System.Collections.IDictionary.Keys { get; } + ICollection System.Collections.IDictionary.Values { get; } + public TValue this[TKey key] { get; set; } + public IEqualityComparer ValueComparer { get; set; } + public IEnumerable Values { get; } + public void Add(KeyValuePair item); + public void Add(TKey key, TValue value); + public void AddRange(IEnumerable> items); + public void Clear(); + public bool Contains(KeyValuePair item); + public bool ContainsKey(TKey key); + public bool ContainsValue(TValue value); + public ImmutableSortedDictionary.Enumerator GetEnumerator(); + public TValue GetValueOrDefault(TKey key); + public TValue GetValueOrDefault(TKey key, TValue defaultValue); + public bool Remove(KeyValuePair item); + public bool Remove(TKey key); + public void RemoveRange(IEnumerable keys); + void System.Collections.Generic.ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex); + IEnumerator> System.Collections.Generic.IEnumerable>.GetEnumerator(); + void System.Collections.ICollection.CopyTo(Array array, int index); + void System.Collections.IDictionary.Add(object key, object value); + bool System.Collections.IDictionary.Contains(object key); + IDictionaryEnumerator System.Collections.IDictionary.GetEnumerator(); + void System.Collections.IDictionary.Remove(object key); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + public ImmutableSortedDictionary ToImmutable(); + public bool TryGetKey(TKey equalKey, out TKey actualKey); + public bool TryGetValue(TKey key, out TValue value); + public ref readonly TValue ValueRef(TKey key); + } + public struct Enumerator : IDisposable, IEnumerator, IEnumerator> { + public KeyValuePair Current { get; } + object System.Collections.IEnumerator.Current { get; } + public void Dispose(); + public bool MoveNext(); + public void Reset(); + } + } + public static class ImmutableSortedSet { + public static ImmutableSortedSet Create(); + public static ImmutableSortedSet Create(IComparer comparer); + public static ImmutableSortedSet Create(IComparer comparer, T item); + public static ImmutableSortedSet Create(IComparer comparer, params T[] items); + public static ImmutableSortedSet Create(T item); + public static ImmutableSortedSet Create(params T[] items); + public static ImmutableSortedSet.Builder CreateBuilder(); + public static ImmutableSortedSet.Builder CreateBuilder(IComparer comparer); + public static ImmutableSortedSet CreateRange(IComparer comparer, IEnumerable items); + public static ImmutableSortedSet CreateRange(IEnumerable items); + public static ImmutableSortedSet ToImmutableSortedSet(this ImmutableSortedSet.Builder builder); + public static ImmutableSortedSet ToImmutableSortedSet(this IEnumerable source); + public static ImmutableSortedSet ToImmutableSortedSet(this IEnumerable source, IComparer comparer); + } + public sealed class ImmutableSortedSet : ICollection, ICollection, IEnumerable, IEnumerable, IImmutableSet, IList, IList, IReadOnlyCollection, IReadOnlyList, IReadOnlySet, ISet { + public static readonly ImmutableSortedSet Empty; + public int Count { get; } + public bool IsEmpty { get; } + public IComparer KeyComparer { get; } + public T Max { get; } + public T Min { get; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + T System.Collections.Generic.IList.this[int index] { get; set; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + bool System.Collections.IList.IsFixedSize { get; } + bool System.Collections.IList.IsReadOnly { get; } + object System.Collections.IList.this[int index] { get; set; } + public T this[int index] { get; } + public ImmutableSortedSet Add(T value); + public ImmutableSortedSet Clear(); + public bool Contains(T value); + public ImmutableSortedSet Except(IEnumerable other); + public ImmutableSortedSet.Enumerator GetEnumerator(); + public int IndexOf(T item); + public ImmutableSortedSet Intersect(IEnumerable other); + public bool IsProperSubsetOf(IEnumerable other); + public bool IsProperSupersetOf(IEnumerable other); + public bool IsSubsetOf(IEnumerable other); + public bool IsSupersetOf(IEnumerable other); + public ref readonly T ItemRef(int index); + public bool Overlaps(IEnumerable other); + public ImmutableSortedSet Remove(T value); + public IEnumerable Reverse(); + public bool SetEquals(IEnumerable other); + public ImmutableSortedSet SymmetricExcept(IEnumerable other); + void System.Collections.Generic.ICollection.Add(T item); + void System.Collections.Generic.ICollection.Clear(); + void System.Collections.Generic.ICollection.CopyTo(T[] array, int arrayIndex); + bool System.Collections.Generic.ICollection.Remove(T item); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + void System.Collections.Generic.IList.Insert(int index, T item); + void System.Collections.Generic.IList.RemoveAt(int index); + bool System.Collections.Generic.ISet.Add(T item); + void System.Collections.Generic.ISet.ExceptWith(IEnumerable other); + void System.Collections.Generic.ISet.IntersectWith(IEnumerable other); + void System.Collections.Generic.ISet.SymmetricExceptWith(IEnumerable other); + void System.Collections.Generic.ISet.UnionWith(IEnumerable other); + void System.Collections.ICollection.CopyTo(Array array, int index); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + int System.Collections.IList.Add(object value); + void System.Collections.IList.Clear(); + bool System.Collections.IList.Contains(object value); + int System.Collections.IList.IndexOf(object value); + void System.Collections.IList.Insert(int index, object value); + void System.Collections.IList.Remove(object value); + void System.Collections.IList.RemoveAt(int index); + IImmutableSet System.Collections.Immutable.IImmutableSet.Add(T value); + IImmutableSet System.Collections.Immutable.IImmutableSet.Clear(); + IImmutableSet System.Collections.Immutable.IImmutableSet.Except(IEnumerable other); + IImmutableSet System.Collections.Immutable.IImmutableSet.Intersect(IEnumerable other); + IImmutableSet System.Collections.Immutable.IImmutableSet.Remove(T value); + IImmutableSet System.Collections.Immutable.IImmutableSet.SymmetricExcept(IEnumerable other); + IImmutableSet System.Collections.Immutable.IImmutableSet.Union(IEnumerable other); + public ImmutableSortedSet.Builder ToBuilder(); + public bool TryGetValue(T equalValue, out T actualValue); + public ImmutableSortedSet Union(IEnumerable other); + public ImmutableSortedSet WithComparer(IComparer comparer); + public sealed class Builder : ICollection, ICollection, IEnumerable, IEnumerable, IReadOnlyCollection, ISet { + public int Count { get; } + public IComparer KeyComparer { get; set; } + public T Max { get; } + public T Min { get; } + bool System.Collections.Generic.ICollection.IsReadOnly { get; } + bool System.Collections.ICollection.IsSynchronized { get; } + object System.Collections.ICollection.SyncRoot { get; } + public T this[int index] { get; } + public bool Add(T item); + public void Clear(); + public bool Contains(T item); + public void ExceptWith(IEnumerable other); + public ImmutableSortedSet.Enumerator GetEnumerator(); + public void IntersectWith(IEnumerable other); + public bool IsProperSubsetOf(IEnumerable other); + public bool IsProperSupersetOf(IEnumerable other); + public bool IsSubsetOf(IEnumerable other); + public bool IsSupersetOf(IEnumerable other); + public ref readonly T ItemRef(int index); + public bool Overlaps(IEnumerable other); + public bool Remove(T item); + public IEnumerable Reverse(); + public bool SetEquals(IEnumerable other); + public void SymmetricExceptWith(IEnumerable other); + void System.Collections.Generic.ICollection.Add(T item); + void System.Collections.Generic.ICollection.CopyTo(T[] array, int arrayIndex); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + void System.Collections.ICollection.CopyTo(Array array, int arrayIndex); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + public ImmutableSortedSet ToImmutable(); + public bool TryGetValue(T equalValue, out T actualValue); + public void UnionWith(IEnumerable other); + } + public struct Enumerator : IDisposable, IEnumerator, IEnumerator { + public T Current { get; } + object System.Collections.IEnumerator.Current { get; } + public void Dispose(); + public bool MoveNext(); + public void Reset(); + } + } + public static class ImmutableStack { + public static ImmutableStack Create(); + public static ImmutableStack Create(T item); + public static ImmutableStack Create(params T[] items); + public static ImmutableStack CreateRange(IEnumerable items); + public static IImmutableStack Pop(this IImmutableStack stack, out T value); + } + public sealed class ImmutableStack : IEnumerable, IEnumerable, IImmutableStack { + public static ImmutableStack Empty { get; } + public bool IsEmpty { get; } + public ImmutableStack Clear(); + public ImmutableStack.Enumerator GetEnumerator(); + public T Peek(); + public ref readonly T PeekRef(); + public ImmutableStack Pop(); + public ImmutableStack Pop(out T value); + public ImmutableStack Push(T value); + IEnumerator System.Collections.Generic.IEnumerable.GetEnumerator(); + IEnumerator System.Collections.IEnumerable.GetEnumerator(); + IImmutableStack System.Collections.Immutable.IImmutableStack.Clear(); + IImmutableStack System.Collections.Immutable.IImmutableStack.Pop(); + IImmutableStack System.Collections.Immutable.IImmutableStack.Push(T value); + public struct Enumerator { + public T Current { get; } + public bool MoveNext(); + } + } +} ```