namespace System { interface IComparable { int32 CompareTo(T other); } public interface IComparer { int Compare(T x, T y); } interface IOpEquatable { static bool operator==(Self lhs, Self other); } interface IOpEquatable { static bool operator==(Self lhs, TRight other); } interface IOpComparable { static int operator<=>(Self lhs, Self rhs); } interface IOpComparable { static int operator<=>(Self lhs, TRight rhs); } interface IOpAddable { static Self operator+(Self lhs, Self rhs); } interface IOpSubtractable { static Self operator-(Self lhs, Self rhs); } interface IOpMultipliable { static Self operator*(Self lhs, Self rhs); } interface IOpDividable { static Self operator/(Self lhs, Self rhs); } interface IOpBitwiseAndable { static Self operator&(Self lhs, Self rhs); } interface IOpBitwiseOrable { static Self operator|(Self lhs, Self rhs); } interface IOpExclusiveOrable { static Self operator^(Self lhs, Self rhs); } interface IOpLeftShiftable { static Self operator^(Self lhs, int rhs); } interface IOpRightShiftable { static Self operator^(Self lhs, int rhs); } interface IOpNegatable { static Self operator-(Self value); } interface IOpConvertibleTo { static operator T(Self value); } interface IOpConvertibleFrom { static operator Self(T value); } interface IIsNaN { bool IsNaN { get; } } interface ICanBeNaN : IIsNaN { } public delegate int Comparison(T lhs, T rhs); }