public void testTree3() {
        TreeNode root = new TreeNode("root", 2);
        TreeNode subtree1 = new TreeNode("subtree1", 1);
        TreeNode subtree2 = new TreeNode("subtree2", 1);
        TreeNode leaf = new TreeNode("leaf");
        root.branch = new TreeNode[]{ subtree1, subtree2 };
        subtree1.branch[0] = leaf;
        subtree2.branch[0] = leaf;
        Question1 qTree = setTree(root);        
        try {
            TreeNode[] result = ((Question3)answer).topologicalSort();
            assertTrue(null, "Unexpected null value returned", result != null);
            assertTrue(null, "Returned array has the wrong size", result.length == 4);
            assertTrue(null, "Returned array has a reference in it that does not belong in the original tree!", result[0] == root || result[0] == qTree);
            assertTrue(null, "Returned array has a reference in it that does not belong in the original tree!", 
                (result[1] == subtree1 && result[2] == subtree2 && result[3] == leaf) 
                || (result[1] == subtree2 && result[2] == subtree1 && result[3] == leaf));
         } catch(Throwable exn) {
            fail(exn, "Unexpected exception " + exn.getClass().getName());
        } // end of try-catch
    } // end of method testTree3