diff --git a/src/main/java/org/olat/core/util/nodes/GenericNode.java b/src/main/java/org/olat/core/util/nodes/GenericNode.java
index d55bf6fdc75b8ac025fac055db7923bcf750111a..df3cb01c9cef83076e37bf18d03e7d72e47a28a4 100644
--- a/src/main/java/org/olat/core/util/nodes/GenericNode.java
+++ b/src/main/java/org/olat/core/util/nodes/GenericNode.java
@@ -124,15 +124,19 @@ public abstract class GenericNode implements INode, Serializable {
 		}
 	}
 
-	/**
-	 * @see org.olat.core.util.nodes.INode#insert(org.olat.core.util.nodes.INode, int)
-	 */
+	@Override
 	public void insert(INode newChild, int index) {
 		if (isNodeAncestor(newChild)) throw new IllegalArgumentException("new child is an ancestor");
 		newChild.removeFromParent();
 		newChild.setParent(this);
-		if (children == null) children = new ArrayList<INode>(INITIAL_CHILD_SIZE);
-		children.add(index, newChild);
+		if (children == null) {
+			children = new ArrayList<INode>(INITIAL_CHILD_SIZE);
+		}
+		if(index > children.size()) {
+			children.add(newChild);
+		} else {
+			children.add(index, newChild);
+		}
 	}
 
 	/**