}   if (parent.hasNextNode() && !(newChild instanceof ExpandingPreviousNode) && (index == parent.getChildCount()) && index != 0) { index--;
	public static void insertNodeInto(		MatrixTreeNode newChild,		MatrixTreeNode parent,		int index) {			try {				// we have to do this ourselves, as the node tree				// is indepenant from the tree models				// we could have a previous node, make sure we insert the new node after it				if (parent.hasPreviousNode() && !(newChild instanceof ExpandingNextNode)) {					index++;				}				parent.insert(newChild, index);				int[] newIndexs = new int[1];				newIndexs[0] = index;				DefaultTreeModel[] components = getBusComponents();				for (int i = 0; i < components.length; i++) {					DefaultTreeModel model = components[i];					// only fire the event if the node is below the models					// current root					if (((MatrixTreeNode) model.getRoot()).isNodeDescendant(parent)) {						model.nodesWereInserted(parent, newIndexs);					}				}			} catch (Throwable t) {				Log.log("Could Not insert node", MatrixTreeModelBus.class, t);			}	}