public boolean canDeselect(DefaultMutableTreeNode node) {
    
    boolean permission = true;
    
    if (node instanceof NumberNode) {
      
      NumberNode iteratorChild = (NumberNode) m_TreeModel.getChild(this,
	  1);
      NumberNode maxChild = (NumberNode) m_TreeModel.getChild(this, 2);
      //the one case where we want to say no for number nodes: you can 
      //not have an iterator without a maximum value
      if (node == maxChild && (iteratorChild.getSelected() == true))
	permission = false;
      
    } else if (node instanceof CheckBoxNode) {
      
      //For check box nodes, we only want to say no if there's only one
      //box currently selected - because at least one box needs to be
      //checked.
      int totalSelected = 0;
      int childCount = m_TreeModel.getChildCount(this);
      
      for (int i = 0; i < childCount; i++) {
	
	CheckBoxNode currentChild = (CheckBoxNode) m_TreeModel
	.getChild(this, i);
	
	if (currentChild.getSelected())
	  totalSelected++;
	
      }
      
      if (totalSelected == 1)
	permission = false;
      
    }
    
    return permission;
  }