// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/Entity.java
// public interface Entity<T extends Entity<T, ID>, ID> extends Cloneable {
// 	
// 	/**
// 	 * クローンを生成する。
// 	 * 
// 	 * @return クローン
// 	 */
// 	T clone();
// 	
// 	/**
// 	 * 識別子を取得する。
// 	 * 
// 	 * @return 識別子
// 	 */
// 	ID getIdentity();
// 	
// 	/**
// 	 * 指定されたエンティティとこのエンティティが同じ識別子かどうかを判定する。
// 	 * 
// 	 * <p>{@link Object#equals}のタイプセーフ版</p>
// 	 * 
// 	 * @param other エンティティ
// 	 * @return 同じ識別子ならtrue
// 	 */
// 	boolean sameIdentityAs(T other);
// 	
// }
// 
// Path: src/main/java/jp/tricreo/schemagenerator/exception/CloneNotSupportedRuntimeException.java
// @SuppressWarnings("serial")
// public class CloneNotSupportedRuntimeException extends RuntimeException {
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 */
// 	public CloneNotSupportedRuntimeException() {
// 	}
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param message メッセージ
// 	 */
// 	public CloneNotSupportedRuntimeException(String message) {
// 		super(message);
// 	}
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param message メッセージ
// 	 * @param cause 原因
// 	 */
// 	public CloneNotSupportedRuntimeException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param cause 原因
// 	 */
// 	public CloneNotSupportedRuntimeException(Throwable cause) {
// 		super(cause);
// 	}
// 	
// }


import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import jp.tricreo.schemagenerator.domain.model.Entity;
import jp.tricreo.schemagenerator.exception.CloneNotSupportedRuntimeException;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.junit.Test;

package jp.tricreo.schemagenerator.infrastructure.utils;






/**
 * {@link CloneUtil}のためのテスト。
 * 
 * @version $Id$
 * @author daisuke
 * @author j5ik2o
 */
public class CloneUtilTest {
	
	public static class SampleMainEntity implements
			Entity<SampleMainEntity, UUID> {
		
		private UUID identity;
		

		public SampleMainEntity(UUID id) {
			identity = id;
		}
		
		@Override
		public SampleMainEntity clone() {
			try {
				return (SampleMainEntity) super.clone();
			} catch (CloneNotSupportedException e) {

// Path: src/main/java/jp/tricreo/schemagenerator/domain/model/Entity.java
// public interface Entity<T extends Entity<T, ID>, ID> extends Cloneable {
// 	
// 	/**
// 	 * クローンを生成する。
// 	 * 
// 	 * @return クローン
// 	 */
// 	T clone();
// 	
// 	/**
// 	 * 識別子を取得する。
// 	 * 
// 	 * @return 識別子
// 	 */
// 	ID getIdentity();
// 	
// 	/**
// 	 * 指定されたエンティティとこのエンティティが同じ識別子かどうかを判定する。
// 	 * 
// 	 * <p>{@link Object#equals}のタイプセーフ版</p>
// 	 * 
// 	 * @param other エンティティ
// 	 * @return 同じ識別子ならtrue
// 	 */
// 	boolean sameIdentityAs(T other);
// 	
// }
// 
// Path: src/main/java/jp/tricreo/schemagenerator/exception/CloneNotSupportedRuntimeException.java
// @SuppressWarnings("serial")
// public class CloneNotSupportedRuntimeException extends RuntimeException {
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 */
// 	public CloneNotSupportedRuntimeException() {
// 	}
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param message メッセージ
// 	 */
// 	public CloneNotSupportedRuntimeException(String message) {
// 		super(message);
// 	}
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param message メッセージ
// 	 * @param cause 原因
// 	 */
// 	public CloneNotSupportedRuntimeException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 	
// 	/**
// 	 * インスタンスを生成する。
// 	 * 
// 	 * @param cause 原因
// 	 */
// 	public CloneNotSupportedRuntimeException(Throwable cause) {
// 		super(cause);
// 	}
// 	
// }


// Path: src/test/java/jp/tricreo/schemagenerator/infrastructure/utils/CloneUtilTest.java
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import jp.tricreo.schemagenerator.domain.model.Entity;
import jp.tricreo.schemagenerator.exception.CloneNotSupportedRuntimeException;
import com.google.common.base.Function;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.junit.Test;

package jp.tricreo.schemagenerator.infrastructure.utils;






/**
 * {@link CloneUtil}のためのテスト。
 * 
 * @version $Id$
 * @author daisuke
 * @author j5ik2o
 */
public class CloneUtilTest {
	
	public static class SampleMainEntity implements
			Entity<SampleMainEntity, UUID> {
		
		private UUID identity;
		

		public SampleMainEntity(UUID id) {
			identity = id;
		}
		
		@Override
		public SampleMainEntity clone() {
			try {
				return (SampleMainEntity) super.clone();
			} catch (CloneNotSupportedException e) {

				throw new CloneNotSupportedRuntimeException(e);
