@Test
public void testDeepClone() {

    DefineList dl1 = new DefineList(NUM_DEFINES);
    DefineList dl2 = dl1.deepClone();
    assertNotSame(dl1, dl2);
    assertEquals(dl1, dl2);
    assertEquals(dl1.hashCode(), dl2.hashCode());
    dl1.set(BOOL_VAR, true);
    dl2 = dl1.deepClone();
    assertEquals(dl1, dl2);
    assertEquals(dl1.hashCode(), dl2.hashCode());
    dl1.set(BOOL_VAR, false);
    dl2 = dl1.deepClone();
    assertEquals(dl1, dl2);
    assertEquals(dl1.hashCode(), dl2.hashCode());
    dl1.set(INT_VAR, 123);
    assertNotEquals(dl1, dl2);
    assertNotEquals(dl1.hashCode(), dl2.hashCode());
    dl2 = dl1.deepClone();
    assertEquals(dl1, dl2);
    assertEquals(dl1.hashCode(), dl2.hashCode());
}