PersistenceManager persistTwo = new PersistenceManager(driver, database, login, password);
// create recursive objects
Layer1 layer1 = new Layer1();
layer1.setName("foo bar");
Layer2 layer2 = new Layer2();
Layer3 layer3 = new Layer3();
// connect objects
layer1.setLayer2(layer2);
layer2.setLayer3(layer3);
layer3.setLayer1(layer1);
// save the objects
persistOne.saveObject(layer1);
// load the object from another instance
List<Layer3> layer3s = persistTwo.getObjects(Layer3.class, new All());
Layer3 copy = layer3s.get(0);
// alter the original object
layer3.getLayer1().setName("altered");
// save the altered object
persistOne.saveObject(layer3);
// update the copy
persistTwo.refresh(copy);
// make sure the change has propagated
assertEquals(layer3.getLayer1().getName(), copy.getLayer1().getName());
}