### Question:
TableOutputMeta extends BaseTransformMeta implements ITransformMeta<TableOutput, TableOutputData>, IProvidesModelerMeta { public Object clone() { Preconditions.checkState( fieldStream.length == fieldDatabase.length, "Table fields and stream fields are not of equal length." ); TableOutputMeta retval = (TableOutputMeta) super.clone(); int nrRows = fieldStream.length; retval.allocate( nrRows ); System.arraycopy( fieldStream, 0, retval.fieldStream, 0, nrRows ); System.arraycopy( fieldDatabase, 0, retval.fieldDatabase, 0, nrRows ); return retval; } TableOutputMeta(); String getGeneratedKeyField(); void setGeneratedKeyField( String generatedKeyField ); boolean isReturningGeneratedKeys(); void setReturningGeneratedKeys( boolean returningGeneratedKeys ); boolean isTableNameInTable(); void setTableNameInTable( boolean tableNameInTable ); String getTableNameField(); void setTableNameField( String tableNameField ); boolean isTableNameInField(); void setTableNameInField( boolean tableNameInField ); boolean isPartitioningDaily(); void setPartitioningDaily( boolean partitioningDaily ); boolean isPartitioningMonthly(); void setPartitioningMonthly( boolean partitioningMontly ); boolean isPartitioningEnabled(); void setPartitioningEnabled( boolean partitioningEnabled ); String getPartitioningField(); void setPartitioningField( String partitioningField ); void allocate( int nrRows ); void loadXml( Node transformNode, IHopMetadataProvider metadataProvider ); Object clone(); DatabaseMeta getDatabaseMeta(); void setDatabaseMeta( DatabaseMeta database ); String getCommitSize(); void setCommitSize( int commitSizeInt ); void setCommitSize( String commitSize ); String getTableName(); void setTableName( String tableName ); @Deprecated String getTablename(); @Deprecated void setTablename( String tablename ); boolean truncateTable(); void setTruncateTable( boolean truncateTable ); void setIgnoreErrors( boolean ignoreErrors ); boolean ignoreErrors(); void setSpecifyFields( boolean specifyFields ); boolean specifyFields(); void setUseBatchUpdate( boolean useBatchUpdate ); boolean useBatchUpdate(); void setDefault(); String getXml(); void getFields( IRowMeta row, String origin, IRowMeta[] info, TransformMeta nextTransform,
                         IVariables variables, IHopMetadataProvider metadataProvider ); void check( List<ICheckResult> remarks, PipelineMeta pipelineMeta, TransformMeta transformMeta,
                     IRowMeta prev, String[] input, String[] output, IRowMeta info, IVariables variables,
                     IHopMetadataProvider metadataProvider ); ITransform createTransform( TransformMeta transformMeta, TableOutputData data, int cnr,
                                     PipelineMeta pipelineMeta, Pipeline pipeline ); TableOutputData getTransformData(); void analyseImpact( List<DatabaseImpact> impact, PipelineMeta pipelineMeta, TransformMeta transformMeta,
                             IRowMeta prev, String[] input, String[] output, IRowMeta info,
                             IHopMetadataProvider metadataProvider ); SqlStatement getSqlStatements( PipelineMeta pipelineMeta, TransformMeta transformMeta, IRowMeta prev,
                                        IHopMetadataProvider metadataProvider ); SqlStatement getSqlStatements( PipelineMeta pipelineMeta, TransformMeta transformMeta, IRowMeta prev, String tk,
                                        boolean use_autoinc, String pk ); IRowMeta getRequiredFields( IVariables variables ); DatabaseMeta[] getUsedDatabaseConnections(); String[] getFieldStream(); void setFieldStream( String[] fieldStream ); @Override RowMeta getRowMeta( ITransformData transformData ); @Override List<String> getDatabaseFields(); @Override List<String> getStreamFields(); String[] getFieldDatabase(); void setFieldDatabase( String[] fieldDatabase ); String getSchemaName(); void setSchemaName( String schemaName ); boolean supportsErrorHandling(); @Override String getMissingDatabaseConnectionInformationMessage();  }### Answer:
@Test public void testClone() throws Exception { TableOutputMeta tableOutputMeta = new TableOutputMeta(); tableOutputMeta.setDefault(); tableOutputMeta.setFieldStream( new String[] { "1", "2", "3" } ); tableOutputMeta.setFieldDatabase( new String[] { "d1", "d2", "d3" } ); TableOutputMeta clone = (TableOutputMeta) tableOutputMeta.clone(); assertNotSame( clone, tableOutputMeta ); assertEquals( clone.getXml(), tableOutputMeta.getXml() ); }