public void remove(final MutableTreeNode node) { if (node == preferredChild) { final int index = children.indexOf(node); if (children.size() > index + 1) { preferredChild = (children.get(index + 1)); } else { preferredChild = (index > 0) ? (NodeModel) (children.get(index - 1)) : null; } } final int index = getIndex(node); node.setParent(null); children.remove(node); fireNodeRemoved((NodeModel) node, index); }