### Question:
LiteralExpression extends Expression implements IsLiteralExpression,
                                                             HasText,
                                                             DomainObject { @Override public LiteralExpression copy() { final LiteralExpression clonedLiteralExpression = new LiteralExpression(); clonedLiteralExpression.description = Optional.ofNullable(description).map(Description::copy).orElse(null); clonedLiteralExpression.typeRef = Optional.ofNullable(typeRef).map(QName::copy).orElse(null); clonedLiteralExpression.componentWidths = new ArrayList<>(componentWidths); clonedLiteralExpression.text = Optional.ofNullable(text).map(Text::copy).orElse(null); clonedLiteralExpression.importedValues = Optional.ofNullable(importedValues).map(ImportedValues::copy).orElse(null); clonedLiteralExpression.expressionLanguage = Optional.ofNullable(expressionLanguage).map(ExpressionLanguage::copy).orElse(null); return clonedLiteralExpression; } LiteralExpression();  LiteralExpression(final Id id,
                             final org.kie.workbench.common.dmn.api.property.dmn.Description description,
                             final QName typeRef,
                             final Text text,
                             final ImportedValues importedValues,
                             final ExpressionLanguage expressionLanguage); @Override LiteralExpression copy(); String getStunnerCategory(); Set<String> getStunnerLabels(); @Override Text getText(); @Override void setText(final Text text); @Override ImportedValues getImportedValues(); void setImportedValues(final ImportedValues importedValues); ExpressionLanguage getExpressionLanguage(); void setExpressionLanguage(final ExpressionLanguage expressionLanguage); @Override String getDomainObjectUUID(); @Override String getDomainObjectNameTranslationKey(); @Override int getRequiredComponentWidthCount(); @Override boolean equals(final Object o); @Override int hashCode();  }### Answer:
@Test public void testCopy() { final LiteralExpression source = new LiteralExpression( new Id(LITERAL_ID), new Description(DESCRIPTION), BuiltInType.BOOLEAN.asQName(), new Text(TEXT), null, new ExpressionLanguage(EXPRESSION_LANGUAGE) ); final LiteralExpression target = source.copy(); assertNotNull(target); assertNotEquals(LITERAL_ID, target.getId()); assertEquals(DESCRIPTION, target.getDescription().getValue()); assertEquals(BuiltInType.BOOLEAN.asQName(), target.getTypeRef()); assertEquals(TEXT, target.getText().getValue()); assertNull(target.getImportedValues()); assertEquals(EXPRESSION_LANGUAGE, target.getExpressionLanguage().getValue()); }