Bug 315281 update copyrights for 3.6
bundles/org.eclipse.core.databinding.observable/src/org/eclipse/core/databinding/observable/Diffs.java
*            the new map state
	 * @return a {@link MapDiff} describing the change between the specified old
	 *         and new map states.
	 */
	public static MapDiff computeMapDiff(Map oldMap, Map newMap) {
		
		
		final Set addedKeys = new HashSet(newMap.keySet());
		final Set removedKeys = new HashSet();
		final Set changedKeys = new HashSet();
		final Map oldValues = new HashMap();
		final Map newValues = new HashMap();
		for (Iterator it = oldMap.entrySet().iterator(); it.hasNext();) {
			Map.Entry oldEntry = (Entry) it.next();
			Object oldKey = oldEntry.getKey();
			if (addedKeys.remove(oldKey)) {
				
				Object oldValue = oldEntry.getValue();
				Object newValue = newMap.get(oldKey);
				if (!Util.equals(oldValue, newValue)) {
					changedKeys.add(oldKey);
					oldValues.put(oldKey, oldValue);
					newValues.put(oldKey, newValue);
				}
			} else {
				removedKeys.add(oldKey);
				oldValues.put(oldKey, oldEntry.getValue());
			}
		}
		for (Iterator it = addedKeys.iterator(); it.hasNext();) {