public static ReadOnlySpan<char> Slice(this string text, int start, int length)
{
if (text == null)
ThrowHelper.ThrowArgumentNullException(ExceptionArgument.text);
int textLength = text.Length;
if ((uint)start > (uint)textLength || (uint)length > (uint)(textLength - start))
ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument.start);
unsafe
{
byte* byteOffset = ((byte*)StringAdjustment) + (uint)(start * sizeof(char));
return new ReadOnlySpan<char>(Unsafe.As<Pinnable<char>>(text), (IntPtr)byteOffset, length);
}
}