Bug 127861 [DataBinding] Mark API provisional
bundles/org.eclipse.jface.databinding/src/org/eclipse/jface/internal/databinding/beans/JavaBeanTree.java
throw new BindingException(e.getLocalizedMessage());	
		} catch (IllegalAccessException e) {
			throw new BindingException(e.getLocalizedMessage());			
		} catch (InvocationTargetException e) {
			throw new BindingException(e.getLocalizedMessage());			
		} 
		Object[] result = children.toArray();
		hookup(parentElement, result);
		trackChildren(parentElement, result);
		return result;
	}
	
	private void trackChildren(Object parentElement, Object[] children) {
		Object key = parentElement==null?JavaBeanTree.this : parentElement;
		TreeNode node = (TreeNode) nodes.get(key);
		Set removed = new HashSet(node.getChildren());
		List newList = children==null? new ArrayList(): Arrays.asList(children);
		if (children!=null)
			for (int i=0; i<children.length; i++) {
				if (!removed.remove(children[i])) {
					
					TreeNode child = new TreeNode(parentElement);
					nodes.put(children[i], child);
				}				
			}
		for (Iterator itr=removed.iterator(); itr.hasNext();)
			nodes.remove(itr.next());
		node.setChildren(newList);
	}
	public void setChildren(Object parentElement, Object[] children) {