Dúvida sobre listas estáticas java

Olá pessoal estou com uma duvida sobre listas estaticas, gostaria de saber porque o método
public void insert(E element, int pos)
//desloca para a direita os elementos necessários
//abrindo espaço para um novo elemento
for(int i = numElements -1;i>=pos;i–)
elements [i+1]=elements [i]
// gostaria de saber porque tem o i+1 dentro do array ??

A resposta para essa pergunta está nas duas linhas em comentário acima do seu laço.
A cada iteração ele pega o elemento na posição atual ( i ) e coloca na próxima posição ( i + 1 ).
Como esse laço executa de trás pra frente (começa na última posição e vai vinda pra posição pos) ao final da iteração a posição pos receberá o elemento passado por parâmetro e todos os elementos nas posições maiores que pos estarão deslocados à direita.

Talvez se você reescrever assim, fica mais legível:

for (int i = numElements - 1; i >= pos; i--) {
    int posicaoAtual = i;
    int posicaoSeguinte = i + 1;
    E elementoTrocandoDeLugar = elements[posicaoAtual];
    elements[posicaoSeguinte] = elementoTrocandoDeLugar;