* @throws Exception
*/
public void testPropertyChangeSyncing() throws Exception {
final Model[] lr = stubLeftAndRight();
final Model left = lr[0];
final Model right = lr[1];
final Binding binding = new Binding();
final List<Binding> children = binding.getChildren();
children.add(new Binding(left, right, Model.ID_PROPERTY));
children.add(new Binding(left, right, Model.NAME_PROPERTY));
children.add(new Binding(left, right, Model.DATE_CREATED_PROPERTY));
children.add(new Binding(left, right, Model.DATE_MODIFIED_PROPERTY));
children.add(new Binding(left, right, "parent.name"));
children.add(new Binding(left, right, "addresses[0].address.firstName"));
binding.bind();
// clear out the bound properties on the right..
right.clearPropertyValue(Model.ID_PROPERTY);
right.clearPropertyValue(Model.NAME_PROPERTY);
right.clearPropertyValue(Model.DATE_CREATED_PROPERTY);
right.clearPropertyValue(Model.DATE_MODIFIED_PROPERTY);
right.clearPropertyValue("parent.name");
right.clearPropertyValue("addresses[0].address.firstName");
verifyInSync(left, right);
// set bound properties on the left..
left.setProperty(Model.ID_PROPERTY, Integer.toString(33));