public override int BinarySearch(int index, int count, Object value, IComparer comparer)
{
if (index < 0 || count < 0)
throw new ArgumentOutOfRangeException(index < 0 ? nameof(index) : nameof(count), SR.ArgumentOutOfRange_NeedNonNegNum);
if (_baseSize - index < count)
throw new ArgumentException(SR.Argument_InvalidOffLen);
Contract.EndContractBlock();
InternalUpdateRange();
int i = _baseList.BinarySearch(_baseIndex + index, count, value, comparer);
if (i >= 0) return i - _baseIndex;
return i + _baseIndex;
}