Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/NestedUpdatableTree.java
}
	
	private void updateInnerUpdatableValue(IUpdatable outerUpdatableValue) {
		
		updating=true;
		try {
			if (innerUpdatableTree != null) {
				innerUpdatableTree.removeChangeListener(innerChangeListener);
				innerUpdatableTree.dispose();
			}
			
			Object currentOuterValue;
			if (outerUpdatableValue instanceof IUpdatableValue) {
				currentOuterValue = ((IUpdatableValue)outerUpdatableValue).getValue();
			} else {
				IUpdatableCollection collection = (IUpdatableCollection)outerUpdatableValue;
				Object[] elements = new Object[collection.getSize()];
				for (int i = 0; i < elements.length; i++) {
					elements[i]=collection.getElement(i);
				}
				currentOuterValue=elements;					
			}
			
			TreeModelDescription newDescriptor = new TreeModelDescription(currentOuterValue);
			Class[] types = originalDescription.getTypes();
			for (int i = 0; i < types.length; i++) {
				String[] properties = originalDescription.getChildrenProperties(types[i]);
				for (int j = 0; j < properties.length; j++) {
					newDescriptor.addChildrenProperty(types[i], properties[j]);