@Override
	public void undo() {
		// Remove the Node
		node.getTree().removeNode(node);
		undoable.getTargetParent().removeChild(node);

		// Insert the Node
		undoable.getParent().insertChild(node,index);
		node.getTree().insertNode(node);
		
		// Set depth if neccessary.
		if (undoable.getTargetParent().getDepth() != undoable.getParent().getDepth()) {
			node.setDepthRecursively(undoable.getParent().getDepth() + 1);
		}
		
		// Update selection
		node.getTree().addNodeToSelection(node);
	}