+ void updateTheEdge(Node currentNode, Transition transition) {
+ if (parentNode.getOutgoingEdges().containsKey(currentNode)) {
+ Edge currentEdge = parentNode.getOutgoingEdges().get(currentNode);
+ if (currentEdge.getSetSetMap().containsKey(transition)) { // Update the transition
+ if (manual)
+ currentEdge.getSetSetMap().put(transition, tempSetSet);
+ else
+ currentEdge.getSetSetMap().get(transition).addAll(tempSetSet);
+ } else { // Add a new transition
+ currentEdge.getSetSetMap().put(transition, tempSetSet);
+ }
+ } else {
+ parentNode.getOutgoingEdges().put(currentNode, new Edge(parentNode, currentNode));
+ Edge currentEdge = parentNode.getOutgoingEdges().get(currentNode);
+ currentEdge.getSetSetMap().put(transition, tempSetSet);
+ }
+
+ // Update the last writer and last value for this edge for each varName
+ Edge currentEdge = parentNode.getOutgoingEdges().get(currentNode);
+ ArrayList<NameValuePair> setSet = currentEdge.getSetSetMap().get(transition);
+ for (int i = 0;i < setSet.size();i++) {
+ NameValuePair nameValuePair = setSet.get(i);
+ currentEdge.getLastWriter().put(nameValuePair.getVarName(), nameValuePair.getAppNum());
+ currentEdge.getLastValue().put(nameValuePair.getVarName(), nameValuePair.getValue());
+ }
+ }
+
+
+