public void testChain1() {
        TreeNode key = new TreeNode("leaf");
        TreeNode tree = mkChain(new TreeNode[]{ key });
        setTree(tree);
        Question1 originalTree = ((Question2)answer).tree;
        try {
            Map result = synchronizeTree(((Question2)answer).convertTree());
            if (result == null) {
                fail(null, "You returned a `null` map from a leaf node!");
            } // end of if-then
            if (result.size() != 1) {
                fail(null, "You generated a map (" + toString(result) + ") with " + result.size() + " elements from a leaf node!");
            } // end of if-then
            if (! result.containsKey(originalTree)) {
                fail(null, "Your map does not contain `this` tree as a key!");
            } // end of if-then
            if (result.get(originalTree) == null) {
                fail(null, "You generated a map that associates a `null` value with a key!");
            } // end of if-then
            if (! (result.get(originalTree) instanceof TreeNode[])) {
                if (result.get(originalTree) instanceof TreeNode) {
                    fail(null, "Your keys should **not** be associated with values that have type `TreeNode`!");
                } // end of if-then
                fail(null, "Your keys are associated with values that are not of type `TreeNode[]`!");
            } // end of if-then
            assertTrue(null, "Your code failed to correctly convert a leaf node tree.",
              ((TreeNode[])(result.get(originalTree))).length == 0);
        } catch(TreeException exn) {
            fail(exn, "An unexpected `TreeException` was generated!");
        } catch(ClassCastException exn) {
            fail(exn, "Your `keys` should have type **TreeNode** and your `values` should have type **TreeNode[]**.");
        } catch(Throwable exn) {
            fail(exn, "No exception's should be generated, but your code threw: " + exn.getClass().getName());
        } // end of try-catch
    }