private boolean verify_OUT_Hierarchy(boolean conclusion, Set<Node> toVerifyOutNodes, Set<Node> verifiedOutNodes) {
        final Iterator itr = toVerifyOutNodes.iterator();
        Node cur = (Node) itr.next();
        toVerifyOutNodes.remove(cur);

        if (verifiedOutNodes.contains(cur)) {
            conclusion = false;
        } else {
            for (int i = 0; i < cur.getOutgoingLinksNumber(); i++) {
                if (cur.getOutgoingLink(i).getOut_node().getType() != NodeType.OUTPUT) {
                    toVerifyOutNodes.add(cur.getOutgoingLink(i).getOut_node());
                    conclusion = verify_OUT_Hierarchy(conclusion, toVerifyOutNodes, verifiedOutNodes);
                }
            }
            verifiedOutNodes.add(cur);
        }
        return conclusion;
    }