private DefaultMutableTreeNode findDescendantNode(DefaultMutableTreeNode node, Region region)
    {
        // GO THROUGH ALL OF node's CHILDREN
        for (int i = 0; i < node.getChildCount(); i++)
        {
            DefaultMutableTreeNode childNode = (DefaultMutableTreeNode)node.getChildAt(i);
            Region testRegion = (Region)childNode.getUserObject();
            if (testRegion.getId().equals(region.getId()))
            {
                return childNode;
            }
            else if (!childNode.isLeaf())
            {
                // RECURSIVE CALL HERE
                DefaultMutableTreeNode foundNode = findDescendantNode(childNode, region);
                if (foundNode != null)
                {
                    return foundNode;
                }
            }
        }        
        return null;
    }