protected void handleEvilPopupMgrBackup() {
    	if (RegKey.POPUP_MGR.type != null) return;
        // this will return String (REG_SZ), int (REG_DWORD), or null if the key is missing
        RegKey.POPUP_MGR.type = WindowsUtils.discoverRegistryKeyType(RegKey.POPUP_MGR.key);
        Class<?> backupPopupMgrType = discoverPrefKeyType(RegKey.POPUP_MGR.name());
        if (RegKey.POPUP_MGR.type == null) { // if official PopupMgr key is missing
            if (backupPopupMgrType == null) {
                // we don't know which type it should be; let's take a guess
                // IE6 can deal with a DWORD 0
            	RegKey.POPUP_MGR.type = boolean.class;
                return;
            }
            // non-null backup type is our best guess
            RegKey.POPUP_MGR.type = backupPopupMgrType;
            return;
        }
        if (RegKey.POPUP_MGR.type.equals(backupPopupMgrType)) return;
        
        // if we're here, we know the current type of pop-up manager,
        // and the backup has a different (wrong) type
        if (backupPopupMgrType != null) {
            WindowsUtils.deleteRegistryValue(RegKey.POPUP_MGR.key);
        }
        if (!backupIsReady()) {
            return;
        }
        
        // assume they originally wanted it off, set backup pref to false
        String value = "no";
        if (RegKey.POPUP_MGR.type.equals(boolean.class)) {
        	value = "false";
        }
        prefs.put(RegKey.POPUP_MGR.name(), value);
    }