Bug 126839 [DataBinding] IObservable refactoring
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/TreeBinding.java
needsUpdate.addElement(parent, index, event.getNewValue());
						break;
						
					case ChangeEvent.REMOVE:
						needsUpdate.removeElement(parent, index);
						break;
						
					case ChangeEvent.REPLACE:
						Object val = event.getNewValue();
						if (val.getClass().isArray()) {
							needsUpdate.setElements(parent, (Object[]) val);
						} else if (val instanceof Collection) {
							needsUpdate.setElements(parent, ((Collection)val).toArray());
						} else {
							throw new BindingException ("Invalid REPLACE event"); 
						}
					    break;
				}
				if (failure(errMsg(fireBindingEvent(bindingEvent)))) {
					return;
				}
				
			} finally {
				updating --;				
			}
	}
	private String errMsg(String validationError) {
		context.updatePartialValidationError(targetChangeListener, null);
		context.updateValidationError(targetChangeListener, validationError);
		return validationError;