namespace System.Collections.Generic;
/// Items each there once, in their order: .NET's `SortedSet<T>`.
[Intrinsic]
public class SortedSet<T> : ISet<T>, IReadOnlySet<T> {
public SortedSet() {}
public SortedSet(IComparer<T> comparer) {}
public SortedSet(in IEnumerable<T> collection) {}
public i32 Count { get; }
public bool IsReadOnly { get; }
/// The least item, and the greatest; a panic when there's none.
public T Min { get; }
public T Max { get; }
public readonly IEnumerator<T> GetEnumerator();
public bool Add(T item);
void ICollection<T>.Add(T item);
public void Clear();
public readonly bool Contains(T item);
public bool Remove(T item);
public i32 RemoveWhere(Predicate<T> match);
/// Its items from the greatest down.
public IEnumerable<T> Reverse();
/// Its items from `lowerValue` to `upperValue` (both in): changes go
/// through, both ways.
public SortedSet<T> GetViewBetween(T lowerValue, T upperValue);
public void UnionWith(in IEnumerable<T> other);
public void IntersectWith(in IEnumerable<T> other);
public void ExceptWith(in IEnumerable<T> other);
public void SymmetricExceptWith(in IEnumerable<T> other);
public readonly bool IsSubsetOf(in IEnumerable<T> other);
public readonly bool IsSupersetOf(in IEnumerable<T> other);
/// A subset of `other` that isn't all of it.
public readonly bool IsProperSubsetOf(in IEnumerable<T> other);
public readonly bool IsProperSupersetOf(in IEnumerable<T> other);
public readonly bool Overlaps(in IEnumerable<T> other);
public readonly bool SetEquals(in IEnumerable<T> other);
}