### Question:
DataSourceInfo implements Cloneable, Serializable, XMLSerializable { public DataSourceInfo cloneInfo() { try { return (DataSourceInfo) super.clone(); } catch (CloneNotSupportedException ex) { throw new RuntimeException("Cloning error", ex); } }  @Override boolean equals(Object obj); @Override int hashCode(); @Override void encodeAsXML(XMLEncoder encoder, ConfigurationNodeVisitor delegate); DataSourceInfo cloneInfo(); String getAdapterClassName(); void setAdapterClassName(String adapterClassName); void setMinConnections(int minConnections); int getMinConnections(); void setMaxConnections(int maxConnections); int getMaxConnections(); void setUserName(String userName); String getUserName(); void setPassword(String password); String getPassword(); void setJdbcDriver(String jdbcDriver); String getJdbcDriver(); void setDataSourceUrl(String dataSourceUrl); String getDataSourceUrl(); @Deprecated PasswordEncoding getPasswordEncoder(); String getPasswordEncoderClass(); void setPasswordEncoderClass(String passwordEncoderClass); String getPasswordEncoderKey(); void setPasswordEncoderKey(String passwordEncoderKey); String getPasswordSourceFilename(); void setPasswordSourceFilename(String passwordSourceFilename); String getPasswordSourceModel(); String getPasswordSourceUrl(); void setPasswordSourceUrl(String passwordSourceUrl); String getPasswordSourceExecutable(); void setPasswordSourceExecutable(String passwordSourceExecutable); String getPasswordSource(); void setPasswordSource(String passwordSource); String getPasswordLocation(); void setPasswordLocation(String passwordLocation); @Override String toString(); static final String PASSWORD_LOCATION_CLASSPATH; static final String PASSWORD_LOCATION_EXECUTABLE; static final String PASSWORD_LOCATION_MODEL; static final String PASSWORD_LOCATION_URL; }### Answer:
@Test public void testClone() throws java.lang.Exception { DataSourceInfo dsiClone = dsi.cloneInfo(); assertEquals(dsi, dsiClone); assertTrue(dsi != dsiClone); }