Bug 127861 [DataBinding] Mark API provisional
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/databinding/beans/BeanUpdatableFactory.java
return new JavaBeanUpdatableTree((ITree)description);
		else if (description instanceof TreeModelDescription) {
			Object root = ((TreeModelDescription)description).getRoot();			
			if (root==null || ! (root instanceof IUpdatable) && !(root instanceof Property)) 		     			
			    return new JavaBeanUpdatableTree(new JavaBeanTree((TreeModelDescription)description));						 							
		} else if (description instanceof TableModelDescription) {
			TableModelDescription tableModelDescription = (TableModelDescription) description;
			IUpdatable collectionUpdatable = bindingContext.createUpdatable(tableModelDescription.getCollectionProperty());
			if (collectionUpdatable == null) {
				return null;
			}
			IReadableSet readableSet;
			if (collectionUpdatable instanceof IReadableSet) {
				readableSet = (IReadableSet) collectionUpdatable;
			} else if (collectionUpdatable instanceof IReadableList) {
				readableSet = new ListToSetAdapter((IReadableList) collectionUpdatable);
			} else {
				throw new BindingException("collection inside a TableModelDescription needs to be IReadableSet or IReadableList"); 
			}
			Object[] columnIDs = tableModelDescription.getColumnIDs();
			String[] propertyNames = new String[columnIDs.length];
			for (int i = 0; i < propertyNames.length; i++) {
				propertyNames[i] = (String) columnIDs[i];
			}
			return new JavaBeansUpdatableCellProvider(readableSet, propertyNames);
		}
		return null;
	}
}