@Override
    public boolean retainAll(Collection<?> c) {
        List<Node<T>> childrenOld = new ArrayList<>(children);
        boolean retained = children.retainAll(c);
        if (retained) {
            childrenOld.removeAll(children);
            childrenOld.forEach(node -> node.parent(null));
        }
        return retained;
    }
@author Nico Bergemann <barracuda415 at yahoo.de>
@param <T>
disunity-core/src/main/java/info/ata4/util/collection/Node.java