public void testValid3() {
        setTree(new TreeNode("dummy"));
        TreeNode root = new TreeNode("root", 1);
        TreeNode subtree = new TreeNode("subtree", 1);
        TreeNode leaf = new TreeNode("leaf");
        root.branch[0] = subtree;
        subtree.branch[0] = leaf;
        Map tree = Collections.synchronizedMap(new HashMap());
        tree.put(root, root.branch);
        tree.put(subtree, subtree.branch);
        tree.put(leaf, leaf.branch);
        Map refCounts = Collections.synchronizedMap(new HashMap());
        refCounts.put(root, new Integer(0));
        refCounts.put(subtree, new Integer(1));
        refCounts.put(leaf, new Integer(1));
        //setTree(root);
        try {
            ((Question3)answer).deleteNode(tree, refCounts, root);
            assertTrue(null, "You failed to correctly update the tree data structure", tree != null && tree.size() == 2 && tree.containsKey(subtree) && tree.containsKey(leaf));
            assertTrue(null, "You failed to correctly update the reference count data structure", refCounts != null && refCounts.size() == 2 && refCounts.containsKey(subtree) && refCounts.containsKey(leaf));
        } catch(Throwable exn) {
            fail(exn, "No exception's should be generated, but your code threw: " + exn.getClass().getName());
        } // end of try-catch
    } // end of method testValid3