TestdataDeepCloningEntity c = new TestdataDeepCloningEntity("c", val3);
List<String> cShadowVariableList = Arrays.asList("shadow c1", "shadow c2");
c.setShadowVariableList(cShadowVariableList);
TestdataDeepCloningEntity d = new TestdataDeepCloningEntity("d", val3);
TestdataDeepCloningSolution original = new TestdataDeepCloningSolution("solution");
List<TestdataValue> valueList = Arrays.asList(val1, val2, val3);
original.setValueList(valueList);
List<TestdataDeepCloningEntity> originalEntityList = Arrays.asList(a, b, c, d);
original.setEntityList(originalEntityList);
List<String> generalShadowVariableList = Arrays.asList("shadow g1", "shadow g2");
original.setGeneralShadowVariableList(generalShadowVariableList);
TestdataDeepCloningSolution clone = cloner.cloneSolution(original);
assertNotSame(original, clone);
assertCode("solution", clone);
assertSame(valueList, clone.getValueList());
List<TestdataDeepCloningEntity> cloneEntityList = clone.getEntityList();
assertNotSame(originalEntityList, cloneEntityList);
assertEquals(4, cloneEntityList.size());
TestdataDeepCloningEntity cloneA = cloneEntityList.get(0);
assertDeepCloningEntityClone(a, cloneA, "a", "1");
TestdataDeepCloningEntity cloneB = cloneEntityList.get(1);
assertDeepCloningEntityClone(b, cloneB, "b", "1");
TestdataDeepCloningEntity cloneC = cloneEntityList.get(2);
assertDeepCloningEntityClone(c, cloneC, "c", "3");
TestdataDeepCloningEntity cloneD = cloneEntityList.get(3);
assertDeepCloningEntityClone(d, cloneD, "d", "3");
List<String> cloneGeneralShadowVariableList = clone.getGeneralShadowVariableList();
assertNotSame(generalShadowVariableList, cloneGeneralShadowVariableList);
assertEquals(2, cloneGeneralShadowVariableList.size());
assertSame(generalShadowVariableList.get(0), cloneGeneralShadowVariableList.get(0));
assertEquals(generalShadowVariableList.get(1), cloneGeneralShadowVariableList.get(1));