public static void update(
     @NotNull CollapsedGraph collapsedGraph, int upDelegateNodeIndex, int downDelegateNodeIndex) {
   CollapsedGraph.Modification modification = collapsedGraph.startModification();
   new DottedFilterEdgesGenerator(
           collapsedGraph, modification, upDelegateNodeIndex, downDelegateNodeIndex)
       .update();
   modification.apply();
 }
 private boolean hasDottedEdges(int nodeIndex, boolean isUp) {
   for (GraphEdge edge :
       myModification.getEdgesToAdd().getAdjacentEdges(nodeIndex, EdgeFilter.NORMAL_ALL)) {
     if (edge.getType() == DOTTED) {
       if (isUp && LinearGraphUtils.isEdgeUp(edge, nodeIndex)) return true;
       if (!isUp && LinearGraphUtils.isEdgeDown(edge, nodeIndex)) return false;
     }
   }
   return false;
 }
 private void addDottedArrow(int nodeIndex, boolean isUp) {
   myModification.createEdge(
       new GraphEdge(nodeIndex, null, null, isUp ? DOTTED_ARROW_UP : DOTTED_ARROW_DOWN));
 }
 private void addDottedEdge(int nodeIndex1, int nodeIndex2) {
   myModification.createEdge(new GraphEdge(nodeIndex1, nodeIndex2, null, DOTTED));
 }