public T this[int index] { get { if (index >= _size) throw new ArgumentOutOfRangeException(nameof(index)); return _items[index]; } set { if (index >= _size) throw new ArgumentOutOfRangeException(nameof(index)); _items[index] = value; _version++; } }