Bug 127861 [DataBinding] Mark API provisional
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/NestedUpdatableTree.java
public void handleChange(ChangeEvent changeEvent) {
			if (!updating) {
				ChangeEvent nestedEvent = fireChangeEvent(changeEvent.getChangeType(), changeEvent
						.getOldValue(), changeEvent.getNewValue(), changeEvent.getParent(), changeEvent.getPosition());
				if(nestedEvent.getVeto()) {
					changeEvent.setVeto(true);
				}
			}
		}
	};
	
	/**
	 * @param databindingContext
	 * @param description
	 */
	public NestedUpdatableTree(IDataBindingContext databindingContext, TreeModelDescription description) {
		this.databindingContext=databindingContext;
		this.originalDescription=description;	
		Assert.isTrue(description.getRoot() instanceof IUpdatable);
		
		final IUpdatable outerUpdatableValue = (IUpdatable) description.getRoot();		
		updateInnerUpdatableValue(outerUpdatableValue);
		IChangeListener outerChangeListener = new IChangeListener() {
			public void handleChange(ChangeEvent changeEvent) {
				if ((changeEvent.getChangeType() &  (ChangeEvent.CHANGE | ChangeEvent.REPLACE | ChangeEvent.VIRTUAL)) != 0) {
					Object[] old = getElements(null);
					updateInnerUpdatableValue(outerUpdatableValue);				
					fireChangeEvent(ChangeEvent.REPLACE, old, getElements(null), null, -1); 
				}
			}