remove method
Remove id and everything beneath it.
Implementation
void remove(TreeNodeId id) {
final ancestors = TreeOps.ancestorsOf<T>(_roots, id);
_apply(TreeOps.removeNode<T>(_roots, id));
final gone = TreeOps.find<T>(_roots, id) == null;
if (gone) {
_checked.removeAll(_checked.where((c) => TreeOps.find<T>(_roots, c) == null).toList());
_selection.remove(id);
if (_selected == id) _selected = ancestors.isNotEmpty ? ancestors.last : null;
if (_focused == id) _focused = _selected;
if (_editing == id) _editing = null;
}
}