public override void Sort(int index, int count, IComparer comparer)
{
if (index < 0 || count < 0)
throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum);
Contract.EndContractBlock();
if (_list.Count - index < count)
throw new ArgumentException(SR.Argument_InvalidOffLen);
Object[] array = new Object[count];
CopyTo(index, array, 0, count);
Array.Sort(array, 0, count, comparer);
for (int i = 0; i < count; i++)
_list[i + index] = array[i];
_version++;
}