For Each … Next will skip elements if the array is reduced during the loop

What’s the point of having a For Each construct if it behaves exactly the same as a regular For Next? Seems to me that the Xojo developers could spend their time more constructively.

For index As Integer = 0 To arrWindow.Ubound Dim win As Window = arrWindows(index) ... Next
The built-in For Each … Next is syntactic sugar for a For … Next loop, where one does not care about the order of the traversal, and one does not need to access the index within the loop. This just is easier to read than the above:

For Each win As Window In arrWindow ... Next

For each works without knowing in advance the bound of the loop. It is useful to avoid the dreaded Out of bound exception.

As for Xojo time, your point could have been discussed about 16 years ago at least, when it was implemented. Now it is here and cost no extra development time.

For each + Iterable classes, as available in the new framework

Very useful

From my C training back in 1983 - if you are iterating an array in a loop and need to remove elements, either copy to a new array as you iterate, leaving out the removed elements, or iterate top down removing only previously iterated elements.