Hi all,
(Just to document a bug that I have found before forgetting about it.)
If you use checkBoxTree.getModel().removeNodeFromParent(node), and the node is the last unchecked node of its siblings, and there are unchecked siblings of one of its parent nodes, then the selection model will become inconsistent and will cause a stack overflow error when the tree is refreshed, e.g. when a treeModel.nodeChanged is fired. I have taken a look at the source code, and that is why I can confirm that it is indeed a bug with CheckBoxTreeSelectionModel.
To workaround this bug, if the node has siblings, make sure the node's selection state is equal to one of its siblings before removing it.
Regards,
p1999