Map actualOptions= getOptions();
Map actualOptions= getOptions(false);
	public boolean performOk(boolean enabled) {		packTodoTasks();		String[] allKeys= getAllKeys();		Map actualOptions= getOptions();				// preserve other options		boolean hasChanges= false;		for (int i= 0; i < allKeys.length; i++) {			String key= allKeys[i];			String oldVal= (String) actualOptions.get(key);			String val= null;			if (enabled) {				val= (String) fWorkingValues.get(key);				if (!val.equals(oldVal)) {					hasChanges= true;					actualOptions.put(key, val);				}			} else {				if (oldVal != null) {					actualOptions.remove(key);					hasChanges= true;				}			}		}						if (hasChanges) {			String title= JavaUIMessages.getString("CompilerConfigurationBlock.needsbuild.title"); //$NON-NLS-1$			String message;			if (fProject == null) {				message= JavaUIMessages.getString("CompilerConfigurationBlock.needsfullbuild.message"); //$NON-NLS-1$			} else {				message= JavaUIMessages.getString("CompilerConfigurationBlock.needsprojectbuild.message"); //$NON-NLS-1$			}										MessageDialog dialog= new MessageDialog(getShell(), title, null, message, MessageDialog.QUESTION, new String[] { IDialogConstants.YES_LABEL, IDialogConstants.NO_LABEL, IDialogConstants.CANCEL_LABEL }, 2);			int res= dialog.open();			if (res != 0 && res != 1) {				return false;			}						setOptions(actualOptions);			if (res == 0) {				doFullBuild();			}		}		return true;	}