Bug 49182 What should canceling setRawClasspath do ?
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/preferences/OptionsConfigurationBlock.java
fProject.setOptions(map);
			firePropertyChangeEvents(oldOptions, map);
		} else {
			JavaCore.setOptions((Hashtable) map);
		}	
	} 
	
	/**
	 * Computes the differences between the given old and new options and fires corresponding
	 * property change events on the Java plugin's mockup preference store.
	 * @param oldOptions The old options
	 * @param newOptions The new options
	 */
	private void firePropertyChangeEvents(Map oldOptions, Map newOptions) {
		oldOptions= new HashMap(oldOptions);
		Object source= fProject.getProject();
		MockupPreferenceStore store= JavaPlugin.getDefault().getMockupPreferenceStore();
		Iterator iter= newOptions.entrySet().iterator();
		while (iter.hasNext()) {
			Entry entry= (Entry) iter.next();
		
			String name= (String) entry.getKey();
			Object oldValue= oldOptions.get(name);
			Object newValue= entry.getValue();
			
			if ((oldValue != null && !oldValue.equals(newValue)) || (oldValue == null && newValue != null))
				store.firePropertyChangeEvent(source, name, oldValue, newValue);
			oldOptions.remove(name);
		}