<PackageReference Include="NJsonSchema" Version="11.0.2" />

Range

struct Range : IEquatable<Range>
Represent a range has start and end indexes.
using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; namespace System { [ExcludeFromCodeCoverage] internal readonly struct Range : IEquatable<System.Range> { private static class HashHelpers { public static int Combine(int h1, int h2) { uint num = (uint)((h1 << 5) | (int)((uint)h1 >> 27)); return ((int)num + h1) ^ h2; } } private static class ThrowHelper { [System.Diagnostics.CodeAnalysis.DoesNotReturn] public static void ThrowArgumentOutOfRangeException() { throw new ArgumentOutOfRangeException("length"); } } public System.Index Start { get; } public System.Index End { get; } public static System.Range All => new System.Range(System.Index.Start, System.Index.End); public Range(System.Index start, System.Index end) { Start = start; End = end; } [System.Runtime.CompilerServices.NullableContext(2)] public override bool Equals([System.Diagnostics.CodeAnalysis.NotNullWhen(true)] object value) { if (value is System.Range) { System.Range range = (System.Range)value; System.Index index = range.Start; if (index.Equals(Start)) { index = range.End; return index.Equals(End); } } return false; } public bool Equals(System.Range other) { System.Index index = other.Start; if (index.Equals(Start)) { index = other.End; return index.Equals(End); } return false; } public override int GetHashCode() { System.Index index = Start; int hashCode = index.GetHashCode(); index = End; return HashHelpers.Combine(hashCode, index.GetHashCode()); } [System.Runtime.CompilerServices.NullableContext(1)] public override string ToString() { System.Index index = Start; string str = index.ToString(); index = End; return str + ".." + index.ToString(); } public static System.Range StartAt(System.Index start) { return new System.Range(start, System.Index.End); } public static System.Range EndAt(System.Index end) { return new System.Range(System.Index.Start, end); } [MethodImpl(MethodImplOptions.AggressiveInlining)] public (int Offset, int Length) GetOffsetAndLength(int length) { System.Index start = Start; int num = (!start.IsFromEnd) ? start.Value : (length - start.Value); System.Index end = End; int num2 = (!end.IsFromEnd) ? end.Value : (length - end.Value); if ((uint)num2 > (uint)length || (uint)num > (uint)num2) ThrowHelper.ThrowArgumentOutOfRangeException(); return (num, num2 - num); } } }