If we have the following variable declaration:
List list = new List(5);
Why does this:
list.insert(2, 3);
The size in the constructor tells it how much to allocate for the background array - it is still, however, empty (just: empty with a certain amount of initial space).
You can ony insert into the used part of the list, or at the end.