public void add(int index, T element) {if (index == size) {add(element);} else if (index < 0 || size < index) {throw new IndexOutOfBoundsException(String.valueOf(index));} else {add(null); for (int oldIdx = size - 2; index <= oldIdx; oldIdx--)set(oldIdx + 1, get(oldIdx));set(index, element);}}

public override void Add(int index, T element){if (index == size){AddItem(element);}else{if (index < 0 || size < index){throw new IndexOutOfRangeException(index.ToString());}else{AddItem(default(T));for (int oldIdx = size - 2; index <= oldIdx; oldIdx--){Set(oldIdx + 1, this[oldIdx]);}Set(index, element);}}}
