### Question:
InputClause extends DMNElement implements HasTypeRefs,
                                                       DomainObject { public InputClause copy() { return new InputClause( new Id(), Optional.ofNullable(description).map(Description::copy).orElse(null), Optional.ofNullable(inputExpression).map(InputClauseLiteralExpression::copy).orElse(null), Optional.ofNullable(inputValues).map(InputClauseUnaryTests::copy).orElse(null) ); } InputClause();  InputClause(final Id id,
                       final Description description,
                       final InputClauseLiteralExpression inputExpression,
                       final InputClauseUnaryTests inputValues); InputClause copy(); @Override List<HasTypeRef> getHasTypeRefs(); String getStunnerCategory(); Set<String> getStunnerLabels(); InputClauseLiteralExpression getInputExpression(); void setInputExpression(final InputClauseLiteralExpression value); InputClauseUnaryTests getInputValues(); void setInputValues(final InputClauseUnaryTests value); @Override String getDomainObjectUUID(); @Override String getDomainObjectNameTranslationKey(); @Override boolean equals(final Object o); @Override int hashCode();  }### Answer:
@Test public void testCopy() { final InputClause source = new InputClause( new Id(INPUT_ID), new Description(DESCRIPTION), buildInputClauseLiteralExpression(), buildInputClauseUnaryTests() ); final InputClause target = source.copy(); assertNotNull(target); assertNotEquals(INPUT_ID, target.getId().getValue()); assertEquals(DESCRIPTION, target.getDescription().getValue()); assertNotNull(target.getInputExpression()); assertNotEquals(CLAUSE_ID, target.getInputExpression().getId()); assertEquals(TEXT, target.getInputExpression().getText().getValue()); assertEquals(DESCRIPTION, target.getInputExpression().getDescription().getValue()); assertEquals(BuiltInType.BOOLEAN.asQName(), target.getInputExpression().getTypeRef()); assertNotNull(target.getInputValues()); assertNotEquals(UNARY_ID, target.getInputValues().getId()); assertEquals(TEXT, target.getInputValues().getText().getValue()); assertEquals(ConstraintType.ENUMERATION, target.getInputValues().getConstraintType()); }