Window.open(owner:Window):void set up an implied association between the window's owner and the open state. It implies that the owner will be cleared when the window is closed, when that is not the case. Since ownership is a bi-directional association, failing to clear the owner of a discarded window will leak memory (the owner will maintain a reference to the owned [discarded] window).
We should solidify the association between the window's owner and the open state – a window's owner will only be non-null if the window is open. WindowStateListener.windowClosed() should pass the owner to the listener, since by the time the listener gets the notification, the owner will have been cleared.
Note that this change will constitute an API change to WindowStateListener, and possibly to some open() signatures.