### Question:
ValueModelWrapper extends AbstractValueModel implements ValueHolder<T> { @Override public void setValue(Object newValue) { d_model.setValue(newValue); } ValueModelWrapper(ValueModel model); @SuppressWarnings("unchecked") @Override T getValue(); @Override void setValue(Object newValue);  }### Answer:
@Test public void testEventPropagation() { ValueModel nested = new ModifiableHolder<Object>(false); ValueModelWrapper<Boolean> wrapper = new ValueModelWrapper<Boolean>(nested); PropertyChangeListener listener = createStrictMock(PropertyChangeListener.class); listener.propertyChange(JUnitUtil.eqPropertyChangeEvent(new PropertyChangeEvent(wrapper, "value", false, true))); listener.propertyChange(JUnitUtil.eqPropertyChangeEvent(new PropertyChangeEvent(wrapper, "value", true, false))); replay(listener); wrapper.addPropertyChangeListener(listener); nested.setValue(true); wrapper.setValue(false); verify(listener); }