### Question:
XmlOutputMeta extends BaseTransformMeta implements ITransformMeta<XmlOutput, XmlOutputData> { public Object clone() { XmlOutputMeta retval = (XmlOutputMeta) super.clone(); int nrfields = outputFields.length; retval.allocate( nrfields ); for ( int i = 0; i < nrfields; i++ ) { retval.outputFields[ i ] = (XmlField) outputFields[ i ].clone(); } return retval; } XmlOutputMeta(); boolean isDateInFilename(); void setDateInFilename( boolean dateInFilename ); String getExtension(); void setExtension( String extension ); boolean isDoNotOpenNewFileInit(); void setDoNotOpenNewFileInit( boolean doNotOpenNewFileInit ); String getFileName(); void setFileName( String fileName ); int getSplitEvery(); void setSplitEvery( int splitEvery ); boolean isTransformNrInFilename(); void setTransformNrInFilename( boolean stepNrInFilename ); boolean isTimeInFilename(); void setTimeInFilename( boolean timeInFilename ); boolean isAddToResultFiles(); void setAddToResultFiles( boolean addtoresultfilenamesin ); boolean isSpecifyFormat(); void setSpecifyFormat( boolean SpecifyFormat ); String getDateTimeFormat(); void setDateTimeFormat( String date_time_format ); boolean isZipped(); void setZipped( boolean zipped ); XmlField[] getOutputFields(); void setOutputFields( XmlField[] outputFields ); void allocate( int nrfields ); Object clone(); @Override ITransform createTransform( TransformMeta transformMeta, XmlOutputData data, int copyNr, PipelineMeta pipelineMeta, Pipeline pipeline ); @Override XmlOutputData getTransformData(); @Override void loadXml( Node transformNode, IHopMetadataProvider metadataProvider ); String getNewLine( String fformat ); void setDefault(); String[] getFiles( IVariables space ); String buildFilename( IVariables space, int stepnr, int splitnr, boolean ziparchive ); void getFields( IRowMeta row, String name, IRowMeta[] info, TransformMeta nextTransform,
                         IVariables space, IHopMetadataProvider metadataProvider ); IRowMeta getRequiredFields( IVariables space ); String getXml(); void check( List<ICheckResult> remarks, PipelineMeta transMeta, TransformMeta stepinfo, IRowMeta prev,
                     String[] input, String[] output, IRowMeta info, IVariables space, IHopMetadataProvider metadataProvider ); String getEncoding(); void setEncoding( String encoding ); String getMainElement(); void setMainElement( String mainElement ); String getRepeatElement(); void setRepeatElement( String repeatElement ); String getNameSpace(); void setNameSpace( String nameSpace ); void setOmitNullValues( boolean omitNullValues ); boolean isOmitNullValues(); boolean isServletOutput(); void setServletOutput( boolean servletOutput ); String exportResources( IVariables space, Map<String, ResourceDefinition> definitions,
                                 IResourceNaming resourceNamingInterface, IHopMetadataProvider metadataProvider ); boolean passDataToServletOutput();  }### Answer:
@Test public void testClone() throws Exception { XmlOutputMeta xmlOutputMeta = new XmlOutputMeta(); Node transformNode = getTestNode(); DatabaseMeta dbMeta = mock( DatabaseMeta.class ); IHopMetadataProvider metadataProvider = mock( IHopMetadataProvider.class ); xmlOutputMeta.loadXml( transformNode, metadataProvider ); XmlOutputMeta cloned = (XmlOutputMeta) xmlOutputMeta.clone(); assertNotSame( cloned, xmlOutputMeta ); assertXmlOutputMeta( cloned ); }