public override int LastIndexOf(Object value, int startIndex, int count) { InternalUpdateRange(); if (_baseSize == 0) return -1; if (startIndex >= _baseSize) throw new ArgumentOutOfRangeException(nameof(startIndex), SR.ArgumentOutOfRange_Index); if (startIndex < 0) throw new ArgumentOutOfRangeException(nameof(startIndex), SR.ArgumentOutOfRange_NeedNonNegNum); int i = _baseList.LastIndexOf(value, _baseIndex + startIndex, count); if (i >= 0) return i - _baseIndex; return -1; }