Forse ho capito dove sta il problema (senza nemmeno averlo verificato).
Ho predisposto un metodo per pulire l'array indexes settando tutti gli elementi a 0.
Il ciclo usa una sola istanza di indexes che di volta in volta viene aggiunta a indici (l'ArrayList), ma suppongo che una volta ripulito indexes, essendo esso un riferimento, tutti gli indexes copiati in indici assumeranno gli stessi valori, cioè tutti 0.
E infatti solitamente l'ultimo passo del ciclo fa sì che indexes venga ripulito.
Può essere dovuto a questo?
E se non facessi mai la chiamata al metodo per ripulirlo, tutti gli array di indici avrebbero gli stessi valori? Ad esempio:
1 3 6 2 4
1 3 6 2 4
1 3 6 2 4
1 3 6 2 4
...
Giusto?