From 38f8077d5e2c621831225577a16c971a8aa3921a Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paristech.fr>
Date: Wed, 10 Mar 2021 13:57:12 +0100
Subject: [PATCH] Revert "Merge branch 'planTest' into 'master'"

This reverts merge request !402
---
 .../simulation/DependencyGraphTranslator.java |  94 +---
 .../tmltranslator/simulation/PlanArrays.java  |  43 --
 .../JFrameLatencyComparedDetailedPopup.java   |   3 +-
 .../JFrameLatencyDetailedAnalysis.java        |   1 -
 .../JFrameLatencyDetailedPopup.java           |   4 +-
 .../LatencyAnalysisParallelAlgorithms.java    |   8 +-
 .../TableRenderer.java                        |   8 +-
 .../ComparisonOfSimulationTracesTest.java     |   2 +-
 .../CompareLatencyInSimulationTracesTest.java |  40 +-
 .../GraphLatencyAnalysisTest.java             |  18 +-
 .../NestedStructurePLANTest.java              | 107 ++++-
 .../GraphLatencyAnalysisTaintingTest.java     |   2 +-
 .../ComparisonOfSimulationTracesTest.java     |  50 --
 .../input/seqGraph1.graphml                   | 429 ------------------
 14 files changed, 135 insertions(+), 674 deletions(-)
 rename ttool/src/test/java/ui/{comparisonofsimulationtraces => ComparisonOfsimulationTracesInXML}/ComparisonOfSimulationTracesTest.java (98%)
 rename ttool/src/test/java/ui/{graphlatencyanalysis => GraphLatencyAnalysis}/CompareLatencyInSimulationTracesTest.java (85%)
 rename ttool/src/test/java/ui/{graphlatencyanalysis => GraphLatencyAnalysis}/GraphLatencyAnalysisTest.java (91%)
 rename ttool/src/test/java/ui/{graphlatencyanalysis => GraphLatencyAnalysis}/NestedStructurePLANTest.java (51%)
 rename ttool/src/test/java/ui/{graphlatencytainting => GraphLatencyTainting}/GraphLatencyAnalysisTaintingTest.java (99%)
 delete mode 100644 ttool/src/test/java/ui/comparisonofsimulationtracesinxml/ComparisonOfSimulationTracesTest.java
 delete mode 100644 ttool/src/test/resources/ui/graphLatencyAnalysis/input/seqGraph1.graphml

