### Question:
OutputClause extends DMNElement implements HasTypeRef,
                                                        DomainObject { public OutputClause copy() { return new OutputClause( new Id(), Optional.ofNullable(description).map(Description::copy).orElse(null), Optional.ofNullable(outputValues).map(OutputClauseUnaryTests::copy).orElse(null), Optional.ofNullable(defaultOutputEntry).map(OutputClauseLiteralExpression::copy).orElse(null), name, Optional.ofNullable(typeRef).map(QName::copy).orElse(null) ); } OutputClause();  OutputClause(final Id id,
                        final Description description,
                        final OutputClauseUnaryTests outputValues,
                        final OutputClauseLiteralExpression defaultOutputEntry,
                        final String name,
                        final QName typeRef); OutputClause copy(); @Override List<HasTypeRef> getHasTypeRefs(); String getStunnerCategory(); Set<String> getStunnerLabels(); OutputClauseUnaryTests getOutputValues(); void setOutputValues(final OutputClauseUnaryTests value); OutputClauseLiteralExpression getDefaultOutputEntry(); void setDefaultOutputEntry(final OutputClauseLiteralExpression value); String getName(); void setName(final String value); @Override QName getTypeRef(); @Override void setTypeRef(final QName value); @Override DMNModelInstrumentedBase asDMNModelInstrumentedBase(); @Override String getDomainObjectUUID(); @Override String getDomainObjectNameTranslationKey(); @Override boolean equals(final Object o); @Override int hashCode();  }### Answer:
@Test public void testCopy() { final OutputClause source = new OutputClause( new Id(OUTPUT_ID), new Description(DESCRIPTION), buildOutputClauseUnaryTests(), buildOutputClauseLiteralExpression(), NAME, BuiltInType.BOOLEAN.asQName() ); final OutputClause target = source.copy(); assertNotNull(target); assertNotEquals(OUTPUT_ID, target.getId().getValue()); assertEquals(DESCRIPTION, target.getDescription().getValue()); assertNotNull(target.getOutputValues()); assertNotEquals(CLAUSE_ID, target.getOutputValues().getId()); assertEquals(TEXT, target.getOutputValues().getText().getValue()); assertNotNull(target.getOutputValues()); assertNotEquals(UNARY_ID, target.getOutputValues().getId()); assertEquals(TEXT, target.getOutputValues().getText().getValue()); assertEquals(ConstraintType.ENUMERATION, target.getOutputValues().getConstraintType()); }