Ti qualifichi che "open" sia disponibile nella tua dichiarazione if, ma "Desktop" non è sempre disponibile e non è racchiuso in una dichiarazione di qualificazione. In altre parole, "Desktop" non è sempre una chiave, ma il tuo ciclo la cerca sempre finché è definita la chiave "open".