### Question:
BaseFileInputFiles implements Cloneable { @Override public Object clone() { try { BaseFileInputFiles cloned = (BaseFileInputFiles) super.clone(); cloned.fileName = Arrays.copyOf( fileName, fileName.length ); cloned.fileMask = Arrays.copyOf( fileMask, fileMask.length ); cloned.excludeFileMask = Arrays.copyOf( excludeFileMask, excludeFileMask.length ); cloned.fileRequired = Arrays.copyOf( fileRequired, fileRequired.length ); cloned.includeSubFolders = Arrays.copyOf( includeSubFolders, includeSubFolders.length ); return cloned; } catch ( CloneNotSupportedException ex ) { throw new IllegalArgumentException( "Clone not supported for " + this.getClass().getName() ); } }  @Override Object clone(); void setFileRequired( String[] fileRequiredin ); void setIncludeSubFolders( String[] includeSubFoldersin ); static String getRequiredFilesCode( String tt ); void normalizeAllocation( int length ); boolean[] includeSubFolderBoolean(); List<ResourceReference> getResourceDependencies( TransMeta transMeta, StepMeta stepInfo ); static final String NO; static final String YES; static final String[] RequiredFilesCode; static final String[] RequiredFilesDesc; @Injection( name = "FILENAME", group = "FILENAME_LINES" )
  public String[] fileName; @Injection( name = "FILEMASK", group = "FILENAME_LINES" )
  public String[] fileMask; @Injection( name = "EXCLUDE_FILEMASK", group = "FILENAME_LINES" )
  public String[] excludeFileMask; @Injection( name = "FILE_REQUIRED", group = "FILENAME_LINES" )
  public String[] fileRequired; @Injection( name = "INCLUDE_SUBFOLDERS", group = "FILENAME_LINES" )
  public String[] includeSubFolders; @Injection( name = "ACCEPT_FILE_NAMES" )
  public boolean acceptingFilenames; @Injection( name = "ACCEPT_FILE_STEP" )
  public String acceptingStepName; @Injection( name = "PASS_THROUGH_FIELDS" )
  public boolean passingThruFields; @Injection( name = "ACCEPT_FILE_FIELD" )
  public String acceptingField; @Injection( name = "ADD_FILES_TO_RESULT" )
  public boolean isaddresult; }### Answer:
@Test public void testClone() { BaseFileInputFiles orig = new BaseFileInputFiles(); orig.fileName = new String[] { "1", "2" }; orig.fileMask = new String[] { "3", "4" }; orig.excludeFileMask = new String[] { "5", "6" }; orig.fileRequired = new String[] { "7", "8" }; orig.includeSubFolders = new String[] { "9", "0" }; BaseFileInputFiles clone = (BaseFileInputFiles) orig.clone(); assertNotEquals( orig.fileName, clone.fileName ); assertTrue( Arrays.equals( orig.fileName, clone.fileName ) ); assertNotEquals( orig.fileMask, clone.fileMask ); assertTrue( Arrays.equals( orig.fileMask, clone.fileMask ) ); assertNotEquals( orig.excludeFileMask, clone.excludeFileMask ); assertTrue( Arrays.equals( orig.excludeFileMask, clone.excludeFileMask ) ); assertNotEquals( orig.fileRequired, clone.fileRequired ); assertTrue( Arrays.equals( orig.fileRequired, clone.fileRequired ) ); assertNotEquals( orig.includeSubFolders, clone.includeSubFolders ); assertTrue( Arrays.equals( orig.includeSubFolders, clone.includeSubFolders ) ); }