Window::GetChildren() returns a list of children in "ZOrder" - windows "on top" are higher in the list than the windows which are underneith. The recorder looks at the windows exactly the same way, which is why GetChildren appears to match the window declaration. Spy++ also uses that same ordering. I believe (don't have my references here) that this is simply a reflection of the order of the windows in the data tree.

In any case, a simple test indicates that left/right and top/bottom considerations are not relevant.