 			@children = []
 
 		CUI.util.assert(CUI.isArray(@children), "Tree.addNode","Cannot add node, children needs to be an Array in node", node: @, new_node: node)
+
+		for _node in @children
+			CUI.util.assert(_node != node, "ListViewTreeNode.addNode", "Must have every child only once.", node: @, child: _node)
+
 		if append == true
 			@children.push(node)
 		else

					CUI.util.assert(CUI.util.isPromise(ret), "#{CUI.util.getObjectClass(@)}.open", "returned children are not of type Promise or Array", children: ret)
					ret
					.done (@children) =>
						if open_counter < @__open_counter
							return
						load_children()
						return

		CUI.resolvedPromise()

	moveNodeAfter: (to_node, new_father, after) ->
