Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/NestedUpdatableValue.java
private void updateInnerUpdatableValue(IUpdatableValue outerUpdatableValue) {
		currentOuterValue = outerUpdatableValue.getValue();
		if (innerUpdatableValue != null) {
			innerUpdatableValue.removeChangeListener(innerChangeListener);
			innerUpdatableValue.dispose();
		}
		if (currentOuterValue == null) {
			innerUpdatableValue = null;
		} else {
			this.innerUpdatableValue = (IUpdatableValue) databindingContext
					.createUpdatable(new Property(currentOuterValue, feature));
			Class innerValueType = innerUpdatableValue.getValueType();
			if(featureType==null) {
				featureType = innerValueType;
			} else {
				Assert.isTrue(featureType.equals(innerValueType), "Cannot change value type in a nested updatable value"); 
			}
			innerUpdatableValue.addChangeListener(innerChangeListener);
		}
	}
	public void setValue(Object value) {
		if (innerUpdatableValue!=null) {
			innerUpdatableValue.setValue(value);
		}
	}
	public Object computeValue() {
		return innerUpdatableValue == null ? null : innerUpdatableValue
				.getValue();
	}