Destroying objects in a SerialiseField list in a specific order

I’m trying to destroy the objects in a SerialiseField list one by one in a specific order (simply the order of the list).

But if I try this:

        [SerializeField] GameObject[] Mylist;
        Int who = 0;
    [...]
void destroyWho()
{
        Destroy(Mylist[who]);
        who++;
}

It always destroy the objects in the same strange order (something like 3-4-5-1-2).

Am I missing something ?

Ok, the problem wasn’t related to the code but with with the animation system.

For some reason if you remove children of an object during animation, it goes wrong.
So I put everyone of these children on empty objects and animated these empty objects instead.