### Question:
ModifiedVariable implements Variable, Cloneable { @SuppressWarnings({"CloneDoesntCallSuperClone", "unchecked"}) @Override public Object clone() { log.trace("variable {} will be cloned", variable); for (final VariableModifier modifier : modifiers) { this.variable = modifier.modify(variable); } return this.variable.clone(); } ModifiedVariable(final Variable variable, final List<VariableModifier> modifiers); @Override int compareTo(final Variable variable); @SuppressWarnings({"CloneDoesntCallSuperClone", "unchecked"}) @Override Object clone(); @Override int getSyntax(); @Override boolean isException(); @Override String toString(); @Override int toInt(); @Override long toLong(); @Override String getSyntaxString(); @Override OID toSubIndex(final boolean b); @Override void fromSubIndex(final OID oid, final boolean b); @Override boolean isDynamic(); @Override int getBERLength(); @Override int getBERPayloadLength(); @Override void decodeBER(final BERInputStream berInputStream); @Override void encodeBER(final OutputStream outputStream); @Override boolean equals(final Object o); @Override int hashCode();  }### Answer:
@Test public void testClone() { final Object clonedVariable = modifiedVariable.clone(); assertNotSame(clonedVariable, modifiedVariable); assertTrue(clonedVariable instanceof Integer32); assertNotEquals(((Integer32) clonedVariable).getValue(), ((Integer32) variable).getValue()); }