public void testRoot3() {
        setTree(new TreeNode("dummy"));
        Map refcounts = Collections.synchronizedMap(new HashMap());
        refcounts.put(new TreeNode("leaf1"), new Integer(1));
        refcounts.put(new TreeNode("root1"), new Integer(0));
        refcounts.put(new TreeNode("leaf2"), new Integer(1));
        refcounts.put(new TreeNode("root2"), new Integer(0));
        try {
            TreeNode result = ((Question2)answer).rootNode(refcounts);
            assertTrue(null, "Your code failed to correctly deal with a Map containing `multiple` root nodes correctly.", 
              result != null 
              && result.getData() != null
              && (result.getData().equals("root1") || result.getData().equals("root2"))
              && result.getBranch() != null 
              && result.getBranch().length == 0);
        } catch(ClassCastException exn) {
            fail(exn, "Caught a `ClassCastException`: you should **only** need to cast to the types `TreeNode` and `Integer`. Check that:\n* your `Map` keys have type **TreeNode**\n* your `Map` values have type **Integer**");                          
        } 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 testRoot3