static TreeNode findNode(Tree tree, Object nodeDatum) {
     if (tree == null) { 
       return null;
     } 
     TreeNode node = findNodeOneLevel(tree.getRoot(), nodeDatum);
     TreeNode nextNode = tree.getRoot();
     if (!(node instanceof TreeNode)) {
       List children = nextNode.getChildren();
       for (Iterator iter = children.iterator(); iter.hasNext(); ) {
         Tree nextTree = (Tree)iter.next();
         node = findNode(nextTree, nodeDatum);
         if (!(node instanceof TreeNode)) {
           nextNode = nextTree.getRoot();
         }
       }
     }
     return node;
   }