{
this.taxonomy = taxonomy;
this.snapshot = ClientSnapshot.create(client, Dates.today());
Classification root = taxonomy.getRoot();
rootNode = new ClassificationNode(null, root);
LinkedList<TaxonomyNode> stack = new LinkedList<TaxonomyNode>();
stack.add(rootNode);
while (!stack.isEmpty())
{
TaxonomyNode m = stack.pop();
Classification classification = m.getClassification();
for (Classification c : classification.getChildren())
{
TaxonomyNode cm = new ClassificationNode(m, c);
stack.push(cm);
m.getChildren().add(cm);
}
for (Assignment assignment : classification.getAssignments())