Bug 252117 [DataBinding] ListBinding does not update from model to target in some cases
tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/JavaBeanObservableArrayBasedSetTest.java
public void testRetainAllPropertyChangeEvent() throws Exception {
		set.addAll(Arrays.asList(new String[] { "0", "1" }));
		assertPropertyChangeEvent(bean, new Runnable() {
			public void run() {
				set.retainAll(Arrays.asList(new String[] { "0" }));
			}
		});
	}
	public void testListChangeEventFiresWhenNewListIsSet() throws Exception {
		Bean[] elements = new Bean[] { new Bean(), new Bean() };
		SetChangeEventTracker listener = SetChangeEventTracker.observe(set);
		assertEquals(0, listener.count);
		bean.setArray(elements);
		assertEquals(1, listener.count);
	}
	private static void assertPropertyChangeEvent(Bean bean, Runnable runnable) {
		PropertyChangeTracker listener = new PropertyChangeTracker();
		bean.addPropertyChangeListener(listener);
		Object[] old = bean.getArray();
		assertEquals(0, listener.count);
		runnable.run();
		PropertyChangeEvent event = listener.evt;
		assertEquals("event did not fire", 1, listener.count);
		assertEquals("array", event.getPropertyName());
		assertTrue("old value", Arrays.equals(old, (Object[]) event
				.getOldValue()));
		assertTrue("new value", Arrays.equals(bean.getArray(), (Object[]) event.getNewValue()));
		assertFalse("lists are equal", Arrays.equals(bean.getArray(), old));
	}
	private static class PropertyChangeTracker implements