// sets loaded state so follow setters are deemed as changes to the bean
ebi.setLoaded();
emain.setName("changedFoo");
DefaultBeanState beanState = new DefaultBeanState(eb);
Set<String> changedProps = beanState.getChangedProps();
Assert.assertEquals(1, changedProps.size());
Assert.assertTrue(changedProps.contains("name"));
Map<String, ValuePair> dirtyValues = beanState.getDirtyValues();
Assert.assertEquals(1, dirtyValues.size());
Assert.assertTrue(dirtyValues.keySet().contains("name"));
ValuePair valuePair = dirtyValues.get("name");
Assert.assertNotNull(valuePair);
Assert.assertEquals("changedFoo",valuePair.getNewValue());
Assert.assertEquals("foo",valuePair.getOldValue());
Eembeddable embeddableRead = emain.getEmbeddable();
embeddableRead.setDescription("embChanged");
Set<String> changedProps2 = beanState.getChangedProps();
Assert.assertEquals(2, changedProps2.size());
Assert.assertTrue(changedProps2.contains("name"));
Assert.assertTrue(changedProps2.contains("embeddable.description"));
Map<String, ValuePair> dirtyValues2 = beanState.getDirtyValues();
Assert.assertEquals(2, dirtyValues2.size());
Assert.assertTrue(dirtyValues2.keySet().contains("name"));
Assert.assertTrue(dirtyValues2.keySet().contains("embeddable.description"));
ValuePair valuePair2 = dirtyValues2.get("embeddable.description");