@Test
public void testClone() {

    CloneableBean bean = new CloneableBean();
    PropertyChangeListener pcl = mock(PropertyChangeListener.class);
    bean.addPropertyChangeListener(pcl);
    
    String property = "dummy";
    bean.setProperty(property);
    
    ArgumentCaptor<PropertyChangeEvent> captor = ArgumentCaptor.forClass(PropertyChangeEvent.class);
    verify(pcl).propertyChange(captor.capture());
    assertThat(bean, is(captor.getValue().getSource()));
    assertThat("property", is(captor.getValue().getPropertyName()));
    
    CloneableBean clone = bean.clone();
    clone.setProperty("other");
    
    assertThat(0, is(clone.getPropertyChangeListeners().length));
    verifyNoMoreInteractions(pcl);
}