diff --git a/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java b/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java
index eef72f59e1..d8730bbbb9 100644
--- a/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java
+++ b/src/main/java/tmltranslator/simulation/DependencyGraphTranslator.java
@@ -153,7 +153,6 @@ public class DependencyGraphTranslator extends SwingWorker {
     private Object[][] dataByTask = null;
     private Object[][] dataByTaskMinMax = null;
     private HashMap<Integer, Vector<SimulationTransaction>> dataByTaskR = new HashMap<Integer, Vector<SimulationTransaction>>();
-    private HashMap<Integer, Vector<SimulationTransaction>> mandatoryOptionalSimT = new HashMap<Integer, Vector<SimulationTransaction>>();
     private HashMap<Integer, List<SimulationTransaction>> dataBydelayedTasks = new HashMap<Integer, List<SimulationTransaction>>();
     private HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>> timeDelayedPerRow = new HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>>();
     private HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>> timeDelayedPerRowMinMax = new HashMap<Integer, HashMap<String, ArrayList<ArrayList<Integer>>>>();
@@ -169,7 +168,6 @@ public class DependencyGraphTranslator extends SwingWorker {
     private ArrayList<String> devicesToBeConsidered = new ArrayList<String>();
     private Vector<SimulationTransaction> relatedsimTraces = new Vector<SimulationTransaction>();
     private Vector<SimulationTransaction> delayDueTosimTraces = new Vector<SimulationTransaction>();
-    private Vector<SimulationTransaction> mandatoryOptional = new Vector<SimulationTransaction>();
     private HashMap<String, ArrayList<SimulationTransaction>> relatedsimTraceswithTaint = new HashMap<String, ArrayList<SimulationTransaction>>();
     private int nbOfNodes = 0;
     private List<String> usedLabels = new ArrayList<String>();
@@ -207,8 +205,8 @@ public class DependencyGraphTranslator extends SwingWorker {
     private static final String WAIT_REQ_LABEL = "Wait reqChannel_";
     private static final String GET_REQ_ARG_LABEL = "getReqArg";
     private static final String WAIT_ST = "Wait: ";
-    private static final String WAIT_EVENT = "Waitevent:";
-    private static final String SEND_EVENT = "Sendevent:";
+    private static final String WAIT_EVENT = "Wait event: ";
+    private static final String SEND_EVENT = "Send event: ";
     private static final String STOP_AFTER_INFINITE_LOOP = "Stop after infinite loop";
     private static final String START_OF_FORK = "startOfFork";
     private static final String START_OF_JOIN = "startOfJoin";
@@ -2065,7 +2063,6 @@ public class DependencyGraphTranslator extends SwingWorker {
             dataBydelayedTasks = new HashMap<Integer, List<SimulationTransaction>>();
             dataByTask = null;
             relatedsimTraces = new Vector<SimulationTransaction>();
-            mandatoryOptional = new Vector<SimulationTransaction>();
             delayDueTosimTraces = new Vector<SimulationTransaction>();
             dependencyGraphRelations.setRunnableTimePerDevice(new HashMap<String, ArrayList<ArrayList<Integer>>>());
             if (path2 != null && path2.getLength() > 0) {
@@ -2075,7 +2072,7 @@ public class DependencyGraphTranslator extends SwingWorker {
                     GraphPath<Vertex, DefaultEdge> pathTochannel = DijkstraShortestPath.findPathBetween(g, v1, getvertex(ChannelName));
                     GraphPath<Vertex, DefaultEdge> pathFromChannel = DijkstraShortestPath.findPathBetween(g, getvertex(ChannelName),
                             getvertex(task22));
-                    if (pathFromChannel != null && pathFromChannel.getLength() > 0) {
+                    if (pathTochannel != null && pathTochannel.getLength() > 0 && pathFromChannel != null && pathFromChannel.getLength() > 0) {
                         devicesToBeConsidered.addAll(busChList);
                     }
                 }
@@ -2723,23 +2720,6 @@ public class DependencyGraphTranslator extends SwingWorker {
                                                 dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList);
                                             }
                                         }
-                                    } else if (pathToDestination != null && pathToDestination.getLength() > 0) {
-                                        mandatoryOptional.add(st);
-                                        ArrayList<Integer> timeValues = new ArrayList<Integer>();
-                                        timeValues.add(0, Integer.valueOf(st.runnableTime));
-                                        timeValues.add(1, startTime);
-                                        String dName = st.deviceName + "_" + st.coreNumber;
-                                        if (!(st.runnableTime).equals(st.startTime)) {
-                                            if (dependencyGraphRelations.getRunnableTimePerDevice().containsKey(dName)) {
-                                                if (!dependencyGraphRelations.getRunnableTimePerDevice().get(dName).contains(timeValues)) {
-                                                    dependencyGraphRelations.getRunnableTimePerDevice().get(dName).add(timeValues);
-                                                }
-                                            } else {
-                                                ArrayList<ArrayList<Integer>> timeValuesList = new ArrayList<ArrayList<Integer>>();
-                                                timeValuesList.add(timeValues);
-                                                dependencyGraphRelations.getRunnableTimePerDevice().put(dName, timeValuesList);
-                                            }
-                                        }
                                     } else if (((st.deviceName.equals(task2DeviceName) && task2CoreNbr.equals(st.coreNumber))
                                             || (st.deviceName.equals(task1DeviceName) && task1CoreNbr.equals(st.coreNumber))
                                             || devicesToBeConsidered.contains(deviceName)) && !st.id.equals(idTask1) && !st.id.equals(idTask2)) {
@@ -2777,7 +2757,6 @@ public class DependencyGraphTranslator extends SwingWorker {
                     dataByTaskR.put(i, relatedsimTraces);
                     dataBydelayedTasks.put(i, delayDueTosimTraces);
                     timeDelayedPerRow.put(i, dependencyGraphRelations.getRunnableTimePerDevice());
-                    mandatoryOptionalSimT.put(i, mandatoryOptional);
                     // dataByTask[i][5] = list.getModel();
                     // dataByTask[i][6] = totalTime;
                 }
@@ -3734,20 +3713,6 @@ public class DependencyGraphTranslator extends SwingWorker {
         return dataByTaskRowDetails;
     }
 
-    public String[][] getMandatoryOptionalByRow(int row) {
-        String[][] dataByTaskRowDetails = new String[mandatoryOptionalSimT.get(row).size()][5];
-        int i = 0;
-        for (SimulationTransaction st : mandatoryOptionalSimT.get(row)) {
-            dataByTaskRowDetails[i][0] = st.command;
-            dataByTaskRowDetails[i][1] = nameIDTaskList.get(st.id);
-            dataByTaskRowDetails[i][2] = st.deviceName + "_" + st.coreNumber;
-            dataByTaskRowDetails[i][3] = st.startTime;
-            dataByTaskRowDetails[i][4] = st.endTime;
-            i++;
-        }
-        return dataByTaskRowDetails;
-    }
-
     // fill the detailed latency table once a row is selected
     public Object[][] getTaskByRowDetailsMinMaxTaint(int row) {
         String task12 = (String) dataByTaskMinMax[row][0];
@@ -3810,10 +3775,6 @@ public class DependencyGraphTranslator extends SwingWorker {
         return dataByTaskR.get(row);
     }
 
-    public List<SimulationTransaction> getMandatoryOptionalSimTTaks(int row) {
-        return mandatoryOptionalSimT.get(row);
-    }
-
     public Vector<SimulationTransaction> getMinMaxTasksByRowTainted(int row) {
         int maxStartTime = (int) dataByTaskMinMax[row][1];
         int maxEndTime = (int) dataByTaskMinMax[row][3];
@@ -4181,25 +4142,18 @@ public class DependencyGraphTranslator extends SwingWorker {
     }
 
     // import graph in .graphml format
-    public Graph<Vertex, DefaultEdge> importGraph(String filename) throws IOException {
+    public void importGraph(String filename) throws ExportException, IOException, ImportException {
         FileReader ps = new FileReader(filename + ".graphml");
-        Graph<Vertex, DefaultEdge> importedG = new DefaultDirectedGraph<>(DefaultEdge.class);
-        GraphMLImporter<Vertex, DefaultEdge> importer;
         // gmlExporter.exportGraph(g, PS);
         // FileWriter PS2 = new FileWriter(filename + "test.graphml");
-        VertexProvider<Vertex> vertexProvider = (id, attributes) -> {
-            Vertex v = new Vertex(id, 0);
-            return v;
+        VertexProvider<String> vertexProvider = (id, attributes) -> {
+            String cv = new String(id);
+            return cv;
         };
-        EdgeProvider<Vertex, DefaultEdge> edgeProvider = (from, to, label, attributes) -> new DefaultEdge();
-        importer = new GraphMLImporter<Vertex, DefaultEdge>(vertexProvider, edgeProvider);
-        try {
-            importer.importGraph(importedG, ps);
-        } catch (ImportException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-        return importedG;
+        EdgeProvider<String, DefaultEdge> edgeProvider = (from, to, label, attributes) -> new DefaultEdge();
+        GraphMLImporter<String, DefaultEdge> importer = new GraphMLImporter<String, DefaultEdge>(vertexProvider, edgeProvider);
+        Graph<String, DefaultEdge> importedGraph = null;
+        importer.importGraph(importedGraph, ps);
     }
 
     public HashMap<String, String> getNameIDTaskList() {
@@ -4393,30 +4347,4 @@ public class DependencyGraphTranslator extends SwingWorker {
     public DependencyGraphRelations getDependencyGraphRelations() {
         return dependencyGraphRelations;
     }
-
-    public boolean compareWithImported(String filename) {
-        try {
-            Graph<Vertex, DefaultEdge> importedGraph = importGraph(filename);
-            for (Vertex vg : g.vertexSet()) {
-                if (!importedGraph.vertexSet().contains(vg)) {
-                    return false;
-                }
-            }
-            for (DefaultEdge vg : g.edgeSet()) {
-                if (!importedGraph.edgeSet().toString().contains(vg.toString())) {
-                    return false;
-                }
-            }
-            if (g.vertexSet().size() != importedGraph.vertexSet().size()) {
-                return false;
-            }
-            if (g.edgeSet().size() != importedGraph.edgeSet().size()) {
-                return false;
-            }
-        } catch (IOException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-        return true;
-    }
 }
\ No newline at end of file
diff --git a/src/main/java/tmltranslator/simulation/PlanArrays.java b/src/main/java/tmltranslator/simulation/PlanArrays.java
index 06f9906163..b16153a788 100644
--- a/src/main/java/tmltranslator/simulation/PlanArrays.java
+++ b/src/main/java/tmltranslator/simulation/PlanArrays.java
@@ -10,7 +10,6 @@ public class PlanArrays {
     private List<String> onPathBehavior = new ArrayList<String>();
     private List<String> offPathBehavior = new ArrayList<String>();
     private List<String> offPathBehaviorCausingDelay = new ArrayList<String>();
-    private List<String> mandatoryOptional = new ArrayList<String>();
     private static final String ZERO = "0";
     private static final String DEVICE_NAME = "Device Name";
     private String[] columnNames;
@@ -39,23 +38,6 @@ public class PlanArrays {
                     deviceNames1.add(deviceNameandcore);
                 }
             }
-            for (SimulationTransaction st : dgraph.getMandatoryOptionalSimTTaks(row)) {
-                if (st.coreNumber == null) {
-                    st.coreNumber = ZERO;
-                }
-                tmpEnd = Integer.parseInt(st.endTime);
-                if (tmpEnd > maxTime) {
-                    maxTime = tmpEnd;
-                }
-                tmpStart = Integer.parseInt(st.startTime);
-                if (tmpStart < minTime) {
-                    minTime = tmpStart;
-                }
-                String deviceNameandcore = st.deviceName + "_" + st.coreNumber;
-                if (!deviceNames1.contains(deviceNameandcore)) {
-                    deviceNames1.add(deviceNameandcore);
-                }
-            }
             for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) {
                 tmpEnd = Integer.parseInt(st.endTime);
                 if (st.coreNumber == null) {
@@ -103,26 +85,6 @@ public class PlanArrays {
                     }
                 }
             }
-            for (SimulationTransaction st : dgraph.getMandatoryOptionalSimTTaks(row)) {
-                if (st.coreNumber == null) {
-                    st.coreNumber = ZERO;
-                }
-                for (String dName : deviceNames1) {
-                    String deviceNameandcore = st.deviceName + "_" + st.coreNumber;
-                    if (deviceNameandcore.equals(dName)) {
-                        length = Integer.parseInt(st.length);
-                        for (int i = 0; i < length; i++) {
-                            int columnnmber = Integer.parseInt(st.endTime) - minTime - i;
-                            dataDetailedByTask[deviceNames1.indexOf(dName)][columnnmber] = dgraph.getNameIDTaskList().get(st.id);
-                            ;
-                            mandatoryOptional.add(dgraph.getNameIDTaskList().get(st.id) + columnNames[columnnmber]);
-                            // if (!dgraph.getOnPath().contains(st)) {
-                            // dgraph.getOnPath().add(st);
-                            // }
-                        }
-                    }
-                }
-            }
             HashMap<String, ArrayList<ArrayList<Integer>>> delayTime = dgraph.getRowDelayDetailsByHW(row);
             for (SimulationTransaction st : dgraph.getRowDetailsByHW(row)) {
                 int startTime = Integer.valueOf(st.startTime);
@@ -346,9 +308,4 @@ public class PlanArrays {
     public String[] getColumnNames() {
         return columnNames;
     }
-
-    public List<String> getMandatoryOptional() {
-        return mandatoryOptional;
-    }
-
 }
diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java
index 6a9b92e677..05e6f2cf21 100644
--- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java
+++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyComparedDetailedPopup.java
@@ -59,6 +59,7 @@ import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
 import javax.swing.table.TableColumnModel;
+
 import tmltranslator.simulation.DependencyGraphTranslator;
 import tmltranslator.simulation.SimulationTransaction;
 
@@ -559,7 +560,7 @@ public class JFrameLatencyComparedDetailedPopup extends JFrame implements TableM
         table.setFillsViewportHeight(true);
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
         table.setAutoCreateRowSorter(true);
-        TableRenderer tr = new TableRenderer(onPathBehavior, offPathBehaviorCausingDelay, offPathBehavior, offPathBehavior);
+        TableRenderer tr = new TableRenderer(onPathBehavior, offPathBehaviorCausingDelay, offPathBehavior);
         int ncols = table.getColumnCount();
         table.getModel().addTableModelListener(this);
         TableColumnModel tcm = table.getColumnModel();
diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java
index 58633d849e..1e8d5948c8 100644
--- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java
+++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedAnalysis.java
@@ -511,7 +511,6 @@ public class JFrameLatencyDetailedAnalysis extends JFrame implements ActionListe
     protected void generateDirectedGraph(TMLMapping<TGComponent> tmap, List<TMLComponentDesignPanel> cpanels) {
         try {
             dgraph = new DependencyGraphTranslator(tmap);
-            tc.setDgraph(dgraph);
             pbar.setMaximum(dgraph.getNodeNbProgressBar());
             pbar.setMinimum(0);
             dgraph.addPropertyChangeListener(new PropertyChangeListener() {
diff --git a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java
index 9ab0c0677f..3cda41c3b4 100644
--- a/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java
+++ b/src/main/java/ui/simulationtraceanalysis/JFrameLatencyDetailedPopup.java
@@ -56,6 +56,7 @@ import javax.swing.table.DefaultTableModel;
 import javax.swing.table.TableCellRenderer;
 import javax.swing.table.TableColumn;
 import javax.swing.table.TableColumnModel;
+
 import tmltranslator.simulation.DependencyGraphTranslator;
 import tmltranslator.simulation.PlanArrays;
 
@@ -228,8 +229,7 @@ public class JFrameLatencyDetailedPopup extends JFrame implements TableModelList
         table.setFillsViewportHeight(true);
         table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
         table.setAutoCreateRowSorter(true);
-        TableRenderer tr = new TableRenderer(arrays.getOnPathBehavior(), arrays.getOffPathBehaviorCausingDelay(), arrays.getOffPathBehavior(),
-                arrays.getMandatoryOptional());
+        TableRenderer tr = new TableRenderer(arrays.getOnPathBehavior(), arrays.getOffPathBehaviorCausingDelay(), arrays.getOffPathBehavior());
         int ncols = table.getColumnCount();
         table.getModel().addTableModelListener(this);
         TableColumnModel tcm = table.getColumnModel();
diff --git a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java
index 8fccc86300..e59cb0cdcc 100644
--- a/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java
+++ b/src/main/java/ui/simulationtraceanalysis/LatencyAnalysisParallelAlgorithms.java
@@ -6,6 +6,7 @@ import java.util.Vector;
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.xpath.XPathExpressionException;
 import org.xml.sax.SAXException;
+
 import tmltranslator.TMLMapping;
 import tmltranslator.simulation.DependencyGraphTranslator;
 import tmltranslator.simulation.SimulationTransaction;
@@ -24,7 +25,7 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable {
     private List<TMLComponentDesignPanel> cpanels;
     private DependencyGraphTranslator dgraph, dgraph1, dgraph2;
     private int row, row1, row2, row3, row4, selectedIndex;
-    private Object[][] dataDetailedByTask, dataDetailedByTask2, dataMandatoryOptional;
+    private Object[][] dataDetailedByTask, dataDetailedByTask2;
     private LatencyDetailedAnalysisMain main;
     private MainGUI mainGUI;
     private SimulationTrace selectedST;
@@ -44,7 +45,6 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable {
             jFrameLDA.generateDirectedGraph(tmap, cpanels);
         } else if (algorithmId == 2) {
             dataDetailedByTask = dgraph.getTaskByRowDetails(row);
-            dataMandatoryOptional = dgraph.getMandatoryOptionalByRow(row);
         } else if (algorithmId == 3) {
             dataDetailedByTask = dgraph.getTaskByRowDetailsMinMaxTaint(row);
         } else if (algorithmId == 4) {
@@ -222,10 +222,6 @@ public class LatencyAnalysisParallelAlgorithms implements Runnable {
         this.dgraph1 = dgraph1;
     }
 
-    public Object[][] getDataMandatoryOptional() {
-        return dataMandatoryOptional;
-    }
-
     public void latencyDetailedAnalysis(JFrameCompareLatencyDetail jFrameCompareLatencyDetail, String task12, String task22, String task32,
             String task42, Vector<SimulationTransaction> transFile12, Vector<SimulationTransaction> transFile22) {
         cld = jFrameCompareLatencyDetail;
diff --git a/src/main/java/ui/simulationtraceanalysis/TableRenderer.java b/src/main/java/ui/simulationtraceanalysis/TableRenderer.java
index f0970b2c79..407d06889b 100644
--- a/src/main/java/ui/simulationtraceanalysis/TableRenderer.java
+++ b/src/main/java/ui/simulationtraceanalysis/TableRenderer.java
@@ -17,17 +17,14 @@ class TableRenderer extends DefaultTableCellRenderer {
     private List<String> onPathBehaviors = new Vector<String>();
     private List<String> offPathBehaviors = new Vector<String>();
     private List<String> offPathBehaviorCausingDelay = new Vector<String>();
-    private List<String> mandatoryOptionalByRow = new Vector<String>();
 
-    public TableRenderer(List<String> onPathBehavior, List<String> offPathBehaviorCausingDelay, List<String> offPathBehavior,
-            List<String> mandatoryOptionalByRow) {
+    public TableRenderer(List<String> onPathBehavior, List<String> offPathBehaviorCausingDelay, List<String> offPathBehavior) {
         this.onPathBehaviors = new Vector<String>();
         this.offPathBehaviorCausingDelay = new Vector<String>();
         this.offPathBehaviors = new Vector<String>();
         this.onPathBehaviors = onPathBehavior;
         this.offPathBehaviorCausingDelay = offPathBehaviorCausingDelay;
         this.offPathBehaviors = offPathBehavior;
-        this.mandatoryOptionalByRow = mandatoryOptionalByRow;
     }
 
     public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
@@ -47,9 +44,6 @@ class TableRenderer extends DefaultTableCellRenderer {
             } else if (offPathBehaviors.contains(value.toString() + table.getColumnName(column))) {
                 randomColour = Color.orange;
                 // randomColour = Color.red;
-            } else if (mandatoryOptionalByRow.contains(value.toString() + table.getColumnName(column))) {
-                randomColour = Color.LIGHT_GRAY;
-                // randomColour = Color.red;
             }
         } else {
             this.colorCell = false;
diff --git a/ttool/src/test/java/ui/comparisonofsimulationtraces/ComparisonOfSimulationTracesTest.java b/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfSimulationTracesTest.java
similarity index 98%
rename from ttool/src/test/java/ui/comparisonofsimulationtraces/ComparisonOfSimulationTracesTest.java
rename to ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfSimulationTracesTest.java
index cde245810b..72661a360a 100644
--- a/ttool/src/test/java/ui/comparisonofsimulationtraces/ComparisonOfSimulationTracesTest.java
+++ b/ttool/src/test/java/ui/ComparisonOfsimulationTracesInXML/ComparisonOfSimulationTracesTest.java
@@ -1,4 +1,4 @@
-package ui.comparisonofsimulationtraces;
+package ui.ComparisonOfsimulationTracesInXML;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
diff --git a/ttool/src/test/java/ui/graphlatencyanalysis/CompareLatencyInSimulationTracesTest.java b/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTracesTest.java
similarity index 85%
rename from ttool/src/test/java/ui/graphlatencyanalysis/CompareLatencyInSimulationTracesTest.java
rename to ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTracesTest.java
index 78cd58bcf7..14718c4732 100644
--- a/ttool/src/test/java/ui/graphlatencyanalysis/CompareLatencyInSimulationTracesTest.java
+++ b/ttool/src/test/java/ui/GraphLatencyAnalysis/CompareLatencyInSimulationTracesTest.java
@@ -1,4 +1,4 @@
-package ui.graphlatencyanalysis;
+package ui.GraphLatencyAnalysis;
 
 import static org.junit.Assert.assertTrue;
 
@@ -27,19 +27,18 @@ import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain;
 
 public class CompareLatencyInSimulationTracesTest extends AbstractUITest {
     private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input";
-    private static final String SIMULATIONTRACEPATHFILE1 = INPUT_PATH + "/graphTestSimulationTrace.xml";
-    private static final String SIMULATIONTRACEPATHFILE2 = INPUT_PATH + "/testFunc.xml";
-    private static final String MODELPATH = INPUT_PATH + "/GraphTestModel.xml";
-    private static final String MAPPINGDIAGNAME = "Architecture2";
-    private static final int OPERATOR1ID = 44;
-    private static final int OPERATOR2ID = 26;
-    private static final int OPERATOR3ID = 40;
-    private static final int OPERATOR4ID = 28;
-    
+    private static final String simulationTracePathFile1 = INPUT_PATH + "/graphTestSimulationTrace.xml";
+    private static final String simulationTracePathFile2 = INPUT_PATH + "/testFunc.xml";
+    private static final String modelPath = INPUT_PATH + "/GraphTestModel.xml";
+    private static final String mappingDiagName = "Architecture2";
     private Vector<String> checkedTransactionsFile1 = new Vector<String>();
     private Vector<String> checkedTransactionsFile2 = new Vector<String>();
+    private static final int operator1ID = 44;
+    private static final int operator2ID = 26;
+    private static final int operator3ID = 40;
+    private static final int operator4ID = 28;
     private DependencyGraphTranslator dgraph1, dgraph2;
-    private String task1, task2, task3, task4;
+    private static String task1, task2, task3, task4;
     private JFrameCompareLatencyDetail cld;
     private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain;
     private JFrameLatencyDetailedAnalysis jFrameLatencyDetailedAnalysis;
@@ -50,7 +49,7 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest {
     private HashMap<String, Integer> checkedT1 = new HashMap<String, Integer>();
     private HashMap<String, Integer> checkedT2 = new HashMap<String, Integer>();
     // protected MainGUI mainGUI1 = null;
-    private Object[][] dataDetailedByTask, dataDetailedByTask2, dataHWDelayByTask, dataHWDelayByTask2;
+    private static Object[][] dataDetailedByTask, dataDetailedByTask2, dataHWDelayByTask, dataHWDelayByTask2;
 
     public CompareLatencyInSimulationTracesTest() {
         super();
@@ -59,9 +58,9 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest {
     @Before
     public void GraphLatencyAnalysis()
             throws XPathExpressionException, ParserConfigurationException, SAXException, IOException, InterruptedException {
-        mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + MODELPATH));
-        final TMLArchiPanel panel = findArchiPanel(MAPPINGDIAGNAME);
-        simT1 = new SimulationTrace("", 6, (getBaseResourcesDir() + SIMULATIONTRACEPATHFILE1));
+        mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + modelPath));
+        final TMLArchiPanel panel = findArchiPanel(mappingDiagName);
+        simT1 = new SimulationTrace("graphTestSimulationTrace", 6, (getBaseResourcesDir() + simulationTracePathFile1));
         LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, simT1, false, false, 3);
         LatencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>());
         try {
@@ -76,6 +75,7 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest {
                 cld.setVisible(false);
             }
         } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) {
+            // TODO Auto-generated catch block
             e.printStackTrace();
         }
         LatencyDetailedAnalysisMain.getTc().getT().join();
@@ -85,7 +85,7 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest {
             checkedT1 = LatencyDetailedAnalysisMain.getCheckedT1();
             cld.setDgraph(null);
             LatencyDetailedAnalysisMain.setCheckedTransactionsFile(new Vector<String>());
-            simT2 = new SimulationTrace("", 6, (getBaseResourcesDir() + SIMULATIONTRACEPATHFILE2));
+            simT2 = new SimulationTrace("graphTestSimulationTrace", 6, (getBaseResourcesDir() + simulationTracePathFile2));
             try {
                 LatencyDetailedAnalysisMain.latencyDetailedAnalysisForXML(mainGUI, simT2, false, true, 1);
             } catch (XPathExpressionException | ParserConfigurationException | SAXException | IOException e) {
@@ -110,18 +110,18 @@ public class CompareLatencyInSimulationTracesTest extends AbstractUITest {
         for (Entry<String, Integer> cT : checkedT1.entrySet()) {
             int id = cT.getValue();
             String taskName = cT.getKey();
-            if (id == OPERATOR1ID) {
+            if (id == operator1ID) {
                 task1 = taskName;
-            } else if (id == OPERATOR2ID) {
+            } else if (id == operator2ID) {
                 task2 = taskName;
             }
         }
         for (Entry<String, Integer> cT : checkedT2.entrySet()) {
             int id = cT.getValue();
             String taskName = cT.getKey();
-            if (id == OPERATOR3ID) {
+            if (id == operator3ID) {
                 task3 = taskName;
-            } else if (id == OPERATOR4ID) {
+            } else if (id == operator4ID) {
                 task4 = taskName;
             }
         }
diff --git a/ttool/src/test/java/ui/graphlatencyanalysis/GraphLatencyAnalysisTest.java b/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysisTest.java
similarity index 91%
rename from ttool/src/test/java/ui/graphlatencyanalysis/GraphLatencyAnalysisTest.java
rename to ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysisTest.java
index 1471c6c1a4..52ea83df8e 100644
--- a/ttool/src/test/java/ui/graphlatencyanalysis/GraphLatencyAnalysisTest.java
+++ b/ttool/src/test/java/ui/GraphLatencyAnalysis/GraphLatencyAnalysisTest.java
@@ -1,4 +1,4 @@
-package ui.graphlatencyanalysis;
+package ui.GraphLatencyAnalysis;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -24,15 +24,15 @@ public class GraphLatencyAnalysisTest extends AbstractUITest {
     private static final String SIMULATIONTRACE_PATH = INPUT_PATH + "/graphTestSimulationTrace.xml";
     private static final String modelPath = INPUT_PATH + "/GraphTestModel.xml";
     private static final String mappingDiagName = "Architecture2";
-    private static final int OPERATOR1_ID = 44;
-    private static final int OPERATOR2_ID = 26;
-
     private Vector<SimulationTransaction> transFile1;
+    // private Vector<String> dropDown;
     private HashMap<String, Integer> checkedDropDown = new HashMap<String, Integer>();
-    private String task1;
-    private String task2;
-    private DependencyGraphTranslator dgt;
-    private Object[][] allLatencies, minMaxArray, taskHWByRowDetails, detailedLatency;
+    private static final int OPERATOR1_ID = 44;
+    private static final int OPERATOR2_ID = 26;
+    private static String task1;
+    private static String task2;
+    private static DependencyGraphTranslator dgt;
+    private static Object[][] allLatencies, minMaxArray, taskHWByRowDetails, detailedLatency;
     private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis;
     private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain;
 
@@ -47,7 +47,7 @@ public class GraphLatencyAnalysisTest extends AbstractUITest {
             System.out.println("Non NULL Panel");
         }
         mainGUI.checkModelingSyntax(panel, true);
-        SimulationTrace file2 = new SimulationTrace("", 6, SIMULATIONTRACE_PATH);
+        SimulationTrace file2 = new SimulationTrace("graphTestSimulationTrace", 6, SIMULATIONTRACE_PATH);
         LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3);
         LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI);
         LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI);
diff --git a/ttool/src/test/java/ui/graphlatencyanalysis/NestedStructurePLANTest.java b/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLANTest.java
similarity index 51%
rename from ttool/src/test/java/ui/graphlatencyanalysis/NestedStructurePLANTest.java
rename to ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLANTest.java
index e8f3651ab9..e07f24de35 100644
--- a/ttool/src/test/java/ui/graphlatencyanalysis/NestedStructurePLANTest.java
+++ b/ttool/src/test/java/ui/GraphLatencyAnalysis/NestedStructurePLANTest.java
@@ -1,20 +1,20 @@
-package ui.graphlatencyanalysis;
+package ui.GraphLatencyAnalysis;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+
 import java.awt.*;
 import java.io.File;
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map.Entry;
 import java.util.Vector;
+
 import org.junit.Before;
 import org.junit.Test;
-import myutil.TraceManager;
+
 import tmltranslator.simulation.DependencyGraphTranslator;
 import tmltranslator.simulation.SimulationTransaction;
-import tmltranslator.simulation.Vertex;
 import ui.AbstractUITest;
 import ui.SimulationTrace;
 import ui.TMLArchiPanel;
@@ -22,33 +22,39 @@ import ui.simulationtraceanalysis.JFrameLatencyDetailedAnalysis;
 import ui.simulationtraceanalysis.LatencyDetailedAnalysisMain;
 
 public class NestedStructurePLANTest extends AbstractUITest {
-    private static final String MAPPING_DIAG_NAME = "Architecture";
+
+    private static final int[] EXIST_EDGE = {66, 65,
+    66,63,
+    64, 63};
+
+    private static final String mapping_Diag_Name = "Architecture";
     private static final String INPUT_PATH = "/ui/graphLatencyAnalysis/input";
     private static final String SIMULATIONTRACE_PATH_FILE = INPUT_PATH + "/loopseqTrace.xml";
     private static final String MODEL_PATH = INPUT_PATH + "/loopseqgraph.xml";
-    private static final int OPERATOR1_ID = 69;
-    private static final int OPERATOR2_ID = 53;
-    private static final String GRAPH = INPUT_PATH + "/seqGraph1";
+
     private LatencyDetailedAnalysisMain LatencyDetailedAnalysisMain;
     private JFrameLatencyDetailedAnalysis latencyDetailedAnalysis;
-    private DependencyGraphTranslator dgt;
+    private static DependencyGraphTranslator dgt;
     private Vector<SimulationTransaction> transFile1;
     private HashMap<String, Integer> checkedDropDown = new HashMap<String, Integer>();
-    private String task1;
-    private String task2;
-    private Object[][] allLatencies;
+    private static final int OPERATOR1_ID = 69;
+    private static final int OPERATOR2_ID = 53;
+    private static String task1;
+    private static String task2;
+    private static Object[][] allLatencies;
 
     @Before
     public void NestedStructurePLAN() throws InterruptedException {
         mainGUI.openProjectFromFile(new File(getBaseResourcesDir() + MODEL_PATH));
-        final TMLArchiPanel panel = findArchiPanel(MAPPING_DIAG_NAME);
+        // mainGUI.openProjectFromFile(new File(modelPath));
+        final TMLArchiPanel panel = findArchiPanel(mapping_Diag_Name);
         if (panel == null) {
             System.out.println("NULL Panel");
         } else {
             System.out.println("Non NULL Panel");
         }
         mainGUI.checkModelingSyntax(panel, true);
-        SimulationTrace file2 = new SimulationTrace("", 6, SIMULATIONTRACE_PATH_FILE);
+        SimulationTrace file2 = new SimulationTrace("graphTestSimulationTrace", 6, SIMULATIONTRACE_PATH_FILE);
         LatencyDetailedAnalysisMain = new LatencyDetailedAnalysisMain(3, mainGUI, file2, false, false, 3);
         LatencyDetailedAnalysisMain.getTc().setMainGUI(mainGUI);
         LatencyDetailedAnalysisMain.latencyDetailedAnalysis(file2, panel, false, false, mainGUI);
@@ -59,8 +65,10 @@ public class NestedStructurePLANTest extends AbstractUITest {
             try {
                 latencyDetailedAnalysis.getT().join();
             } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
                 e.printStackTrace();
             }
+           
             dgt = latencyDetailedAnalysis.getDgraph();
         }
     }
@@ -69,15 +77,72 @@ public class NestedStructurePLANTest extends AbstractUITest {
     public void parseFile() {
         assertNotNull(latencyDetailedAnalysis);
         int graphsize = dgt.getGraphsize();
+        System.out.println("Graphsize=" + graphsize);
         assertTrue(graphsize >= 57);
-        if (GRAPH != null) {
-            try {
-                Boolean test = dgt.compareWithImported(GRAPH);
-                assertTrue(test);
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
+
+        // test sequence to all its nexts
+
+        for(int i=0; i<EXIST_EDGE.length-1; i = i + 2) {
+            assertTrue(dgt.edgeExists(EXIST_EDGE[i], EXIST_EDGE[i+1]));
         }
+
+        /*assertTrue(dgt.edgeExists(66, 65));
+        assertTrue(dgt.edgeExists(66, 63));
+        // test sequence branch to another
+        assertTrue(dgt.edgeExists(64, 63));*/
+
+
+
+
+        assertTrue(dgt.edgeExists(63, 62));
+        // test ordered sequence
+        assertTrue(dgt.edgeExists(62, 61));
+        assertTrue(dgt.edgeExists(62, 60));
+        // test nested sequence to unordered sequence
+        assertTrue(dgt.edgeExists(57, 60));
+        assertTrue(dgt.edgeExists(68, 60));
+        // test unordered sequence nexts
+        assertTrue(dgt.edgeExists(61, 67));
+        assertTrue(dgt.edgeExists(61, 58));
+        assertTrue(dgt.edgeExists(68, 58));
+        assertTrue(dgt.edgeExists(57, 67));
+        // test ordered sequence nexts
+        assertTrue(dgt.edgeExists(26, 25));
+        assertTrue(dgt.edgeExists(26, 21));
+        assertTrue(dgt.edgeExists(26, 23));
+        // test ordered sequence ends
+        assertTrue(dgt.edgeExists(24, 21));
+        // nested seq loop
+        assertTrue(dgt.edgeExists(27, 23));
+        assertTrue(dgt.edgeExists(30, 36));
+        assertTrue(dgt.edgeExists(29, 36));
+        // inside loop only connected to loop vertex
+        assertFalse(dgt.edgeExists(30, 22));
+        assertFalse(dgt.edgeExists(29, 22));
+        // sequence last branch end not connected to other branches
+        assertFalse(dgt.edgeExists(22, 25));
+        assertFalse(dgt.edgeExists(22, 21));
+        // sequence branches not connected backward
+        assertFalse(dgt.edgeExists(27, 25));
+        // loop for ever edges+ nested loops and seq
+        assertTrue(dgt.edgeExists(44, 49));
+        assertTrue(dgt.edgeExists(44, 51));
+        assertTrue(dgt.edgeExists(44, 53));
+        assertTrue(dgt.edgeExists(43, 42));
+        assertTrue(dgt.edgeExists(43, 41));
+        assertTrue(dgt.edgeExists(45, 41));
+        assertTrue(dgt.edgeExists(40, 49));
+        assertTrue(dgt.edgeExists(48, 54));
+        assertTrue(dgt.edgeExists(48, 51));
+        assertTrue(dgt.edgeExists(48, 53));
+        assertTrue(dgt.edgeExists(50, 49));
+        assertTrue(dgt.edgeExists(50, 53));
+        assertTrue(dgt.edgeExists(50, 54));
+        assertTrue(dgt.edgeExists(52, 51));
+        assertTrue(dgt.edgeExists(52, 49));
+        assertTrue(dgt.edgeExists(52, 54));
+        assertFalse(dgt.edgeExists(40, 54));
+        assertFalse(dgt.edgeExists(40, 42));
         transFile1 = LatencyDetailedAnalysisMain.getLatencyDetailedAnalysis().parseFile(new File(getBaseResourcesDir() + SIMULATIONTRACE_PATH_FILE));
         assertTrue(transFile1.size() == 38);
         checkedDropDown = latencyDetailedAnalysis.getCheckedT();
diff --git a/ttool/src/test/java/ui/graphlatencytainting/GraphLatencyAnalysisTaintingTest.java b/ttool/src/test/java/ui/GraphLatencyTainting/GraphLatencyAnalysisTaintingTest.java
similarity index 99%
rename from ttool/src/test/java/ui/graphlatencytainting/GraphLatencyAnalysisTaintingTest.java
rename to ttool/src/test/java/ui/GraphLatencyTainting/GraphLatencyAnalysisTaintingTest.java
index 3bfd7269d1..6da087deaa 100644
--- a/ttool/src/test/java/ui/graphlatencytainting/GraphLatencyAnalysisTaintingTest.java
+++ b/ttool/src/test/java/ui/GraphLatencyTainting/GraphLatencyAnalysisTaintingTest.java
@@ -1,4 +1,4 @@
-package ui.graphlatencytainting;
+package ui.GraphLatencyTainting;
 
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
diff --git a/ttool/src/test/java/ui/comparisonofsimulationtracesinxml/ComparisonOfSimulationTracesTest.java b/ttool/src/test/java/ui/comparisonofsimulationtracesinxml/ComparisonOfSimulationTracesTest.java
deleted file mode 100644
index cc433be902..0000000000
--- a/ttool/src/test/java/ui/comparisonofsimulationtracesinxml/ComparisonOfSimulationTracesTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package ui.comparisonofsimulationtracesinxml;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.xml.sax.SAXException;
-
-import tmltranslator.simulation.CompareSimulationTrace;
-import ui.AbstractUITest;
-import ui.SimulationTrace;
-import ui.interactivesimulation.JFrameShowLatencyDetails;
-import ui.simulationtraceanalysis.JFrameCompareSimulationTraces;
-
-public class ComparisonOfSimulationTracesTest extends AbstractUITest {
-    private static final String PATH1 = "/ui/xmlCompare/input/simple.xml";
-    private static final String PATH2 = "/ui/xmlCompare/input/simplifiedWithSecurity.xml";
-    private static String STfilePath1 = getBaseResourcesDir() + PATH1;
-    private static String STfilePath2 = getBaseResourcesDir() + PATH2;
-
-    private JFrameCompareSimulationTraces cSimTrace;
-    private CompareSimulationTrace newContentPane;
-    private JFrameShowLatencyDetails showLatencyDetails;
-    private SimulationTrace selectedST1 = new SimulationTrace("", 6, STfilePath1);
-    private SimulationTrace selectedST2 = new SimulationTrace("", 6, STfilePath2);
-
-    @Test
-    public void loadTest() {
-        assertNotNull(selectedST1);
-        assertNotNull(selectedST2);
-    }
-
-    @Test
-    public void parseXMLTest() throws SAXException, IOException, ParserConfigurationException {
-        cSimTrace = new JFrameCompareSimulationTraces(mainGUI, "", selectedST1, false);
-        cSimTrace.setVisible(false);
-        cSimTrace.parseXML(STfilePath1, STfilePath2);
-        assertNotNull(cSimTrace.getTransFile1());
-        assertNotNull(cSimTrace.getTransFile2());
-        newContentPane = new CompareSimulationTrace();
-        newContentPane.JPanelCompareXmlGraph(cSimTrace.getTransFile1(), cSimTrace.getTransFile2());
-        assertTrue(newContentPane.getTable().getRowCount() > 0);
-    }
-
-}
\ No newline at end of file
diff --git a/ttool/src/test/resources/ui/graphLatencyAnalysis/input/seqGraph1.graphml b/ttool/src/test/resources/ui/graphLatencyAnalysis/input/seqGraph1.graphml
deleted file mode 100644
index c81cd9696a..0000000000
--- a/ttool/src/test/resources/ui/graphLatencyAnalysis/input/seqGraph1.graphml
+++ /dev/null
@@ -1,429 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><graphml xmlns="http://graphml.graphdrawing.org/xmlns" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-<key id="vertex_label_key" for="node" attr.name="VertexLabel" attr.type="string"/>
-<key id="edge_label_key" for="edge" attr.name="EdgeLabel" attr.type="string"/>
-<graph edgedefault="directed">
-<node id="Bus0">
-<data key="vertex_label_key">Bus0</data>
-</node>
-<node id="Memory0">
-<data key="vertex_label_key">Memory0</data>
-</node>
-<node id="f__dataC__13">
-<data key="vertex_label_key">f__dataC__13</data>
-</node>
-<node id="f__data__16">
-<data key="vertex_label_key">f__data__16</data>
-</node>
-<node id="CPU_R">
-<data key="vertex_label_key">CPU_R</data>
-</node>
-<node id="f__rez">
-<data key="vertex_label_key">f__rez</data>
-</node>
-<node id="f__rez__start__39">
-<data key="vertex_label_key">f__rez__start__39</data>
-</node>
-<node id="f__rez__infiniteloop__54">
-<data key="vertex_label_key">f__rez__infiniteloop__54</data>
-</node>
-<node id="f__rez__rseq__44">
-<data key="vertex_label_key">f__rez__rseq__44</data>
-</node>
-<node id="f__rez__readchannel__53">
-<data key="vertex_label_key">f__rez__readchannel__53</data>
-</node>
-<node id="f__rez__stopstate__52">
-<data key="vertex_label_key">f__rez__stopstate__52</data>
-</node>
-<node id="f__rez__execc__51">
-<data key="vertex_label_key">f__rez__execc__51</data>
-</node>
-<node id="f__rez__stopstate__50">
-<data key="vertex_label_key">f__rez__stopstate__50</data>
-</node>
-<node id="f__rez__loop__49">
-<data key="vertex_label_key">f__rez__loop__49</data>
-</node>
-<node id="f__rez__execi__46">
-<data key="vertex_label_key">f__rez__execi__46</data>
-</node>
-<node id="f__rez__seq__43">
-<data key="vertex_label_key">f__rez__seq__43</data>
-</node>
-<node id="f__rez__d-delay__47">
-<data key="vertex_label_key">f__rez__d-delay__47</data>
-</node>
-<node id="f__rez__stopstate__48">
-<data key="vertex_label_key">f__rez__stopstate__48</data>
-</node>
-<node id="f__rez__execi__42">
-<data key="vertex_label_key">f__rez__execi__42</data>
-</node>
-<node id="f__rez__stopstate__45">
-<data key="vertex_label_key">f__rez__stopstate__45</data>
-</node>
-<node id="f__rez__execc__41">
-<data key="vertex_label_key">f__rez__execc__41</data>
-</node>
-<node id="f__rez__stopstate__40">
-<data key="vertex_label_key">f__rez__stopstate__40</data>
-</node>
-<node id="f__app">
-<data key="vertex_label_key">f__app</data>
-</node>
-<node id="f__app__start__20">
-<data key="vertex_label_key">f__app__start__20</data>
-</node>
-<node id="f__app__Waitevent:f__sendData__f__sendData__38">
-<data key="vertex_label_key">f__app__Waitevent:f__sendData__f__sendData__38</data>
-</node>
-<node id="f__app__readchannel__37">
-<data key="vertex_label_key">f__app__readchannel__37</data>
-</node>
-<node id="f__app__seq__26">
-<data key="vertex_label_key">f__app__seq__26</data>
-</node>
-<node id="f__app__execi__25">
-<data key="vertex_label_key">f__app__execi__25</data>
-</node>
-<node id="f__app__stopstate__24">
-<data key="vertex_label_key">f__app__stopstate__24</data>
-</node>
-<node id="f__app__execi__21">
-<data key="vertex_label_key">f__app__execi__21</data>
-</node>
-<node id="f__app__loop__0__36">
-<data key="vertex_label_key">f__app__loop__0__36</data>
-</node>
-<node id="f__app__execi__23">
-<data key="vertex_label_key">f__app__execi__23</data>
-</node>
-<node id="f__app__stopstate__22">
-<data key="vertex_label_key">f__app__stopstate__22</data>
-</node>
-<node id="f__app__action__33">
-<data key="vertex_label_key">f__app__action__33</data>
-</node>
-<node id="f__app__choice__34">
-<data key="vertex_label_key">f__app__choice__34</data>
-</node>
-<node id="f__app__writechannel__28">
-<data key="vertex_label_key">f__app__writechannel__28</data>
-</node>
-<node id="f__app__stopstate__27">
-<data key="vertex_label_key">f__app__stopstate__27</data>
-</node>
-<node id="f__app__execi__32">
-<data key="vertex_label_key">f__app__execi__32</data>
-</node>
-<node id="f__app__stopstate__30">
-<data key="vertex_label_key">f__app__stopstate__30</data>
-</node>
-<node id="f__app__execi__31">
-<data key="vertex_label_key">f__app__execi__31</data>
-</node>
-<node id="f__app__stopstate__29">
-<data key="vertex_label_key">f__app__stopstate__29</data>
-</node>
-<node id="CPU_S">
-<data key="vertex_label_key">CPU_S</data>
-</node>
-<node id="f__send">
-<data key="vertex_label_key">f__send</data>
-</node>
-<node id="f__send__start__56">
-<data key="vertex_label_key">f__send__start__56</data>
-</node>
-<node id="f__send__seq__66">
-<data key="vertex_label_key">f__send__seq__66</data>
-</node>
-<node id="f__send__d-delay__65">
-<data key="vertex_label_key">f__send__d-delay__65</data>
-</node>
-<node id="f__send__stopstate__64">
-<data key="vertex_label_key">f__send__stopstate__64</data>
-</node>
-<node id="f__send__execi__63">
-<data key="vertex_label_key">f__send__execi__63</data>
-</node>
-<node id="f__send__seq__62">
-<data key="vertex_label_key">f__send__seq__62</data>
-</node>
-<node id="f__send__rseq__61">
-<data key="vertex_label_key">f__send__rseq__61</data>
-</node>
-<node id="f__send__execc__60">
-<data key="vertex_label_key">f__send__execc__60</data>
-</node>
-<node id="f__send__stopstate__59">
-<data key="vertex_label_key">f__send__stopstate__59</data>
-</node>
-<node id="f__send__execi__58">
-<data key="vertex_label_key">f__send__execi__58</data>
-</node>
-<node id="f__send__stopstate__57">
-<data key="vertex_label_key">f__send__stopstate__57</data>
-</node>
-<node id="f__send__Sendevent:f__sendData__f__sendData__67">
-<data key="vertex_label_key">f__send__Sendevent:f__sendData__f__sendData__67</data>
-</node>
-<node id="f__send__writechannel__69">
-<data key="vertex_label_key">f__send__writechannel__69</data>
-</node>
-<node id="f__send__stopstate__68">
-<data key="vertex_label_key">f__send__stopstate__68</data>
-</node>
-<edge id="Bus0f__dataC__13" source="Bus0" target="f__dataC__13">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="Bus0f__data__16" source="Bus0" target="f__data__16">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="CPU_Rf__rez" source="CPU_R" target="f__rez">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rezf__rez__start__39" source="f__rez" target="f__rez__start__39">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__start__39f__rez__infiniteloop__54" source="f__rez__start__39" target="f__rez__infiniteloop__54">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__infiniteloop__54f__rez__rseq__44" source="f__rez__infiniteloop__54" target="f__rez__rseq__44">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__rseq__44f__rez__readchannel__53" source="f__rez__rseq__44" target="f__rez__readchannel__53">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__readchannel__53f__rez__stopstate__52" source="f__rez__readchannel__53" target="f__rez__stopstate__52">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__rseq__44f__rez__execc__51" source="f__rez__rseq__44" target="f__rez__execc__51">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__execc__51f__rez__stopstate__50" source="f__rez__execc__51" target="f__rez__stopstate__50">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__rseq__44f__rez__loop__49" source="f__rez__rseq__44" target="f__rez__loop__49">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__loop__49f__rez__execi__46" source="f__rez__loop__49" target="f__rez__execi__46">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__execi__46f__rez__seq__43" source="f__rez__execi__46" target="f__rez__seq__43">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__loop__49f__rez__d-delay__47" source="f__rez__loop__49" target="f__rez__d-delay__47">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__d-delay__47f__rez__stopstate__48" source="f__rez__d-delay__47" target="f__rez__stopstate__48">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__seq__43f__rez__execi__42" source="f__rez__seq__43" target="f__rez__execi__42">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__execi__42f__rez__stopstate__45" source="f__rez__execi__42" target="f__rez__stopstate__45">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__seq__43f__rez__execc__41" source="f__rez__seq__43" target="f__rez__execc__41">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__execc__41f__rez__stopstate__40" source="f__rez__execc__41" target="f__rez__stopstate__40">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="CPU_Rf__app" source="CPU_R" target="f__app">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__appf__app__start__20" source="f__app" target="f__app__start__20">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__start__20f__app__Waitevent:f__sendData__f__sendData__38" source="f__app__start__20" target="f__app__Waitevent:f__sendData__f__sendData__38">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__Waitevent:f__sendData__f__sendData__38f__app__readchannel__37" source="f__app__Waitevent:f__sendData__f__sendData__38" target="f__app__readchannel__37">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__readchannel__37f__app__seq__26" source="f__app__readchannel__37" target="f__app__seq__26">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__seq__26f__app__execi__25" source="f__app__seq__26" target="f__app__execi__25">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__execi__25f__app__stopstate__24" source="f__app__execi__25" target="f__app__stopstate__24">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__seq__26f__app__execi__21" source="f__app__seq__26" target="f__app__execi__21">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__execi__21f__app__loop__0__36" source="f__app__execi__21" target="f__app__loop__0__36">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__seq__26f__app__execi__23" source="f__app__seq__26" target="f__app__execi__23">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__execi__23f__app__stopstate__22" source="f__app__execi__23" target="f__app__stopstate__22">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__loop__0__36f__app__action__33" source="f__app__loop__0__36" target="f__app__action__33">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__action__33f__app__choice__34" source="f__app__action__33" target="f__app__choice__34">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__loop__0__36f__app__writechannel__28" source="f__app__loop__0__36" target="f__app__writechannel__28">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__writechannel__28f__app__stopstate__27" source="f__app__writechannel__28" target="f__app__stopstate__27">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__choice__34f__app__execi__32" source="f__app__choice__34" target="f__app__execi__32">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__execi__32f__app__stopstate__30" source="f__app__execi__32" target="f__app__stopstate__30">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__choice__34f__app__execi__31" source="f__app__choice__34" target="f__app__execi__31">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__execi__31f__app__stopstate__29" source="f__app__execi__31" target="f__app__stopstate__29">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="CPU_Sf__send" source="CPU_S" target="f__send">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__sendf__send__start__56" source="f__send" target="f__send__start__56">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__start__56f__send__seq__66" source="f__send__start__56" target="f__send__seq__66">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__seq__66f__send__d-delay__65" source="f__send__seq__66" target="f__send__d-delay__65">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__d-delay__65f__send__stopstate__64" source="f__send__d-delay__65" target="f__send__stopstate__64">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__seq__66f__send__execi__63" source="f__send__seq__66" target="f__send__execi__63">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__execi__63f__send__seq__62" source="f__send__execi__63" target="f__send__seq__62">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__seq__62f__send__rseq__61" source="f__send__seq__62" target="f__send__rseq__61">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__seq__62f__send__execc__60" source="f__send__seq__62" target="f__send__execc__60">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__execc__60f__send__stopstate__59" source="f__send__execc__60" target="f__send__stopstate__59">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__rseq__61f__send__execi__58" source="f__send__rseq__61" target="f__send__execi__58">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__execi__58f__send__stopstate__57" source="f__send__execi__58" target="f__send__stopstate__57">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__rseq__61f__send__Sendevent:f__sendData__f__sendData__67" source="f__send__rseq__61" target="f__send__Sendevent:f__sendData__f__sendData__67">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__Sendevent:f__sendData__f__sendData__67f__send__writechannel__69" source="f__send__Sendevent:f__sendData__f__sendData__67" target="f__send__writechannel__69">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__writechannel__69f__send__stopstate__68" source="f__send__writechannel__69" target="f__send__stopstate__68">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="CPU_RBus0" source="CPU_R" target="Bus0">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="Bus0CPU_R" source="Bus0" target="CPU_R">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="CPU_SBus0" source="CPU_S" target="Bus0">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="Bus0CPU_S" source="Bus0" target="CPU_S">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="Memory0Bus0" source="Memory0" target="Bus0">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="Bus0Memory0" source="Bus0" target="Memory0">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__40f__rez__loop__49" source="f__rez__stopstate__40" target="f__rez__loop__49">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__52f__rez__infiniteloop__54" source="f__rez__stopstate__52" target="f__rez__infiniteloop__54">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__50f__rez__infiniteloop__54" source="f__rez__stopstate__50" target="f__rez__infiniteloop__54">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__stopstate__30f__app__loop__0__36" source="f__app__stopstate__30" target="f__app__loop__0__36">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__48f__rez__infiniteloop__54" source="f__rez__stopstate__48" target="f__rez__infiniteloop__54">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__stopstate__29f__app__loop__0__36" source="f__app__stopstate__29" target="f__app__loop__0__36">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__Sendevent:f__sendData__f__sendData__67f__app__Waitevent:f__sendData__f__sendData__38" source="f__send__Sendevent:f__sendData__f__sendData__67" target="f__app__Waitevent:f__sendData__f__sendData__38">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__dataC__13f__rez__readchannel__53" source="f__dataC__13" target="f__rez__readchannel__53">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__data__16f__app__readchannel__37" source="f__data__16" target="f__app__readchannel__37">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__writechannel__69f__data__16" source="f__send__writechannel__69" target="f__data__16">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__writechannel__28f__dataC__13" source="f__app__writechannel__28" target="f__dataC__13">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__stopstate__24f__app__execi__21" source="f__app__stopstate__24" target="f__app__execi__21">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__45f__rez__execc__41" source="f__rez__stopstate__45" target="f__rez__execc__41">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__stopstate__64f__send__execi__63" source="f__send__stopstate__64" target="f__send__execi__63">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__stopstate__57f__send__execc__60" source="f__send__stopstate__57" target="f__send__execc__60">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__stopstate__68f__send__execc__60" source="f__send__stopstate__68" target="f__send__execc__60">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__app__stopstate__27f__app__execi__23" source="f__app__stopstate__27" target="f__app__execi__23">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__52f__rez__loop__49" source="f__rez__stopstate__52" target="f__rez__loop__49">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__52f__rez__execc__51" source="f__rez__stopstate__52" target="f__rez__execc__51">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__50f__rez__loop__49" source="f__rez__stopstate__50" target="f__rez__loop__49">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__50f__rez__readchannel__53" source="f__rez__stopstate__50" target="f__rez__readchannel__53">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__48f__rez__readchannel__53" source="f__rez__stopstate__48" target="f__rez__readchannel__53">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__rez__stopstate__48f__rez__execc__51" source="f__rez__stopstate__48" target="f__rez__execc__51">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__stopstate__57f__send__Sendevent:f__sendData__f__sendData__67" source="f__send__stopstate__57" target="f__send__Sendevent:f__sendData__f__sendData__67">
-<data key="edge_label_key">1.0</data>
-</edge>
-<edge id="f__send__stopstate__68f__send__execi__58" source="f__send__stopstate__68" target="f__send__execi__58">
-<data key="edge_label_key">1.0</data>
-</edge>
-</graph>
-</graphml>
-- 
GitLab