@Override public TreeBranch clone() { TreeBranch branch = new TreeBranch(); for (Map.Entry<String, List<TreeNode>> pair : children.entrySet()) { List<TreeNode> list = new ArrayList<TreeNode>(); for (TreeNode node : pair.getValue()) { list.add(node.clone()); } } branch.descriptor = descriptor; return branch; } }