void () { for (Edge edge : listEdges) { String sourceid = edge.sourceid; Integer statid = edge.statid; DirectNode source = graph.nodes.getWithKey(sourceid); DirectNode dest = graph.nodes.getWithKey(mapDestinationNodes.get(statid)[edge.edgetype == EdgeType.CONTINUE ? 1 : 0]); if (!source.successors.contains(dest)) { source.successors.add(dest); } if (!dest.predecessors.contains(source)) { dest.predecessors.add(source); } if (mapPosIfBranch.containsKey(sourceid) && !statid.equals(mapPosIfBranch.get(sourceid))) { graph.mapNegIfBranch.put(sourceid, dest.id); } } for (int i = 0; i < 2; i++) { for (Entry<String, List<String[]>> ent : (i == 0 ? mapShortRangeFinallyPathIds : mapLongRangeFinallyPathIds).entrySet()) { List<FinallyPathWrapper> newLst = new ArrayList<>(); List<String[]> lst = ent.getValue(); for (String[] arr : lst) { boolean isContinueEdge = arr[i == 0 ? 4 : 3] != null; DirectNode dest = graph.nodes.getWithKey(mapDestinationNodes.get(Integer.parseInt(arr[1]))[isContinueEdge ? 1 : 0]); DirectNode enter = graph.nodes.getWithKey(mapDestinationNodes.get(Integer.parseInt(arr[2]))[0]); newLst.add(new FinallyPathWrapper(arr[0], dest.id, enter.id)); if (i == 0 && arr[3] != null) { graph.mapFinallyMonitorExceptionPathExits.put(ent.getKey(), dest.id); } } if (!newLst.isEmpty()) { (i == 0 ? graph.mapShortRangeFinallyPaths : graph.mapLongRangeFinallyPaths).put(ent.getKey(), new ArrayList<>( new HashSet<>(newLst))); } } } }