DSLComplexVariableValue extends DSLVariableValue { @Override public DSLVariableValue copy() { return new DSLComplexVariableValue(id, getValue()); } DSLComplexVariableValue();  DSLComplexVariableValue(String id,
                                   String value); String getId(); void setId(String id); @Override boolean equals(Object o); @Override int hashCode(); @Override DSLVariableValue copy();  }
@Test public void testCopy() { final DSLComplexVariableValue original = new DSLComplexVariableValue("id", "value"); final DSLComplexVariableValue copy = (DSLComplexVariableValue) original.copy(); assertEquals(original.getId(), copy.getId()); assertEquals(original.getValue(), copy.getValue()); assertEquals(original, copy); assertNotSame(original, copy); }