private void cancelRecursive(TreeNode root) {
    ((Cancelable)root.getDatum()).cancelTask();
    //Tree.removeFromParentChildren(root);
    List children = root.getChildren();
    for (Iterator iter = children.iterator(); iter.hasNext(); ) {
        TreeNode nextNode = ((Tree)(iter.next())).getRoot();
        cancelRecursive(nextNode);
    }
    //Tree.removeFromParentChildren(root);   
  }