func (rn *RelationshipNode) simplifyRelWithCycle() bool {
	var newChildren []Node
	modif := false
	childrenToAnalyze := rn.children[:]
	Outerloop:
	for len(childrenToAnalyze) != 0 {
		var mergedChildren []Node
		Innerloop:
		for _, chld := range childrenToAnalyze {
			if dg, ok := chld.(*RelationshipNode); ok {
				modif = dg.simplifyRelWithCycle() || modif
				if len(dg.children) == 1 {
					mergedChildren = append(mergedChildren, dg.children[0])
					modif = true
					continue Innerloop
				}
			}
			if _, ok := chld.(*Cycle); ok {
				if rn.relation == AND_REL && len(rn.children) > 1 {
					newChildren = []Node{new(Cycle)}
					modif = true
					break Outerloop
				}
			}
			newChildren = append(newChildren, chld)
		}
		childrenToAnalyze = mergedChildren
	}
	rn.children = newChildren
	return modif
}
/* simplifyRelWithCycle recursively visit the tree and bubbles up Cycle instances in AND Relations or removes them if
they are in OR Relations.
It also simplifies relation nodes with only one child by bubbling up the child.

This function returns true if the children list of the receiver was modified.
package graph
import (
	"fmt"
	"github.com/hashicorp/go-immutable-radix"
	"github.com/deckarep/golang-set"
	"net"
	"github.com/ANSSI-FR/transdep/tools"
)