docs: public void checkSubTree(TreePath tp, boolean check) {
          CheckedNode cn = nodesCheckingState.get(tp);
          cn.isSelected = check;
          DefaultMutableTreeNode node = (DefaultMutableTreeNode) tp.getLastPathComponent();
          for (int i = 0 ; i < node.getChildCount() ; i++) {              
              checkSubTree(tp.pathByAddingChild(node.getChildAt(i)), check);
          }
          cn.allChildrenSelected = check;
          if (check) {
              checkedPaths.add(tp);
          } else {
              checkedPaths.remove(tp);
          }
          updatePredecessorsAllChildrenSelectedState(tp);
      }