public static void demote(Node currentNode, JoeTree tree, OutlineLayoutManager layout) {
		if (tree.getYoungestInSelection().isFirstChild()) {
			return;
		}
	
		// Put the Undoable onto the UndoQueue
		Node targetNode = tree.getYoungestInSelection().prevSibling();

		CompoundUndoableMove undoable = new CompoundUndoableMove(currentNode.getParent(),targetNode);
		
		int existingChildren = targetNode.numOfChildren();
		JoeNodeList nodeList = tree.getSelectedNodes();
		int moveCount = 0;
		for (int i = nodeList.size() - 1; i >= 0; i--) {
			// Record the Insert in the undoable
			Node nodeToMove = nodeList.get(i);

			// Abort if node is not moveable
			if (!nodeToMove.isMoveable()) {
				continue;
			}

			undoable.addPrimitive(new PrimitiveUndoableMove(undoable, nodeToMove, nodeToMove.currentIndex(), existingChildren));
			moveCount++;
		}

		if (!undoable.isEmpty()) {
			if (moveCount == 1) {
				undoable.setName("Demote Node");
			} else {
				undoable.setName(new StringBuffer().append("Demote ").append(moveCount).append(" Nodes").toString());
			}
			tree.getDocument().getUndoQueue().add(undoable);
			undoable.redo();
		}
	}