I use a self defined waiter, and we don't change it to the new structure, so I can't explain how to use it, maybe other can describe this better.
We use class Timer to wait for special conditions.
Maybe a fast solution for you:
Application app = Application.launch("path"); List<Window> windows = app.GetWindows(); int count = 100;
bool found = false;
while(count !=0 && !found)
if(windows.Exist(p=>p.Title == "title" && p.Visible))
found = true;
windows = app.GetWindows();
Window window = app.GetWindow("title");