ordered_tree :: OrderedTree :: detach
# Temporary remove `e`.
#
# Children of `e` are left untouched in the tree.
# This make the tree inconstant until `e` is added back.
private fun detach(e: E)
do
var old_parent = parents.get_or_null(e)
if old_parent != null then
var subs = sub[old_parent]
subs.remove(e)
if subs.is_empty then
# remove the sub when all children are detached
# so that `==` and `hash` are sane
# Otherwise an empty array will be considered
# differently than no array.
sub.keys.remove(old_parent)
end
else if roots.has(e) then
roots.remove(e)
end
end
lib/ordered_tree/ordered_tree.nit:123,2--143,4