// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/internal/util/Contract.java
// public static void checkArg(boolean isOK, String s) {
// 	if (!isOK) {
// 		throw new IllegalArgumentException(s);
// 	}
// }
// 
// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/Configuration.java
// public enum AlignmentInLevel {
// 	Center, TowardsRoot, AwayFromRoot
// }
// 
// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/Configuration.java
// public enum Location {
// 	Top, Left, Bottom, Right
// }
// 
// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/internal/util/java/lang/string/StringUtil.java
// public class StringUtil {
// 	/**
// 	 * Returns a quoted version of a given string, i.e. as a Java String
// 	 * Literal.
// 	 * 
// 	 * @param s
// 	 *            [nullable] the string to quote
// 	 * @param nullResult
// 	 *            [default="null"] the String to be returned for null values.
// 	 * @return the nullResult when s is null, otherwise s as a quoted string
// 	 *         (i.e. Java String Literal)
// 	 * 
// 	 */
// 	public static String quote(String s, String nullResult) {
// 		if (s == null) {
// 			return nullResult;
// 		}
// 		StringBuffer result = new StringBuffer();
// 		result.append('"');
// 		int length = s.length();
// 		for (int i = 0; i < length; i++) {
// 			char c = s.charAt(i);
// 			switch (c) {
// 			case '\b': {
// 				result.append("\\b");
// 				break;
// 			}
// 			case '\f': {
// 				result.append("\\f");
// 				break;
// 			}
// 			case '\n': {
// 				result.append("\\n");
// 				break;
// 			}
// 			case '\r': {
// 				result.append("\\r");
// 				break;
// 			}
// 			case '\t': {
// 				result.append("\\t");
// 				break;
// 			}
// 			case '\\': {
// 				result.append("\\\\");
// 				break;
// 			}
// 			case '"': {
// 				result.append("\\\"");
// 				break;
// 			}
// 			default: {
// 				if (c < ' ' || c >= '\u0080') {
// 					String n = Integer.toHexString(c);
// 					result.append("\\u");
// 					result.append("0000".substring(n.length()));
// 					result.append(n);
// 				} else {
// 					result.append(c);
// 				}
// 			}
// 			}
// 		}
// 		result.append('"');
// 		return result.toString();
// 	}
// 
// 	/**
// 	 * see {@link #quote(String, String)}
// 	 * 
// 	 * @param s the string to quote
// 	 * @return nullable
// 	 */
// 	public static String quote(String s) {
// 		return quote(s, "null");
// 	}
// }


import static org.abego.treelayout.internal.util.Contract.checkArg;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.abego.treelayout.Configuration.AlignmentInLevel;
import org.abego.treelayout.Configuration.Location;
import org.abego.treelayout.internal.util.java.lang.string.StringUtil;
	 */
	public void checkTree() {
		Map<TreeNode, TreeNode> nodes = this.useIdentity ? new IdentityHashMap<TreeNode, TreeNode>()
				:new HashMap<TreeNode,TreeNode>();
		
		// Traverse the tree and check if each node is only used once.
		addUniqueNodes(nodes,tree.getRoot());
	}

	// ------------------------------------------------------------------------
	// dumpTree

	private void dumpTree(PrintStream output, TreeNode node, int indent,
			DumpConfiguration dumpConfiguration) {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < indent; i++) {
			sb.append(dumpConfiguration.indent);
		}

		if (dumpConfiguration.includeObjectToString) {
			sb.append("[");
			sb.append(node.getClass().getName() + "@"
					+ Integer.toHexString(node.hashCode()));
			if (node.hashCode() != System.identityHashCode(node)) {
				sb.append("/identityHashCode:");
				sb.append(Integer.toHexString(System.identityHashCode(node)));
			}
			sb.append("]");
		}
		
// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/internal/util/Contract.java
// public static void checkArg(boolean isOK, String s) {
// 	if (!isOK) {
// 		throw new IllegalArgumentException(s);
// 	}
// }
// 
// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/Configuration.java
// public enum AlignmentInLevel {
// 	Center, TowardsRoot, AwayFromRoot
// }
// 
// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/Configuration.java
// public enum Location {
// 	Top, Left, Bottom, Right
// }
// 
// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/internal/util/java/lang/string/StringUtil.java
// public class StringUtil {
// 	/**
// 	 * Returns a quoted version of a given string, i.e. as a Java String
// 	 * Literal.
// 	 * 
// 	 * @param s
// 	 *            [nullable] the string to quote
// 	 * @param nullResult
// 	 *            [default="null"] the String to be returned for null values.
// 	 * @return the nullResult when s is null, otherwise s as a quoted string
// 	 *         (i.e. Java String Literal)
// 	 * 
// 	 */
// 	public static String quote(String s, String nullResult) {
// 		if (s == null) {
// 			return nullResult;
// 		}
// 		StringBuffer result = new StringBuffer();
// 		result.append('"');
// 		int length = s.length();
// 		for (int i = 0; i < length; i++) {
// 			char c = s.charAt(i);
// 			switch (c) {
// 			case '\b': {
// 				result.append("\\b");
// 				break;
// 			}
// 			case '\f': {
// 				result.append("\\f");
// 				break;
// 			}
// 			case '\n': {
// 				result.append("\\n");
// 				break;
// 			}
// 			case '\r': {
// 				result.append("\\r");
// 				break;
// 			}
// 			case '\t': {
// 				result.append("\\t");
// 				break;
// 			}
// 			case '\\': {
// 				result.append("\\\\");
// 				break;
// 			}
// 			case '"': {
// 				result.append("\\\"");
// 				break;
// 			}
// 			default: {
// 				if (c < ' ' || c >= '\u0080') {
// 					String n = Integer.toHexString(c);
// 					result.append("\\u");
// 					result.append("0000".substring(n.length()));
// 					result.append(n);
// 				} else {
// 					result.append(c);
// 				}
// 			}
// 			}
// 		}
// 		result.append('"');
// 		return result.toString();
// 	}
// 
// 	/**
// 	 * see {@link #quote(String, String)}
// 	 * 
// 	 * @param s the string to quote
// 	 * @return nullable
// 	 */
// 	public static String quote(String s) {
// 		return quote(s, "null");
// 	}
// }


// Path: org.abego.treelayout/src/main/java/org/abego/treelayout/TreeLayout.java
import static org.abego.treelayout.internal.util.Contract.checkArg;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.abego.treelayout.Configuration.AlignmentInLevel;
import org.abego.treelayout.Configuration.Location;
import org.abego.treelayout.internal.util.java.lang.string.StringUtil;

	 */
	public void checkTree() {
		Map<TreeNode, TreeNode> nodes = this.useIdentity ? new IdentityHashMap<TreeNode, TreeNode>()
				:new HashMap<TreeNode,TreeNode>();
		
		// Traverse the tree and check if each node is only used once.
		addUniqueNodes(nodes,tree.getRoot());
	}

	// ------------------------------------------------------------------------
	// dumpTree

	private void dumpTree(PrintStream output, TreeNode node, int indent,
			DumpConfiguration dumpConfiguration) {
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < indent; i++) {
			sb.append(dumpConfiguration.indent);
		}

		if (dumpConfiguration.includeObjectToString) {
			sb.append("[");
			sb.append(node.getClass().getName() + "@"
					+ Integer.toHexString(node.hashCode()));
			if (node.hashCode() != System.identityHashCode(node)) {
				sb.append("/identityHashCode:");
				sb.append(Integer.toHexString(System.identityHashCode(node)));
			}
			sb.append("]");
		}
		
		sb.append(StringUtil.quote(node != null ? node.toString() : null));