private void getOutTriggerNodesTransitive(INode node, Set<INode> triggerNodes) {
    for (IEdge edge : node.getOutTriggerEdges()) {

      INode parentNode = edge.getToNode();

      // if the node was not seen earlier, then add and process
      if (!triggerNodes.contains(parentNode)) {
        triggerNodes.add(parentNode);
        getOutTriggerNodesTransitive(parentNode, triggerNodes);
      }
    }
  }
  private void getInInhibitNodesTransitive(INode node, Set<INode> inhibitNodes) {
    for (IEdge edge : node.getInInhibitEdges()) {

      INode parentNode = edge.getFromNode();

      // if the node was not seen earlier, then add and process
      if (!inhibitNodes.contains(parentNode)) {
        inhibitNodes.add(parentNode);
        getInInhibitNodesTransitive(parentNode, inhibitNodes);
      }
    }
  }