public void rebuild() {
		cachedChildrens.clear();
		TreeModelListener[] ls;
		synchronized (listeners) {
			ls = (TreeModelListener[]) listeners
					.toArray(new TreeModelListener[listeners.size()]);
		}
		TreeModelEvent ev = new TreeModelEvent(this, new Object[] { root });
		for (int i = 0; i < ls.length; i++)
			ls[i].treeStructureChanged(ev);

		main.reselect();
	}