Merge branch 'app4mc0.9.7/rttca' into master
Compliant to Amalthea 0.9.8
diff --git a/CONTRIBUTING b/CONTRIBUTING
new file mode 100644
index 0000000..500ac97
--- /dev/null
+++ b/CONTRIBUTING
@@ -0,0 +1,55 @@
+
+# Contributing to Eclipse APP4MC
+
+Thanks for your interest in this project.
+
+## Project description
+
+Application Platform Project for Multi Core
+
+* https://projects.eclipse.org/projects/technology.app4mc
+
+## Developer resources
+
+Information regarding source code management, builds, coding standards, and
+more.
+
+* https://projects.eclipse.org/projects/technology.app4mc/developer
+
+The project maintains the following source code repositories
+
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.addon.migration
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.examples
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.tools
+
+This project uses Bugzilla to track ongoing development and issues.
+
+* Search for issues: https://bugs.eclipse.org/bugs/buglist.cgi?product=APP4MC
+* Create a new report:
+   https://bugs.eclipse.org/bugs/enter_bug.cgi?product=APP4MC
+
+Be sure to search for existing bugs before you create another one. Remember that
+contributions are always welcome!
+
+## Eclipse Contributor Agreement
+
+Before your contribution can be accepted by the project team contributors must
+electronically sign the Eclipse Contributor Agreement (ECA).
+
+* http://www.eclipse.org/legal/ECA.php
+
+Commits that are provided by non-committers must have a Signed-off-by field in
+the footer indicating that the author is aware of the terms by which the
+contribution has been provided to the project. The non-committer must
+additionally have an Eclipse Foundation account and must have a signed Eclipse
+Contributor Agreement (ECA) on file.
+
+For more information, please see the Eclipse Committer Handbook:
+https://www.eclipse.org/projects/handbook/#resources-commit
+
+## Contact
+
+Contact the project developers via the project's "dev" list.
+
+* https://dev.eclipse.org/mailman/listinfo/app4mc-dev
diff --git a/NOTICE b/NOTICE
new file mode 100644
index 0000000..2273b2c
--- /dev/null
+++ b/NOTICE
@@ -0,0 +1,289 @@
+
+# Notices for Eclipse APP4MC
+
+This content is produced and maintained by the Eclipse APP4MC project.
+
+* Project home: https://projects.eclipse.org/projects/technology.app4mc
+
+## Trademarks
+
+Eclipse APP4MC, and APP4MC are trademarks of the Eclipse Foundation.
+
+## Copyright
+
+All content is the property of the respective authors or their employers. For
+more information regarding authorship of content, please consult the listed
+source code repository logs.
+
+## Declared Project Licenses
+
+This program and the accompanying materials are made available under the terms
+of the Eclipse Public License v. 2.0 which is available at
+http://www.eclipse.org/legal/epl-2.0.
+
+SPDX-License-Identifier: EPL-2.0
+
+## Source Code
+
+The project maintains the following source code repositories:
+
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.addon.migration
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.examples
+* https://git.eclipse.org/r/plugins/gitiles/app4mc/org.eclipse.app4mc.tools
+
+## Third-party Content
+
+This project leverages the following third party content.
+
+Apache Commons Lang (2.6)
+
+* License: Apache License, 2.0
+
+Apache Commons Lang (3.1.0)
+
+* License: Apache License, 2.0
+
+Apache Commons Math (2.1.0)
+
+* License: Apache License, 2.0, New BSD license 
+
+Apache Commons Math (3.5.0)
+
+* License: Apache License, 2.0, New BSD License
+
+Apache Jena-ARQ (2.10.0)
+
+* License: Apache-2.0 
+
+Apache Jena-Core (2.7.1)
+
+* License: Apache License 2.0, New BSD license
+
+Apache jena-iri (0.9.2)
+
+* License: Apache License, 2.0
+
+Apache Jena-TDB (0.10.0)
+
+* License: Apache-2.0 
+
+ArduiPi Adafruit SSD1306 OLED Driver SHA Commit
+37956b16aa8514dde5b6ecba04a20cc0babe39f1 (n/a)
+
+* License: BSD-2-Clause
+
+BCEL.Jar (5.2)
+
+* License: Apache License, 2.0
+
+choco (4.0.6)
+
+* License: BSD-4-Clause
+* Project: http://www.choco-solver.org
+* Source: https://github.com/chocoteam/choco-solver
+
+choco-cutoffseq (1.0.4)
+
+* License: BSD-4-Clause
+* Project: https://github.com/chocoteam/cutoffseq
+* Source: https://github.com/chocoteam/cutoffseq/releases/tag/pf4cs-1.0.4
+
+choco-graph (4.2.0)
+
+* License: BSD-4-Clause AND BSD-2-Clause AND BSD-3-Clause
+* Project: https://github.com/chocoteam/choco-graph
+* Source: https://github.com/chocoteam/choco-graph
+
+choco-sat (1.0.2)
+
+* License: BSD-3-Clause
+* Project: https://github.com/chocoteam/choco-sat
+* Source: https://github.com/chocoteam/choco-sat
+
+choco-solver (4.0.9)
+
+* License: BSD-4-Clause
+* Project: http://www.choco-solver.org
+* Source: https://github.com/chocoteam/choco-solver/releases/tag/4.0.9
+
+cpprof-java (1.3.0)
+
+* License: MIT
+* Project: https://github.com/cp-profiler/java-integration
+* Source: https://github.com/cp-profiler/java-integration
+
+dk.brics.automaton (18.01.2018)
+
+* License: BSD 3-Clause
+* Project: http://www.brics.dk/automaton/
+* Source: https://github.com/cs-au-dk/dk.brics.automaton
+
+easymock (3.3.1)
+
+* License: Apache License, 2.0
+* Project: http://easymock.org/
+* Source: https://github.com/easymock/easymock/archive/easymock-3.3.1.zip
+
+Google Guava (15.0.0)
+
+* License: Apache License, 2.0
+
+Google Guava (21.0)
+
+* License: Apache License, 2.0
+
+INCHRON Realtime System Model (2.98.2)
+
+* License: EPL-2.0
+* Project: http://www.inchron.com
+* Source: http://eclipse.inchron.com/realtime/updatesites/release/2.98.2/
+
+Inchron Realtime System model (2.98.5)
+
+* License: EPL-2.0
+* Project: http://www.inchron.com
+* Source: http://eclipse.inchron.com/realtime/updatesites/release/2.98.5/
+
+java_cup runtime Version: 10k (n/a)
+
+* License: Java Cup License (MIT Style)
+
+javassist (3.19.0)
+
+* License: Mozilla Public License 1.1 (MPL), Apache 2.0 
+* Project: http://jboss-javassist.github.io/javassist/
+* Source:
+   https://github.com/jboss-javassist/javassist/archive/rel_3_19_0_ga.zip
+
+jaxen (1.1.6)
+
+* License: BSD License, W3C (One File)
+* Project: https://github.com/codehaus/jaxen
+* Source: https://github.com/codehaus/jaxen/tree/V_1_1_6_Final/jaxen
+
+jcl-over-slf4j-1.7.10.jar (1.7.10)
+
+* License: Apache-2.0
+
+jdom (2.0.6)
+
+* License: JDom License (based on Apache 1.1 Style License)
+* Project: http://www.jdom.org
+* Source: http://www.jdom.org/dist/binary/jdom-2.0.6.zip
+
+jenetics (3.0.1)
+
+* License: Apache License, 2.0
+* Project: http://jenetics.io/
+* Source: https://github.com/jenetics/jenetics/releases/tag/v3.0.1
+
+Jenetics (3.8.0)
+
+* License: Apache-2.0
+* Project: http://jenetics.io/
+* Source: https://github.com/jenetics/jenetics/tree/v3.8.0
+
+jgrapht (0.9.0)
+
+* License: Eclipse Public License 1.0
+* Project: http://jgrapht.org/
+
+jgrapht-core (1.1.0)
+
+* License: EPL-1.0 OR LGPL-2.1-or-later 	
+
+JHHC-SR04 (n/a)
+
+* License: Pending
+
+JHPWMDriver (n/a)
+
+* License: MIT
+
+JUnit (4.12)
+
+* License: Eclipse Public License
+
+log4j (1.2.15)
+
+* License: Apache License, 2.0
+
+log4j over slf4j 1.7.10.jar (1.7.10)
+
+* License: Apache-2.0
+
+mxGraph (3.7.0.0)
+
+* License: Apache-2.0 AND BSD-3-Clause
+* Project: https://jgraph.github.io/mxgraph/
+* Source: https://github.com/jgraph/mxgraph
+
+net.sf.trove4j:trove4j (3.0.3)
+
+* License: GNU Library or 'Lesser' General Public License (LGPL) 2.1, MIT Style
+   (2 Files)
+
+ojalgo (39.0)
+
+* License: MIT License, BSD, Public Domain
+* Project: http://ojalgo.org/
+* Source: https://github.com/optimatika/ojAlgo/tree/v39
+
+org.xerial.sqlite (3.7.2)
+
+* License: Apache License, 2.0, ISC License
+
+pf4cs (1.0.5)
+
+* License: BSD-4-Clause
+* Project: https://github.com/chocoteam/pf4cs
+* Source: https://github.com/chocoteam/pf4cs
+
+plantUML (2018.8)
+
+* License: (EPL-1.0 OR BSD-3-CLAUSE OR MIT OR Apache-2.0 OR GPL-2.0-or-later OR
+   LGPL-3.0-or-later) AND (EPL-1.0 OR BSD-3-CLAUSE OR MIT OR Apache-2.0 OR
+   GPL-2.0-or-later OR LGPL-3.0-or-later OR AGPL-3.0-or-later) AND BSD-3-Clause
+   AND MIT AND Apache-2.0  
+
+PlantUML EPL Version: 8000 (n/a)
+
+* License: Eclipse Public License + Public Domain (One File)
+
+protobuf-java (3.2.0)
+
+* License: New BSD license
+
+resolver.jar (1.2)
+
+* License: Apache License, 2.0
+
+serializer.jar (2.7.1)
+
+* License: Apache License, 2.0
+
+SLF4J API Module (slf4j-api-1.7.10.jar) (1.7.10)
+
+* License: MIT
+
+xalan 2.7.1 top level jar (2.7.1)
+
+* License: Apache License, 2.0
+
+Xerces (2.9.0)
+
+* License: Apache License, 2.0
+
+xml-apis.jar (1.3.04)
+
+* License: Apache License, 2.0, Public Domain, W3C
+
+## Cryptography
+
+Content may contain encryption software. The country in which you are currently
+may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software,
+please check the country's laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is
+permitted.
diff --git a/eclipse-tools/cdgen/.classpath b/eclipse-tools/cdgen/.classpath
new file mode 100755
index 0000000..2874ea5
--- /dev/null
+++ b/eclipse-tools/cdgen/.classpath
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="module" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry exported="true" kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project b/eclipse-tools/cdgen/.project
old mode 100644
new mode 100755
similarity index 93%
rename from eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
rename to eclipse-tools/cdgen/.project
index 7614bd0..f145eda
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
+++ b/eclipse-tools/cdgen/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>net.sourceforge.plantuml</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>cdgen</name>

+	<comment></comment>

+	<projects>

+	</projects>

+	<buildSpec>

+		<buildCommand>

+			<name>org.eclipse.jdt.core.javabuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.ManifestBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+		<buildCommand>

+			<name>org.eclipse.pde.SchemaBuilder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+	</natures>

+</projectDescription>

diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/cdgen/.settings/org.eclipse.jdt.core.prefs
old mode 100644
new mode 100755
similarity index 92%
rename from eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.settings/org.eclipse.jdt.core.prefs
rename to eclipse-tools/cdgen/.settings/org.eclipse.jdt.core.prefs
index a698e59..5caa538
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.settings/org.eclipse.jdt.core.prefs
+++ b/eclipse-tools/cdgen/.settings/org.eclipse.jdt.core.prefs
@@ -1,12 +1,13 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
+eclipse.preferences.version=1

+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled

+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate

+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8

+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve

+org.eclipse.jdt.core.compiler.compliance=1.8

+org.eclipse.jdt.core.compiler.debug.lineNumber=generate

+org.eclipse.jdt.core.compiler.debug.localVariable=generate

+org.eclipse.jdt.core.compiler.debug.sourceFile=generate

+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error

+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error

+org.eclipse.jdt.core.compiler.release=disabled

+org.eclipse.jdt.core.compiler.source=1.8

diff --git a/eclipse-tools/cdgen/META-INF/MANIFEST.MF b/eclipse-tools/cdgen/META-INF/MANIFEST.MF
new file mode 100755
index 0000000..9e3c6d6
--- /dev/null
+++ b/eclipse-tools/cdgen/META-INF/MANIFEST.MF
@@ -0,0 +1,13 @@
+Manifest-Version: 1.0

+Automatic-Module-Name: app4mc.sniplets

+Bundle-ManifestVersion: 2

+Bundle-Name: GSOC2019

+Bundle-SymbolicName: cdgen

+Bundle-Version: 1.0.0.qualifier

+Export-Package: org.eclipse.app4mc.cdgen.utils,

+ org.eclipse.app4mc.cdgen

+Require-Bundle: org.eclipse.app4mc.amalthea.model,

+ org.junit,

+ org.eclipse.jdt.annotation

+Bundle-RequiredExecutionEnvironment: JavaSE-1.8

+Bundle-Vendor: Ram Prasath Govindarajan

diff --git a/eclipse-tools/cdgen/README.md b/eclipse-tools/cdgen/README.md
new file mode 100644
index 0000000..01067db
--- /dev/null
+++ b/eclipse-tools/cdgen/README.md
@@ -0,0 +1,33 @@
+# CdGen
+> CdGen is a model to text converter tool which is used for real time analysis of the Amalthea System model on the Adapteva Parallella Hardware.
+
+For more details please refer to [documentation][documentation].
+
+## Installation
+
+* [APP4MC version 0.9.5][APP4MC] 
+* [Java SE 10][JAVA]
+* [Source code for the scheduler][here] 
+
+## User Guide
+
+*	Code Generation
+1. Download and Unzip APP4MC
+2. Install Java SE 10 
+3. Start APP4MC and create a new workspace
+4. Import the project from git or any options available.
+5. Select checkFileCreateGUI.java from the checks directory andright click and run as Java application
+6. Select the scheduler, task preemption, file source of corresponding scheduler and Model of choice.
+7. Click start for code generation.
+8. Code is generated in the root location with a timestamp.
+
+*	Compilation and Execution
+9. Replace the generated code in place of the src directory in below [setup][setup]. 
+10. Build, deploy and Run the code on Parallella.
+
+<!-- Markdown link & img dfn's -->
+[documentation]:https://cdgendoc.readthedocs.io/en/latest/
+[setup]:https://git.eclipse.org/c/app4mc/org.eclipse.app4mc.examples.git/commit/?id=69a0a24f120bb0d79cbd688081ca697368e252f7
+[APP4MC]:https://www.eclipse.org/app4mc/downloads/
+[JAVA]:https://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase10-4425482.html
+[here]:https://git.eclipse.org/c/app4mc/org.eclipse.app4mc.examples.git/commit/?id=69a0a24f120bb0d79cbd688081ca697368e252f7
diff --git a/eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/bin/.gitignore b/eclipse-tools/cdgen/bin/.gitignore
similarity index 100%
rename from eclipse-tools/sca2amalthea/plugins/org.eclipse.app4mc.sca.ui/bin/.gitignore
rename to eclipse-tools/cdgen/bin/.gitignore
diff --git a/eclipse-tools/cdgen/build.properties b/eclipse-tools/cdgen/build.properties
new file mode 100644
index 0000000..b107977
--- /dev/null
+++ b/eclipse-tools/cdgen/build.properties
@@ -0,0 +1,3 @@
+source.. = src/
+bin.includes = META-INF/,\
+               .
diff --git a/eclipse-tools/cdgen/cdgen.graphics/browse.png b/eclipse-tools/cdgen/cdgen.graphics/browse.png
new file mode 100644
index 0000000..bcf72c1
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/browse.png
Binary files differ
diff --git a/eclipse-tools/cdgen/cdgen.graphics/close.png b/eclipse-tools/cdgen/cdgen.graphics/close.png
new file mode 100644
index 0000000..fba904f
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/close.png
Binary files differ
diff --git a/eclipse-tools/cdgen/cdgen.graphics/help.png b/eclipse-tools/cdgen/cdgen.graphics/help.png
new file mode 100644
index 0000000..8960bd6
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/help.png
Binary files differ
diff --git a/eclipse-tools/cdgen/cdgen.graphics/start.png b/eclipse-tools/cdgen/cdgen.graphics/start.png
new file mode 100644
index 0000000..371a38f
--- /dev/null
+++ b/eclipse-tools/cdgen/cdgen.graphics/start.png
Binary files differ
diff --git a/eclipse-tools/cdgen/models/democarMulticore/AMALTHEA_Democar_MappingExample.amxmi b/eclipse-tools/cdgen/models/democarMulticore/AMALTHEA_Democar_MappingExample.amxmi
new file mode 100644
index 0000000..869b8e0
--- /dev/null
+++ b/eclipse-tools/cdgen/models/democarMulticore/AMALTHEA_Democar_MappingExample.amxmi
@@ -0,0 +1,1118 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.9.5" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">

+  <commonElements>

+    <tags name="SwcEngineController" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcActuators" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcBrakeForceArbiter" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcABSCalculation" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcSensors" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcSensorPostprocessing" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcCylNumObserver" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcBrakeForceCalculation" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcEngineSensors" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcInjIgnActuation" tagType="SOFTWARE_COMPONENT" />

+    <coreClassifiers name="FPU" />

+  </commonElements>

+  <swModel>

+    <tasks name="Task_ESSP0" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="EcuVehicleSpeedSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorVoter?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP1" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="CylNumObserver?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="DecelerationSensorDiagnosis?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP2" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorDiagnosis?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorDiagnosis?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP3" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="MassAirFlowSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BaseFuelMass?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="TransientFuelMass?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="TotalFuelMass?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="InjectionTimeActuation?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP4" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="APedSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="APedVoter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="ThrottleController?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="ThrottleActuator?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP5" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintInclude] Requires Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="ThrottleSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuBrakePedalSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorVoter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="CheckPlausability?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeSafetyMonitor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeForceCalculation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeForceArbiter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="StopLightActuator?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuStopLightActuator?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP6" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintInclude] Requires Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="VehicleStateMonitor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuDecelerationSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="DecelerationSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="DecelerationSensorVoter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="ABSCalculation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeForceActuation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="CaliperPositionCalculation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeActuator?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuBrakeActuator?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP7" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeActuatorMonitor?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP8" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="DiagnosisArbiter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="IgnitionTiming?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="IgnitionTimeActuation?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP9" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="EcuWheelSpeedSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorVoter?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <runnables name="ABSCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="APedSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="APedSensor1Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="APedSensor2Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="APedVoter" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BaseFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeActuatorMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeForceActuation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeForceArbiter" tags="SwcBrakeForceArbiter?type=Tag" activations="Timer_20MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeForceCalculation" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakePedalSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="BrakePedalSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakePedalSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeSafetyMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="CaliperPositionCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="CheckPlausability" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="CylNumObserver" tags="SwcCylNumObserver?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CylinderNumber?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="DecelerationSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="DecelerationSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="DecelerationSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="DiagnosisArbiter" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="EcuBrakeActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="EcuBrakePedalSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="EcuDecelerationSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="EcuStopLightActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="EcuVehicleSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="EcuWheelSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="IgnitionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime3?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime4?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime5?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime6?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="IgnitionTime7?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime8?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="IgnitionTiming" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="InjectionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime3?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime4?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime5?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime6?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime7?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime8?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="MassAirFlowSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="MAFSensorVoltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="StopLightActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="ThrottleActuator" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="ThrottleController" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="ThrottleSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ThrottleSensor1Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ThrottleSensor2Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="TotalFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="TransientFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleStateMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="WheelSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="WheelSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="WheelSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <labels name="ABSActivation" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ABSMode" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="APedPosition1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="APedPosition2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="APedSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="APedSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="ArbitratedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ArbitratedDiagnosisRequest" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BaseFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakeApplication" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForce" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForceCurrent" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForceFeedback" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForceVoltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakeMonitorLevel" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPosition1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPosition2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPositionVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPositionVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakeSafetyLevel" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeSafetyState" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="CalculatedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="CaliperPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="CylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="DecelerationRate1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="DecelerationRate2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="DecelerationVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="DecelerationVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="DesiredThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="DesiredThrottlePositionVoltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime3" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime4" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime5" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime6" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime7" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime8" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime3" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime4" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime5" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime6" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime7" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime8" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="MAFRate" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="MAFSensorVoltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="MassAirFlow" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="MonitoredVehicleState" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="ThrottleSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ThrottleSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="TotalFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="TransientFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="TriggeredCylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeed1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeed2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="VotedAPedPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedBrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedDecelerationRate" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedVehicleSpeed" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedWheelSpeed" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="WheelSpeed1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="WheelSpeed2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="WheelSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="WheelSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <processPrototypes name="ESSP0" firstRunnable="EcuVehicleSpeedSensor?type=Runnable" lastRunnable="VehicleSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="EcuVehicleSpeedSensor?type=Runnable" />

+      <runnableCalls runnable="VehicleSpeedSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="VehicleSpeedSensorVoter?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP1" firstRunnable="CylNumObserver?type=Runnable" lastRunnable="DecelerationSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="CylNumObserver?type=Runnable" />

+      <runnableCalls runnable="DecelerationSensorDiagnosis?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP2" firstRunnable="WheelSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakePedalSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="WheelSpeedSensorDiagnosis?type=Runnable" />

+      <runnableCalls runnable="BrakePedalSensorDiagnosis?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP3" firstRunnable="MassAirFlowSensor?type=Runnable" lastRunnable="InjectionTimeActuation?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="MassAirFlowSensor?type=Runnable" />

+      <runnableCalls runnable="BaseFuelMass?type=Runnable" />

+      <runnableCalls runnable="TransientFuelMass?type=Runnable" />

+      <runnableCalls runnable="TotalFuelMass?type=Runnable" />

+      <runnableCalls runnable="InjectionTimeActuation?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP4" firstRunnable="APedSensor?type=Runnable" lastRunnable="ThrottleActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="APedSensor?type=Runnable" />

+      <runnableCalls runnable="APedVoter?type=Runnable" />

+      <runnableCalls runnable="ThrottleController?type=Runnable" />

+      <runnableCalls runnable="ThrottleActuator?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP5" firstRunnable="ThrottleSensor?type=Runnable" lastRunnable="EcuStopLightActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="ThrottleSensor?type=Runnable" />

+      <runnableCalls runnable="EcuBrakePedalSensor?type=Runnable" />

+      <runnableCalls runnable="BrakePedalSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="BrakePedalSensorVoter?type=Runnable" />

+      <runnableCalls runnable="CheckPlausability?type=Runnable" />

+      <runnableCalls runnable="BrakeSafetyMonitor?type=Runnable" />

+      <runnableCalls runnable="BrakeForceCalculation?type=Runnable" />

+      <runnableCalls runnable="BrakeForceArbiter?type=Runnable" />

+      <runnableCalls runnable="StopLightActuator?type=Runnable" />

+      <runnableCalls runnable="EcuStopLightActuator?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP6" firstRunnable="VehicleStateMonitor?type=Runnable" lastRunnable="EcuBrakeActuator?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="VehicleStateMonitor?type=Runnable" />

+      <runnableCalls runnable="EcuDecelerationSensor?type=Runnable" />

+      <runnableCalls runnable="DecelerationSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="DecelerationSensorVoter?type=Runnable" />

+      <runnableCalls runnable="ABSCalculation?type=Runnable" />

+      <runnableCalls runnable="BrakeForceActuation?type=Runnable" />

+      <runnableCalls runnable="CaliperPositionCalculation?type=Runnable" />

+      <runnableCalls runnable="BrakeActuator?type=Runnable" />

+      <runnableCalls runnable="EcuBrakeActuator?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP7" firstRunnable="VehicleSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakeActuatorMonitor?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />

+      <runnableCalls runnable="BrakeActuatorMonitor?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP8" firstRunnable="DiagnosisArbiter?type=Runnable" lastRunnable="IgnitionTimeActuation?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="DiagnosisArbiter?type=Runnable" />

+      <runnableCalls runnable="IgnitionTiming?type=Runnable" />

+      <runnableCalls runnable="IgnitionTimeActuation?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP9" firstRunnable="EcuWheelSpeedSensor?type=Runnable" lastRunnable="WheelSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="EcuWheelSpeedSensor?type=Runnable" />

+      <runnableCalls runnable="WheelSpeedSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="WheelSpeedSensorVoter?type=Runnable" />

+    </processPrototypes>

+    <activations xsi:type="am:PeriodicActivation" name="Timer_10MS">

+      <min value="10" unit="ms" />

+      <max value="10" unit="ms" />

+      <offset value="0" unit="ms" />

+    </activations>

+    <activations xsi:type="am:PeriodicActivation" name="Timer_20MS">

+      <min value="20" unit="ms" />

+      <max value="20" unit="ms" />

+      <offset value="0" unit="ms" />

+    </activations>

+    <activations xsi:type="am:PeriodicActivation" name="Timer_5MS">

+      <min value="5" unit="ms" />

+      <max value="5" unit="ms" />

+      <offset value="0" unit="ms" />

+    </activations>

+  </swModel>

+  <hwModel>

+    <definitions xsi:type="am:ProcessingUnitDefinition" name="Cortex-A9" puType="CPU" features="Instructions/IPC_1.0?type=HwFeature">

+      <customProperties key="EnEf-Volt_High">

+        <value xsi:type="am:DoubleObject" value="1.15" />

+      </customProperties>

+      <customProperties key="EnEf-Volt_Low">

+        <value xsi:type="am:DoubleObject" value="1.05" />

+      </customProperties>

+      <customProperties key="EnEf-Scale_High">

+        <value xsi:type="am:DoubleObject" value="1.0" />

+      </customProperties>

+      <customProperties key="EnEf-Scale_Low">

+        <value xsi:type="am:DoubleObject" value="0.5" />

+      </customProperties>

+    </definitions>

+    <featureCategories name="Instructions" featureType="performance">

+      <features name="IPC_1.0" value="1.0" />

+    </featureCategories>

+    <structures name="Homogeneous Example System" structureType="System">

+      <structures name="Freescale i.MX6 Board" structureType="ECU">

+        <structures name="i.MX 6 Series Processor" structureType="Microcontroller">

+          <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #1" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />

+          <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #2" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />

+          <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #3" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />

+          <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #4" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />

+          <modules xsi:type="am:ProcessingUnit" name="Cortex-A9 #5" frequencyDomain="792MHZ%2BQuartz__100.0?type=FrequencyDomain" definition="Cortex-A9?type=ProcessingUnitDefinition" />

+        </structures>

+      </structures>

+    </structures>

+    <domains xsi:type="am:FrequencyDomain" name="792MHZ Quartz" clockGating="false">

+      <defaultValue value="792.0" unit="MHz" />

+    </domains>

+    <domains xsi:type="am:FrequencyDomain" name="792MHZ+Quartz__100.0" clockGating="false">

+      <defaultValue value="792.0" unit="MHz" />

+    </domains>

+  </hwModel>

+  <osModel>

+    <operatingSystems name="OS">

+      <taskSchedulers name="SCHED_Cortex-A9 #1" />

+      <taskSchedulers name="SCHED_Cortex-A9 #2" />

+      <taskSchedulers name="SCHED_Cortex-A9 #3" />

+      <taskSchedulers name="SCHED_Cortex-A9 #4" />

+      <taskSchedulers name="SCHED_Cortex-A9 #5" />

+    </operatingSystems>

+  </osModel>

+  <stimuliModel>

+    <stimuli xsi:type="am:PeriodicStimulus" name="Timer_10MS">

+      <offset value="0" unit="ms" />

+      <recurrence value="10" unit="ms" />

+    </stimuli>

+    <stimuli xsi:type="am:PeriodicStimulus" name="Timer_20MS">

+      <offset value="0" unit="ms" />

+      <recurrence value="20" unit="ms" />

+    </stimuli>

+    <stimuli xsi:type="am:PeriodicStimulus" name="Timer_5MS">

+      <offset value="0" unit="ms" />

+      <recurrence value="5" unit="ms" />

+    </stimuli>

+  </stimuliModel>

+  <constraintsModel>

+    <runnableSequencingConstraints name="ABSCalculation--&gt;BrakeForceActuation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+      <runnableGroups runnables="BrakeForceActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceArbiter--&gt;ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="DecelerationSensorVoter--&gt;ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleSpeedSensorVoter--&gt;ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="WheelSpeedSensorVoter--&gt;ABSCalculation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="APedSensor--&gt;APedVoter" orderType="successor" processScope="ESSP4?type=ProcessPrototype">

+      <runnableGroups runnables="APedSensor?type=Runnable" />

+      <runnableGroups runnables="APedVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="APedVoter--&gt;ThrottleController" orderType="successor" processScope="ESSP4?type=ProcessPrototype">

+      <runnableGroups runnables="APedVoter?type=Runnable" />

+      <runnableGroups runnables="ThrottleController?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BaseFuelMass--&gt;IgnitionTiming" orderType="successor" processScope="ESSP8?type=ProcessPrototype">

+      <runnableGroups runnables="BaseFuelMass?type=Runnable" />

+      <runnableGroups runnables="IgnitionTiming?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="MassAirFlowSensor--&gt;BaseFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="MassAirFlowSensor?type=Runnable" />

+      <runnableGroups runnables="BaseFuelMass?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BaseFuelMass--&gt;TransientFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="BaseFuelMass?type=Runnable" />

+      <runnableGroups runnables="TransientFuelMass?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CaliperPositionCalculation--&gt;BrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />

+      <runnableGroups runnables="BrakeActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeActuator--&gt;EcuBrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeActuator?type=Runnable" />

+      <runnableGroups runnables="EcuBrakeActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceActuation--&gt;BrakeActuatorMonitor" orderType="successor" processScope="ESSP7?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceActuation?type=Runnable" />

+      <runnableGroups runnables="BrakeActuatorMonitor?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceActuation--&gt;CaliperPositionCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceActuation?type=Runnable" />

+      <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceCalculation--&gt;BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeSafetyMonitor--&gt;BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceArbiter--&gt;StopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+      <runnableGroups runnables="StopLightActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeSafetyMonitor--&gt;BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CheckPlausability--&gt;BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="CheckPlausability?type=Runnable" />

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleStateMonitor--&gt;BrakeForceCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuBrakePedalSensor--&gt;BrakePedalSensorDiagnosis" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />

+      <runnableGroups runnables="BrakePedalSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakePedalSensorTranslation--&gt;BrakePedalSensorVoter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuBrakePedalSensor--&gt;BrakePedalSensorTranslation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />

+      <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakePedalSensorVoter--&gt;CheckPlausability" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />

+      <runnableGroups runnables="CheckPlausability?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CheckPlausability--&gt;BrakeSafetyMonitor" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="CheckPlausability?type=Runnable" />

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleStateMonitor--&gt;BrakeSafetyMonitor" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CylNumObserver--&gt;IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">

+      <runnableGroups runnables="CylNumObserver?type=Runnable" />

+      <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CylNumObserver--&gt;InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="CylNumObserver?type=Runnable" />

+      <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuDecelerationSensor--&gt;DecelerationSensorDiagnosis" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />

+      <runnableGroups runnables="DecelerationSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="DecelerationSensorTranslation--&gt;DecelerationSensorVoter" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuDecelerationSensor--&gt;DecelerationSensorTranslation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />

+      <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="StopLightActuator--&gt;EcuStopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="StopLightActuator?type=Runnable" />

+      <runnableGroups runnables="EcuStopLightActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuVehicleSpeedSensor--&gt;VehicleSpeedSensorDiagnosis" orderType="successor" processScope="ESSP7?type=ProcessPrototype">

+      <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="VehicleSpeedSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuVehicleSpeedSensor--&gt;VehicleSpeedSensorTranslation" orderType="successor" processScope="ESSP0?type=ProcessPrototype">

+      <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuWheelSpeedSensor--&gt;WheelSpeedSensorDiagnosis" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="WheelSpeedSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuWheelSpeedSensor--&gt;WheelSpeedSensorTranslation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="IgnitionTiming--&gt;IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">

+      <runnableGroups runnables="IgnitionTiming?type=Runnable" />

+      <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="TotalFuelMass--&gt;InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="TotalFuelMass?type=Runnable" />

+      <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="ThrottleController--&gt;ThrottleActuator" orderType="successor" processScope="ESSP4?type=ProcessPrototype">

+      <runnableGroups runnables="ThrottleController?type=Runnable" />

+      <runnableGroups runnables="ThrottleActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="ThrottleSensor--&gt;ThrottleController" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="ThrottleSensor?type=Runnable" />

+      <runnableGroups runnables="ThrottleController?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="TransientFuelMass--&gt;TotalFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="TransientFuelMass?type=Runnable" />

+      <runnableGroups runnables="TotalFuelMass?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleSpeedSensorTranslation--&gt;VehicleSpeedSensorVoter" orderType="successor" processScope="ESSP0?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="WheelSpeedSensorTranslation--&gt;WheelSpeedSensorVoter" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+  </constraintsModel>

+  <mappingModel>

+    <schedulerAllocation scheduler="SCHED_Cortex-A9+%231?type=TaskScheduler" responsibility="Cortex-A9+%231?type=ProcessingUnit" />

+    <schedulerAllocation scheduler="SCHED_Cortex-A9+%232?type=TaskScheduler" responsibility="Cortex-A9+%232?type=ProcessingUnit" />

+    <schedulerAllocation scheduler="SCHED_Cortex-A9+%233?type=TaskScheduler" responsibility="Cortex-A9+%233?type=ProcessingUnit" />

+    <schedulerAllocation scheduler="SCHED_Cortex-A9+%234?type=TaskScheduler" responsibility="Cortex-A9+%234?type=ProcessingUnit" />

+    <schedulerAllocation scheduler="SCHED_Cortex-A9+%235?type=TaskScheduler" responsibility="Cortex-A9+%235?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP0?type=Task" scheduler="SCHED_Cortex-A9+%231?type=TaskScheduler" affinity="Cortex-A9+%231?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP1?type=Task" scheduler="SCHED_Cortex-A9+%231?type=TaskScheduler" affinity="Cortex-A9+%231?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP2?type=Task" scheduler="SCHED_Cortex-A9+%232?type=TaskScheduler" affinity="Cortex-A9+%232?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP3?type=Task" scheduler="SCHED_Cortex-A9+%232?type=TaskScheduler" affinity="Cortex-A9+%232?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP4?type=Task" scheduler="SCHED_Cortex-A9+%233?type=TaskScheduler" affinity="Cortex-A9+%233?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP5?type=Task" scheduler="SCHED_Cortex-A9+%234?type=TaskScheduler" affinity="Cortex-A9+%234?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP6?type=Task" scheduler="SCHED_Cortex-A9+%233?type=TaskScheduler" affinity="Cortex-A9+%233?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP7?type=Task" scheduler="SCHED_Cortex-A9+%234?type=TaskScheduler" affinity="Cortex-A9+%234?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP8?type=Task" scheduler="SCHED_Cortex-A9+%235?type=TaskScheduler" affinity="Cortex-A9+%235?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP9?type=Task" scheduler="SCHED_Cortex-A9+%235?type=TaskScheduler" affinity="Cortex-A9+%235?type=ProcessingUnit" />

+  </mappingModel>

+</am:Amalthea>

diff --git a/eclipse-tools/cdgen/models/democarMulticoreRaspberryPi/AMALTHEA_Democar_Multi_RASPBERRYPI.amxmi b/eclipse-tools/cdgen/models/democarMulticoreRaspberryPi/AMALTHEA_Democar_Multi_RASPBERRYPI.amxmi
new file mode 100644
index 0000000..1d1d16e
--- /dev/null
+++ b/eclipse-tools/cdgen/models/democarMulticoreRaspberryPi/AMALTHEA_Democar_Multi_RASPBERRYPI.amxmi
@@ -0,0 +1,1106 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<am:Amalthea xmlns:am="http://app4mc.eclipse.org/amalthea/0.9.5" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmi:version="2.0">

+  <commonElements>

+    <tags name="SwcEngineController" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcActuators" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcBrakeForceArbiter" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcABSCalculation" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcSensors" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcSensorPostprocessing" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcCylNumObserver" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcBrakeForceCalculation" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcEngineSensors" tagType="SOFTWARE_COMPONENT" />

+    <tags name="SwcInjIgnActuation" tagType="SOFTWARE_COMPONENT" />

+    <coreClassifiers name="FPU" />

+  </commonElements>

+  <swModel>

+    <tasks name="Task_ESSP0" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="EcuVehicleSpeedSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorVoter?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP1" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="CylNumObserver?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="DecelerationSensorDiagnosis?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP2" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorDiagnosis?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorDiagnosis?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP3" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="MassAirFlowSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BaseFuelMass?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="TransientFuelMass?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="TotalFuelMass?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="InjectionTimeActuation?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP4" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintExclude] Exclude Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="APedSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="APedVoter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="ThrottleController?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="ThrottleActuator?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP5" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintInclude] Requires Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="ThrottleSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuBrakePedalSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakePedalSensorVoter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="CheckPlausability?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeSafetyMonitor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeForceCalculation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeForceArbiter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="StopLightActuator?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuStopLightActuator?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP6" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <customProperties key="[ConstraintInclude] Requires Targets with FPU">

+        <value xsi:type="am:ReferenceObject" value="FPU?type=CoreClassifier" />

+      </customProperties>

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="VehicleStateMonitor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuDecelerationSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="DecelerationSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="DecelerationSensorVoter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="ABSCalculation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeForceActuation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="CaliperPositionCalculation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeActuator?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="EcuBrakeActuator?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP7" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="BrakeActuatorMonitor?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP8" stimuli="Timer_10MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="DiagnosisArbiter?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="IgnitionTiming?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="IgnitionTimeActuation?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <tasks name="Task_ESSP9" stimuli="Timer_5MS?type=PeriodicStimulus" multipleTaskActivationLimit="0">

+      <callGraph>

+        <items xsi:type="am:Group" name="CallSequence" ordered="true">

+          <items xsi:type="am:RunnableCall" runnable="EcuWheelSpeedSensor?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorTranslation?type=Runnable" />

+          <items xsi:type="am:RunnableCall" runnable="WheelSpeedSensorVoter?type=Runnable" />

+        </items>

+      </callGraph>

+    </tasks>

+    <runnables name="ABSCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="APedSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="APedSensor1Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="APedSensor2Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="APedVoter" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="APedPosition1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="APedPosition2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BaseFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeActuatorMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeForceActuation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ABSActivation?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ABSMode?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeForce?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeForceArbiter" tags="SwcBrakeForceArbiter?type=Tag" activations="Timer_20MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeForceCalculation" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="CalculatedBrakeForce?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakePedalSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="BrakePedalSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakePedalSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="BrakeSafetyMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceFeedback?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeMonitorLevel?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyLevel?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeSafetyState?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="CaliperPositionCalculation" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakeForceCurrent?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="CaliperPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="CheckPlausability" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VotedBrakePedalPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="CylNumObserver" tags="SwcCylNumObserver?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="CylinderNumber?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="DecelerationSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="DecelerationSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="DecelerationSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DecelerationRate1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationRate2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedDecelerationRate?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="DiagnosisArbiter" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ArbitratedDiagnosisRequest?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="EcuBrakeActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakeForceVoltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="EcuBrakePedalSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="BrakePedalPositionVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="EcuDecelerationSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="144000" upperBound="176000" average="160000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="DecelerationVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="EcuStopLightActuator" tags="SwcActuators?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="EcuVehicleSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="EcuWheelSpeedSensor" tags="SwcSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="IgnitionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime3?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime4?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime5?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime6?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="IgnitionTime7?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="IgnitionTime8?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="IgnitionTiming" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="MAFRate?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="IgnitionTime?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="InjectionTimeActuation" tags="SwcInjIgnActuation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="TriggeredCylinderNumber?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime3?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime4?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime5?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime6?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime7?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="InjectionTime8?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="MassAirFlowSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="MAFSensorVoltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="MassAirFlow?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="StopLightActuator" tags="SwcABSCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ArbitratedBrakeForce?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="BrakeApplication?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="ThrottleActuator" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DesiredThrottlePositionVoltage?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="ThrottleController" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VotedAPedPosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="DesiredThrottlePosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="ThrottleSensor" tags="SwcEngineSensors?type=Tag" activations="Timer_5MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="ThrottleSensor1Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="ThrottleSensor2Voltage?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="ThrottlePosition?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="TotalFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="TotalFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="TransientFuelMass" tags="SwcEngineController?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="BaseFuelMassPerStroke?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="TransientFuelMassPerStroke?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="VehicleSpeed2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedVehicleSpeed?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="VehicleStateMonitor" tags="SwcBrakeForceCalculation?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="MonitoredVehicleState?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="WheelSpeedSensorDiagnosis" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+      </callGraph>

+    </runnables>

+    <runnables name="WheelSpeedSensorTranslation" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeedVoltage2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="write" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <runnables name="WheelSpeedSensorVoter" tags="SwcSensorPostprocessing?type=Tag" activations="Timer_10MS?type=PeriodicActivation" callback="false" service="false">

+      <callGraph>

+        <items xsi:type="am:LabelAccess" data="WheelSpeed1?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:LabelAccess" data="WheelSpeed2?type=Label" access="read" dataStability="inherited" />

+        <items xsi:type="am:Ticks">

+          <default xsi:type="am:DiscreteValueWeibullEstimatorsDistribution" lowerBound="72000" upperBound="88000" average="80000.0" pRemainPromille="0.5" />

+        </items>

+        <items xsi:type="am:LabelAccess" data="VotedWheelSpeed?type=Label" access="write" dataStability="inherited" />

+      </callGraph>

+    </runnables>

+    <labels name="ABSActivation" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ABSMode" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="APedPosition1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="APedPosition2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="APedSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="APedSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="ArbitratedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ArbitratedDiagnosisRequest" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BaseFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakeApplication" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForce" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForceCurrent" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForceFeedback" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeForceVoltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakeMonitorLevel" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPosition1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPosition2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPositionVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakePedalPositionVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="BrakeSafetyLevel" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="BrakeSafetyState" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="CalculatedBrakeForce" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="CaliperPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="CylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="DecelerationRate1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="DecelerationRate2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="DecelerationVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="DecelerationVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="DesiredThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="DesiredThrottlePositionVoltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime3" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime4" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime5" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime6" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime7" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="IgnitionTime8" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime3" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime4" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime5" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime6" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime7" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="InjectionTime8" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="MAFRate" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="MAFSensorVoltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="MassAirFlow" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="MonitoredVehicleState" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ThrottlePosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="ThrottleSensor1Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="ThrottleSensor2Voltage" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="TotalFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="TransientFuelMassPerStroke" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="TriggeredCylinderNumber" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeed1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeed2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="VehicleSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="VotedAPedPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedBrakePedalPosition" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedDecelerationRate" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedVehicleSpeed" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="VotedWheelSpeed" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="WheelSpeed1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="WheelSpeed2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="8" unit="bit" />

+    </labels>

+    <labels name="WheelSpeedVoltage1" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <labels name="WheelSpeedVoltage2" constant="false" bVolatile="false" dataStability="noProtection">

+      <size value="16" unit="bit" />

+    </labels>

+    <processPrototypes name="ESSP0" firstRunnable="EcuVehicleSpeedSensor?type=Runnable" lastRunnable="VehicleSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="EcuVehicleSpeedSensor?type=Runnable" />

+      <runnableCalls runnable="VehicleSpeedSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="VehicleSpeedSensorVoter?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP1" firstRunnable="CylNumObserver?type=Runnable" lastRunnable="DecelerationSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="CylNumObserver?type=Runnable" />

+      <runnableCalls runnable="DecelerationSensorDiagnosis?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP2" firstRunnable="WheelSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakePedalSensorDiagnosis?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="WheelSpeedSensorDiagnosis?type=Runnable" />

+      <runnableCalls runnable="BrakePedalSensorDiagnosis?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP3" firstRunnable="MassAirFlowSensor?type=Runnable" lastRunnable="InjectionTimeActuation?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="MassAirFlowSensor?type=Runnable" />

+      <runnableCalls runnable="BaseFuelMass?type=Runnable" />

+      <runnableCalls runnable="TransientFuelMass?type=Runnable" />

+      <runnableCalls runnable="TotalFuelMass?type=Runnable" />

+      <runnableCalls runnable="InjectionTimeActuation?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP4" firstRunnable="APedSensor?type=Runnable" lastRunnable="ThrottleActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="APedSensor?type=Runnable" />

+      <runnableCalls runnable="APedVoter?type=Runnable" />

+      <runnableCalls runnable="ThrottleController?type=Runnable" />

+      <runnableCalls runnable="ThrottleActuator?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP5" firstRunnable="ThrottleSensor?type=Runnable" lastRunnable="EcuStopLightActuator?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="ThrottleSensor?type=Runnable" />

+      <runnableCalls runnable="EcuBrakePedalSensor?type=Runnable" />

+      <runnableCalls runnable="BrakePedalSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="BrakePedalSensorVoter?type=Runnable" />

+      <runnableCalls runnable="CheckPlausability?type=Runnable" />

+      <runnableCalls runnable="BrakeSafetyMonitor?type=Runnable" />

+      <runnableCalls runnable="BrakeForceCalculation?type=Runnable" />

+      <runnableCalls runnable="BrakeForceArbiter?type=Runnable" />

+      <runnableCalls runnable="StopLightActuator?type=Runnable" />

+      <runnableCalls runnable="EcuStopLightActuator?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP6" firstRunnable="VehicleStateMonitor?type=Runnable" lastRunnable="EcuBrakeActuator?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="VehicleStateMonitor?type=Runnable" />

+      <runnableCalls runnable="EcuDecelerationSensor?type=Runnable" />

+      <runnableCalls runnable="DecelerationSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="DecelerationSensorVoter?type=Runnable" />

+      <runnableCalls runnable="ABSCalculation?type=Runnable" />

+      <runnableCalls runnable="BrakeForceActuation?type=Runnable" />

+      <runnableCalls runnable="CaliperPositionCalculation?type=Runnable" />

+      <runnableCalls runnable="BrakeActuator?type=Runnable" />

+      <runnableCalls runnable="EcuBrakeActuator?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP7" firstRunnable="VehicleSpeedSensorDiagnosis?type=Runnable" lastRunnable="BrakeActuatorMonitor?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="VehicleSpeedSensorDiagnosis?type=Runnable" />

+      <runnableCalls runnable="BrakeActuatorMonitor?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP8" firstRunnable="DiagnosisArbiter?type=Runnable" lastRunnable="IgnitionTimeActuation?type=Runnable" activation="Timer_10MS?type=PeriodicActivation">

+      <runnableCalls runnable="DiagnosisArbiter?type=Runnable" />

+      <runnableCalls runnable="IgnitionTiming?type=Runnable" />

+      <runnableCalls runnable="IgnitionTimeActuation?type=Runnable" />

+    </processPrototypes>

+    <processPrototypes name="ESSP9" firstRunnable="EcuWheelSpeedSensor?type=Runnable" lastRunnable="WheelSpeedSensorVoter?type=Runnable" activation="Timer_5MS?type=PeriodicActivation">

+      <runnableCalls runnable="EcuWheelSpeedSensor?type=Runnable" />

+      <runnableCalls runnable="WheelSpeedSensorTranslation?type=Runnable" />

+      <runnableCalls runnable="WheelSpeedSensorVoter?type=Runnable" />

+    </processPrototypes>

+    <activations xsi:type="am:PeriodicActivation" name="Timer_10MS">

+      <min value="10" unit="ms" />

+      <max value="10" unit="ms" />

+      <offset value="0" unit="ms" />

+    </activations>

+    <activations xsi:type="am:PeriodicActivation" name="Timer_20MS">

+      <min value="20" unit="ms" />

+      <max value="20" unit="ms" />

+      <offset value="0" unit="ms" />

+    </activations>

+    <activations xsi:type="am:PeriodicActivation" name="Timer_5MS">

+      <min value="5" unit="ms" />

+      <max value="5" unit="ms" />

+      <offset value="0" unit="ms" />

+    </activations>

+  </swModel>

+  <hwModel>

+    <definitions xsi:type="am:ProcessingUnitDefinition" name="ARM Cortex-A53" puType="CPU" features="Instructions/IPC_1.0?type=HwFeature" />

+    <featureCategories name="Instructions" featureType="performance">

+      <features name="IPC_1.0" value="1.0" />

+    </featureCategories>

+    <structures name="Homogeneous Example System" structureType="System">

+      <structures name="RPI3" structureType="ECU">

+        <structures name="ARM Cortex-A53" structureType="Microcontroller">

+          <modules xsi:type="am:ProcessingUnit" name="RPI_0" frequencyDomain="ClockARM0?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />

+          <modules xsi:type="am:ProcessingUnit" name="RPI_1" frequencyDomain="ClockARM1?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />

+          <modules xsi:type="am:ProcessingUnit" name="RPI_2" frequencyDomain="ClockARM2?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />

+          <modules xsi:type="am:ProcessingUnit" name="RPI_3" frequencyDomain="ClockARM3?type=FrequencyDomain" definition="ARM+Cortex-A53?type=ProcessingUnitDefinition" />

+        </structures>

+      </structures>

+    </structures>

+    <domains xsi:type="am:FrequencyDomain" name="ClockARM2" clockGating="false">

+      <defaultValue value="1.2" unit="GHz" />

+    </domains>

+    <domains xsi:type="am:FrequencyDomain" name="ClockARM3" clockGating="false">

+      <defaultValue value="1.2" unit="GHz" />

+    </domains>

+    <domains xsi:type="am:FrequencyDomain" name="ClockARM0" clockGating="false">

+      <defaultValue value="1.2" unit="GHz" />

+    </domains>

+    <domains xsi:type="am:FrequencyDomain" name="ClockARM1" clockGating="false">

+      <defaultValue value="1.2" unit="GHz" />

+    </domains>

+  </hwModel>

+  <osModel>

+    <operatingSystems name="OS">

+      <taskSchedulers name="SCHED_RPI_0 #1" />

+      <taskSchedulers name="SCHED_RPI_1 #2" />

+      <taskSchedulers name="SCHED_RPI_2 #3" />

+      <taskSchedulers name="SCHED_RPI_3 #4" />

+    </operatingSystems>

+  </osModel>

+  <stimuliModel>

+    <stimuli xsi:type="am:PeriodicStimulus" name="Timer_10MS">

+      <offset value="0" unit="ms" />

+      <recurrence value="10" unit="ms" />

+    </stimuli>

+    <stimuli xsi:type="am:PeriodicStimulus" name="Timer_20MS">

+      <offset value="0" unit="ms" />

+      <recurrence value="20" unit="ms" />

+    </stimuli>

+    <stimuli xsi:type="am:PeriodicStimulus" name="Timer_5MS">

+      <offset value="0" unit="ms" />

+      <recurrence value="5" unit="ms" />

+    </stimuli>

+  </stimuliModel>

+  <constraintsModel>

+    <runnableSequencingConstraints name="ABSCalculation--&gt;BrakeForceActuation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+      <runnableGroups runnables="BrakeForceActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceArbiter--&gt;ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="DecelerationSensorVoter--&gt;ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleSpeedSensorVoter--&gt;ABSCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="WheelSpeedSensorVoter--&gt;ABSCalculation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />

+      <runnableGroups runnables="ABSCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="APedSensor--&gt;APedVoter" orderType="successor" processScope="ESSP4?type=ProcessPrototype">

+      <runnableGroups runnables="APedSensor?type=Runnable" />

+      <runnableGroups runnables="APedVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="APedVoter--&gt;ThrottleController" orderType="successor" processScope="ESSP4?type=ProcessPrototype">

+      <runnableGroups runnables="APedVoter?type=Runnable" />

+      <runnableGroups runnables="ThrottleController?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BaseFuelMass--&gt;IgnitionTiming" orderType="successor" processScope="ESSP8?type=ProcessPrototype">

+      <runnableGroups runnables="BaseFuelMass?type=Runnable" />

+      <runnableGroups runnables="IgnitionTiming?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="MassAirFlowSensor--&gt;BaseFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="MassAirFlowSensor?type=Runnable" />

+      <runnableGroups runnables="BaseFuelMass?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BaseFuelMass--&gt;TransientFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="BaseFuelMass?type=Runnable" />

+      <runnableGroups runnables="TransientFuelMass?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CaliperPositionCalculation--&gt;BrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />

+      <runnableGroups runnables="BrakeActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeActuator--&gt;EcuBrakeActuator" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeActuator?type=Runnable" />

+      <runnableGroups runnables="EcuBrakeActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceActuation--&gt;BrakeActuatorMonitor" orderType="successor" processScope="ESSP7?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceActuation?type=Runnable" />

+      <runnableGroups runnables="BrakeActuatorMonitor?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceActuation--&gt;CaliperPositionCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceActuation?type=Runnable" />

+      <runnableGroups runnables="CaliperPositionCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceCalculation--&gt;BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeSafetyMonitor--&gt;BrakeForceArbiter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeForceArbiter--&gt;StopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeForceArbiter?type=Runnable" />

+      <runnableGroups runnables="StopLightActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakeSafetyMonitor--&gt;BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CheckPlausability--&gt;BrakeForceCalculation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="CheckPlausability?type=Runnable" />

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleStateMonitor--&gt;BrakeForceCalculation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeForceCalculation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuBrakePedalSensor--&gt;BrakePedalSensorDiagnosis" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />

+      <runnableGroups runnables="BrakePedalSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakePedalSensorTranslation--&gt;BrakePedalSensorVoter" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuBrakePedalSensor--&gt;BrakePedalSensorTranslation" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="EcuBrakePedalSensor?type=Runnable" />

+      <runnableGroups runnables="BrakePedalSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="BrakePedalSensorVoter--&gt;CheckPlausability" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="BrakePedalSensorVoter?type=Runnable" />

+      <runnableGroups runnables="CheckPlausability?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CheckPlausability--&gt;BrakeSafetyMonitor" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="CheckPlausability?type=Runnable" />

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleStateMonitor--&gt;BrakeSafetyMonitor" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleStateMonitor?type=Runnable" />

+      <runnableGroups runnables="BrakeSafetyMonitor?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CylNumObserver--&gt;IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">

+      <runnableGroups runnables="CylNumObserver?type=Runnable" />

+      <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="CylNumObserver--&gt;InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="CylNumObserver?type=Runnable" />

+      <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuDecelerationSensor--&gt;DecelerationSensorDiagnosis" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />

+      <runnableGroups runnables="DecelerationSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="DecelerationSensorTranslation--&gt;DecelerationSensorVoter" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="DecelerationSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuDecelerationSensor--&gt;DecelerationSensorTranslation" orderType="successor" processScope="ESSP6?type=ProcessPrototype">

+      <runnableGroups runnables="EcuDecelerationSensor?type=Runnable" />

+      <runnableGroups runnables="DecelerationSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="StopLightActuator--&gt;EcuStopLightActuator" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="StopLightActuator?type=Runnable" />

+      <runnableGroups runnables="EcuStopLightActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuVehicleSpeedSensor--&gt;VehicleSpeedSensorDiagnosis" orderType="successor" processScope="ESSP7?type=ProcessPrototype">

+      <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="VehicleSpeedSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuVehicleSpeedSensor--&gt;VehicleSpeedSensorTranslation" orderType="successor" processScope="ESSP0?type=ProcessPrototype">

+      <runnableGroups runnables="EcuVehicleSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuWheelSpeedSensor--&gt;WheelSpeedSensorDiagnosis" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="WheelSpeedSensorDiagnosis?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="EcuWheelSpeedSensor--&gt;WheelSpeedSensorTranslation" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="EcuWheelSpeedSensor?type=Runnable" />

+      <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="IgnitionTiming--&gt;IgnitionTimeActuation" orderType="successor" processScope="ESSP8?type=ProcessPrototype">

+      <runnableGroups runnables="IgnitionTiming?type=Runnable" />

+      <runnableGroups runnables="IgnitionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="TotalFuelMass--&gt;InjectionTimeActuation" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="TotalFuelMass?type=Runnable" />

+      <runnableGroups runnables="InjectionTimeActuation?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="ThrottleController--&gt;ThrottleActuator" orderType="successor" processScope="ESSP4?type=ProcessPrototype">

+      <runnableGroups runnables="ThrottleController?type=Runnable" />

+      <runnableGroups runnables="ThrottleActuator?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="ThrottleSensor--&gt;ThrottleController" orderType="successor" processScope="ESSP5?type=ProcessPrototype">

+      <runnableGroups runnables="ThrottleSensor?type=Runnable" />

+      <runnableGroups runnables="ThrottleController?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="TransientFuelMass--&gt;TotalFuelMass" orderType="successor" processScope="ESSP3?type=ProcessPrototype">

+      <runnableGroups runnables="TransientFuelMass?type=Runnable" />

+      <runnableGroups runnables="TotalFuelMass?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="VehicleSpeedSensorTranslation--&gt;VehicleSpeedSensorVoter" orderType="successor" processScope="ESSP0?type=ProcessPrototype">

+      <runnableGroups runnables="VehicleSpeedSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="VehicleSpeedSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+    <runnableSequencingConstraints name="WheelSpeedSensorTranslation--&gt;WheelSpeedSensorVoter" orderType="successor" processScope="ESSP9?type=ProcessPrototype">

+      <runnableGroups runnables="WheelSpeedSensorTranslation?type=Runnable" />

+      <runnableGroups runnables="WheelSpeedSensorVoter?type=Runnable" />

+    </runnableSequencingConstraints>

+  </constraintsModel>

+  <mappingModel>

+    <schedulerAllocation scheduler="SCHED_RPI_0+%231?type=TaskScheduler" responsibility="RPI_0?type=ProcessingUnit" />

+    <schedulerAllocation scheduler="SCHED_RPI_1+%232?type=TaskScheduler" responsibility="RPI_1?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP0?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP1?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP2?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP3?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP4?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP5?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP6?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP7?type=Task" scheduler="SCHED_RPI_1+%232?type=TaskScheduler" affinity="RPI_1?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP8?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />

+    <taskAllocation task="Task_ESSP9?type=Task" scheduler="SCHED_RPI_0+%231?type=TaskScheduler" affinity="RPI_0?type=ProcessingUnit" />

+  </mappingModel>

+</am:Amalthea>

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/ArmCodeFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/ArmCodeFileCreation.java
new file mode 100644
index 0000000..b689ea5
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/ArmCodeFileCreation.java
@@ -0,0 +1,347 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.HashMap;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.MappingModel;

+import org.eclipse.app4mc.amalthea.model.Runnable;

+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.cdgen.utils.fileUtil;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * Implementation of Runnable Definition with Runnable specific delay.

+ *

+ */

+

+public class ArmCodeFileCreation {

+	final private Amalthea model;

+

+	/**

+	 * Constructor ArmCodeFileCreation.

+	 *

+	 * @param Model

+	 * @param srcPath

+	 * @param hdrPath

+	 * @param configFlag

+	 * @throws IOException

+	 */

+	public ArmCodeFileCreation(final Amalthea Model, final String srcPath, final String hdrPath, final int configFlag)

+			throws IOException {

+		this.model = Model;

+		final EList<Task> tasks = this.model.getSwModel().getTasks();

+		final EList<Runnable> runnables = this.model.getSwModel().getRunnables();

+		System.out.println("Runnable File Creation Begins");

+		fileCreate(this.model, srcPath, hdrPath, configFlag, tasks, runnables);

+		System.out.println("Runnable File Creation Ends");

+

+	}

+

+	/**

+	 * file creation and specification for armcode file

+	 *

+	 * @param model

+	 * @param srcPath

+	 * @param hdrPath

+	 * @param configFlag

+	 * @param tasks

+	 * @param runnables

+	 * @throws IOException

+	 */

+	private static void fileCreate(final Amalthea model, final String srcPath, final String hdrPath,

+			final int configFlag, final EList<Task> tasks, final EList<Runnable> runnables) throws IOException {

+		final String fname = srcPath + File.separator + "armcode.c";

+		final File f2 = new File(srcPath);

+		final File f1 = new File(fname);

+		f2.mkdirs();

+		try {

+			f1.createNewFile();

+		}

+		catch (final IOException e) {

+			e.printStackTrace();

+		}

+

+		final File fn = f1;

+		@SuppressWarnings("resource")

+		final FileWriter fw = new FileWriter(fn, true);

+		try {

+			if (0x3110 == (configFlag & 0xFFF0)) {

+				fileUtil.fileMainHeader(f1);

+				runFileHeader(f1);

+				headerIncludesArmCode(f1);

+				nsleep(f1);

+				zynqmain(model, f1);

+			}

+			else {

+				fileUtil.fileMainHeader(f1);

+				runFileHeader(f1);

+				headerIncludesArmCode(f1);

+				nsleep(f1);

+				zynqmain(model, f1);

+			}

+		}

+		finally {

+			try {

+				fw.close();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+		}

+	}

+

+	/**

+	 * ArmCode Header Title note.

+	 *

+	 * @param file

+	 */

+	private static void runFileHeader(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("*Title 		:   ArmCode Header\n");

+			fw.write("*Description	:	Header file for Deploy/Offloading of the task to EPI\n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************/\n\n\n");

+

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * nsleep - function call structure.

+	 *

+	 * @param file

+	 */

+	private static void nsleep(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("int nsleep(long miliseconds){\n");

+			fw.write("\tstruct timespec req, rem;\n");

+			fw.write("\tif(miliseconds > 999){\n");

+			fw.write("\t\treq.tv_sec = (int)(miliseconds / 1000);\n");

+			fw.write("\t\treq.tv_nsec = (miliseconds - ((long)req.tv_sec * 1000)) * 1000000;\n");

+			fw.write("\t} else {\n");

+			fw.write("\t\treq.tv_sec = 0;\n");

+			fw.write("\t\treq.tv_nsec = miliseconds * 1000000;\n");

+			fw.write("\t}\n");

+			fw.write("\treturn nanosleep(&req , &rem);\n");

+			fw.write("}\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * main function for the zynq in which we deploy the

+	 *

+	 * @param model

+	 * @param file

+	 */

+	private static void zynqmain(final Amalthea model, final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			final MappingModel mappingModel = model.getMappingModel();

+			if (mappingModel != null) {

+				final EList<SchedulerAllocation> processingUnits = model.getMappingModel().getSchedulerAllocation();

+				final ArrayList<SchedulerAllocation> localPU = new ArrayList<SchedulerAllocation>();

+				localPU.addAll(processingUnits);

+				final HashMap<SchedulerAllocation, Long> CoreMap = new HashMap<SchedulerAllocation, Long>();

+				long count = 0;

+				for (final SchedulerAllocation pu : localPU) {

+					CoreMap.put(pu, count);

+					count++;

+				}

+				fw.write("int main(){\n");

+				fw.write("\tunsigned int shared_label_to_read;\n");

+				fw.write("\tunsigned   row_loop,col_loop;\n");

+				fw.write("\te_platform_t epiphany;\n");

+				fw.write("\te_epiphany_t dev;\n");

+				fw.write("\tint loop;\n");

+				fw.write("\tint addr;\n");

+				fw.write("\te_mem_t emem;\n");

+				fw.write("\te_init(NULL);\n");

+				fw.write("\te_reset_system();\n");

+				fw.write("\te_get_platform_info(&epiphany);\n");

+				int coreGroup = 0;

+				if (processingUnits.size() == 1) {

+					coreGroup = 0;

+				}

+				else if (processingUnits.size() > 1 && processingUnits.size() < 5) {

+					coreGroup = 2;

+				}

+				else if (processingUnits.size() > 4 && processingUnits.size() < 10) {

+					coreGroup = 3;

+				}

+				else if (processingUnits.size() > 9 && processingUnits.size() < 17) {

+					coreGroup = 4;

+				}

+				fw.write("\te_open(&dev,0,0," + coreGroup + "," + coreGroup + ");\n");

+				/* Core 1 */

+				// 00

+				/* Core 2 */

+				// 00 10

+				// 01 11

+				/* Core 3 */

+				// 00 10 20

+				// 01 11 21

+				// 02 12 22

+				/* Core 4 */

+				// 00 10 20 30

+				// 01 11 21 31

+				// 02 12 22 32

+				// 03 13 23 33

+

+				fw.write("\te_reset_group(&dev);\n");

+				int k = 0;

+				final ArrayList<String> result = new ArrayList<String>();

+				for (int i = 0; i < localPU.size(); i++) {

+					for (int j = 0; j < localPU.size(); j++) {

+						if (k < localPU.size()) {

+							fw.write("\te_return_stat_t\tresult" + k + ";\n");

+							k++;

+						}

+

+					}

+				}

+				int k3 = 0;

+				for (int rowCoreGroup = 0; rowCoreGroup < localPU.size(); rowCoreGroup++) {

+					for (int columnCoreGroup = 0; columnCoreGroup < localPU.size(); columnCoreGroup++) {

+						if (k3 < localPU.size()) {

+							fw.write("\tunsigned int message" + k3 + "[9];\n");

+							k3++;

+						}

+					}

+				}

+				int coreIndex = 0;

+				for (int rowCoreGroup = 0; rowCoreGroup < coreGroup; rowCoreGroup++) {

+					for (int columnCoreGroup = 0; columnCoreGroup < coreGroup; columnCoreGroup++) {

+						if (coreIndex < localPU.size()) {

+							fw.write("\tresult" + coreIndex + "=  e_load(\"main" + coreIndex + ".elf\",&dev,"

+									+ rowCoreGroup + "," + columnCoreGroup + ",E_FALSE);\n");

+							result.add("result" + coreIndex + "!=E_OK");

+							coreIndex++;

+						}

+					}

+				}

+				String resultFinal = "";

+				for (int k2 = 0; k2 < result.size(); k2++) {

+					// System.out.println("Size ==> "+result.size());

+					resultFinal = resultFinal + (result.get(k2) + "||");

+					if (k2 == (result.size() - 2)) {

+						k2++;

+						resultFinal = resultFinal + result.get(k2);

+						break;

+					}

+				}

+				coreIndex = 0;

+				for (int rowCoreGroup = 0; rowCoreGroup < localPU.size() & rowCoreGroup < 4; rowCoreGroup++) {

+					for (int columnCore = 0; columnCore < localPU.size() & columnCore < 4; columnCore++) {

+						if (coreIndex < localPU.size()) {

+							if (coreIndex == 0) {

+								fw.write("\tif (result" + coreIndex + "!=E_OK){\n");

+							}

+							else {

+								fw.write("\telse if (result" + coreIndex + "!=E_OK){\n");

+							}

+							fw.write("\t\tfprintf(stderr,\"Error Loading the Epiphany Application " + coreIndex

+									+ " %i\\n\", result" + coreIndex + ");");

+							fw.write("\n\t}\n");

+							coreIndex++;

+						}

+					}

+				}

+				fw.write("\te_start_group(&dev);\n");

+				fw.write("\tfprintf(stderr,\"RMS Multicore on FreeRTOS started \\n\");\n");

+				fw.write("\taddr = cnt_address;\n");

+				fw.write("\tint pollLoopCounter = 0;\n");

+				fw.write("\tint taskMessage;\n");

+				fw.write("\tint prevtaskMessage;\n");

+				fw.write("\tint prevpollLoopCounter = 0;\n");

+				fw.write("\tfor (pollLoopCounter=0;pollLoopCounter<=40;pollLoopCounter++){\n");

+				coreIndex = 0;

+				for (int rowCoreGroup = 0; rowCoreGroup < coreGroup; rowCoreGroup++) {

+					for (int columnCoreGroup = 0; columnCoreGroup < coreGroup; columnCoreGroup++) {

+						if (coreIndex < localPU.size()) {

+							fw.write("\t\te_read(&dev," + rowCoreGroup + "," + columnCoreGroup + ",addr, &message"

+									+ coreIndex + ", sizeof(message" + coreIndex + "));\n");

+							fw.write("\t\tfprintf(stderr, \"tick1 %3d||\",message" + coreIndex + "[8]+1);\n");

+							fw.write("\t\tfprintf(stderr,\"task holding core" + coreIndex + " %2u||\", message"

+									+ coreIndex + "[6]);\n");

+							coreIndex++;

+						}

+					}

+				}

+				fw.write("\t\tfprintf(stderr,\"\\n\");\n");

+				fw.write("\t\tusleep(READ_PRECISION_US);\n");

+				fw.write("\t}\n");

+				fw.write("\tfprintf(stderr,\"----------------------------------------------\\n\");\n");

+				fw.write("\te_close(&dev);\n");

+				fw.write("\te_finalize();\n");

+				fw.write("\tfprintf(stderr,\"RMS Multicore on FreeRTOS Complete \\n \");\n");

+				fw.write("\treturn 0;\n");

+				fw.write("}\n");

+				fw.close();

+			}

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * header inclusion for armCode file

+	 *

+	 * @param file

+	 */

+	private static void headerIncludesArmCode(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdio.h>\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <string.h>\n");

+			fw.write("#include <unistd.h>\n");

+			fw.write("#include <e-hal.h>\n");

+			fw.write("#include <time.h>\n\n");

+			fw.write("/* Scheduler includes. */\n");

+			fw.write("#include \"debugFlags.h\"\n");

+			fw.write("#define READ_PRECISION_US 1000\n\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+

+	}

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/FreeRTOSConfigFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/FreeRTOSConfigFileCreation.java
new file mode 100755
index 0000000..7fdf04b
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/FreeRTOSConfigFileCreation.java
@@ -0,0 +1,143 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.cdgen.utils.fileUtil;

+

+/**

+ * Implementation of FreeRTOS specific configuration and macros.

+ *

+ *

+ */

+public class FreeRTOSConfigFileCreation {

+	final private Amalthea model;

+

+	/**

+	 * Constructor FreeRTOSConfigFileCreation

+	 *

+	 * @param Model

+	 * @param srcPath

+	 * @param configFlag

+	 * @throws IOException

+	 */

+	public FreeRTOSConfigFileCreation(final Amalthea Model, final String srcPath, final int configFlag)

+			throws IOException {

+		this.model = Model;

+		System.out.println("FreeRTOSConfig File Creation Begins");

+		fileCreate(this.model, srcPath, configFlag);

+		System.out.println("FreeRTOSConfig File Creation Ends");

+	}

+

+	/**

+	 * FileCreation FreeRTOSConfigFileCreation

+	 *

+	 * @param model

+	 * @param srcPath

+	 * @param configFlag

+	 * @throws IOException

+	 */

+	public static void fileCreate(final Amalthea model, final String srcpath, final int configFlag) throws IOException {

+		final String fname = srcpath + File.separator + "FreeRTOSConfig.h";

+		final File f2 = new File(srcpath);

+		final File f1 = new File(fname);

+		f2.mkdirs();

+		try {

+			f1.createNewFile();

+		}

+		catch (final IOException e) {

+			e.printStackTrace();

+		}

+

+		final File fn = f1;

+		@SuppressWarnings("resource")

+		final FileWriter fw = new FileWriter(fn, true);

+		try {

+			fileUtil.fileMainHeader(f1);

+			fileUtil.FreeRTOSConfigFileHeader(f1);

+			headerIncludesFreeRTOS(model, f1, configFlag);

+		}

+		finally {

+			try {

+				fw.close();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+		}

+	}

+

+	/**

+	 * Macro framework and definition.

+	 *

+	 * @param model

+	 * @param file

+	 * @param configFlag

+	 */

+	public static void headerIncludesFreeRTOS(final Amalthea model, final File file, final int configFlag) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			final int constval = 1;

+			final int taskSize = model.getSwModel().getTasks().size();

+			fw.write("\t#ifndef FREERTOS_CONFIG_H\n");

+			fw.write("\t#define FREERTOS_CONFIG_H\n");

+			fw.write("//-----------------------------------------------------------\n");

+			fw.write("\t#define configCALL_STACK_SIZE			0x50\n");

+			if (0x0020 == (configFlag & 0x00F0)) {

+				fw.write("\t#define configUSE_PREEMPTION		1\n");

+			}

+			else {

+				fw.write("\t#define configUSE_PREEMPTION		0\n");

+			}

+			fw.write("\t#define configUSE_TIME_SLICING			0\n");

+			fw.write("\t#define configUSE_IDLE_HOOK				0\n");

+			fw.write("\t#define configUSE_TICK_HOOK				0\n");

+			fw.write("\t#define configCPU_CLOCK_HZ				( ( unsigned long ) 700000000 )\n");

+			fw.write("\t#define configTICK_RATE_HZ				( ( TickType_t ) 1000 )\n");

+			fw.write("\t#define configMAX_PRIORITIES			( ( unsigned portBASE_TYPE ) " + (taskSize + constval)

+					+ " )\n");

+			fw.write("\t#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 0x200) //512 words\n");

+			fw.write("\t#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 10450 ) )\n");

+			fw.write("\t#define configMAX_TASK_NAME_LEN			( 128 )\n");

+			fw.write("\t#define configUSE_TRACE_FACILITY    	0\n");

+			fw.write("\t#define configUSE_16_BIT_TICKS      	1\n");

+			fw.write("\t#define configIDLE_SHOULD_YIELD			0\n");

+			fw.write("\t#define configUSE_ALTERNATIVE_API		0\n");

+			fw.write("//-----------------------------------------------------------\n");

+			fw.write("\t#define configUSE_CO_ROUTINES			0\n");

+			fw.write("\t#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )\n");

+			fw.write("//-----------------------------------------------------------\n");

+			fw.write("\t#define INCLUDE_vTaskPrioritySet        	0\n");

+			fw.write("\t#define INCLUDE_uxTaskPriorityGet       	0\n");

+			fw.write("\t#define INCLUDE_vTaskDelete             	0\n");

+			fw.write("\t#define INCLUDE_vTaskCleanUpResources   	0\n");

+			fw.write("\t#define INCLUDE_vTaskSuspend            	1\n");

+			fw.write("\t#define INCLUDE_vTaskDelayUntil				1\n");

+			fw.write("\t#define INCLUDE_vTaskDelay					1\n");

+			fw.write("\t#define INCLUDE_xTaskGetCurrentTaskHandle	1\n");

+			fw.write("\t#define INCLUDE_pcTaskGetTaskName 			1\n");

+			fw.write("\n\t#define C2C_MSG_TYPE int		\n");

+			fw.write("\t#endif\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/LabelFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/LabelFileCreation.java
new file mode 100755
index 0000000..9bbd09b
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/LabelFileCreation.java
@@ -0,0 +1,414 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ *   SPDX-License-Identifier: EPL-2.0
+ *
+ *   Contributors:
+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Label;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Declaration of Labels with initial values .
+ *
+ *
+ */
+
+/**
+ * @author rpras
+ *
+ */
+public class LabelFileCreation {
+	final private Amalthea model;
+
+	/**
+	 * Constructor LabelFileCreation
+	 *
+	 * @param Model
+	 *            Amalthea Model
+	 * @param srcPath
+	 * @throws IOException
+	 */
+	public LabelFileCreation(final Amalthea Model, final String srcPath) throws IOException {
+		this.model = Model;
+		System.out.println("Label File Creation Begins");
+		fileCreate(this.model, srcPath);
+		System.out.println("Label File Creation Ends");
+	}
+
+	/**
+	 * FileCreation LabelFileCreation
+	 *
+	 * @param model
+	 * @param srcPath
+	 * @throws IOException
+	 */
+	private static void fileCreate(final Amalthea model, final String srcPath) throws IOException {
+		final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+		int k = 0;
+		for (final SchedulerAllocation c : CoreNo) {
+			final ProcessingUnit pu = c.getResponsibility().get(0);
+			final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);
+			final List<Task> tasks = new ArrayList<Task>(task);
+			final List<Label> labelCoreCommonList = fileUtil.CoreSpecificLabel(model, tasks);
+			final List<Label> sharedLabelList = fileUtil.SharedLabelDeclarationHead(model, tasks);
+			final String fname1 = srcPath + File.separator + "label" + k + ".c";
+			final String fname2 = srcPath + File.separator + "label" + k + ".h";
+			final File f2 = new File(srcPath);
+			final File f1 = new File(fname1);
+			final File f3 = new File(fname2);
+			f2.mkdirs();
+			try {
+				f1.createNewFile();
+			}
+			catch (final IOException e) {
+				e.printStackTrace();
+			}
+
+			final File fn = f1;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			try {
+				fileUtil.fileMainHeader(f1);
+				labelFileHeader(f1);
+				headerIncludesLabelHead(f1, k);
+				LabelDeclaration(f1, tasks, labelCoreCommonList);
+				LabelDeclarationLocal(f1, tasks, labelCoreCommonList, sharedLabelList);
+			}
+			finally {
+				try {
+					fw.close();
+				}
+				catch (final IOException e) {
+					e.printStackTrace();
+				}
+			}
+
+			try {
+				fileUtil.fileMainHeader(f3);
+				labelFileHeader(f3);
+				headerIncludesLabel(f3);
+				LabelDeclarationLocalHeader(f3, tasks, labelCoreCommonList);
+			}
+			finally {
+				try {
+					fw.close();
+				}
+				catch (final IOException e) {
+					e.printStackTrace();
+				}
+			}
+
+			k++;
+		}
+	}
+
+	/**
+	 * Title card - LabelFileCreation
+	 *
+	 * @param file
+	 */
+	private static void labelFileHeader(final File file) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			fw.write("*Title 		:   Label Declaration\n");
+			fw.write("*Description	:	Declaration and Initialisation of Label\n");
+			fw.write("******************************************************************\n");
+			fw.write("******************************************************************/\n\n\n");
+
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * Header inclusion - LabelFileCreation
+	 *
+	 * @param file
+	 */
+	private static void headerIncludesLabel(final File file) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			fw.write("/* Standard includes. */\n");
+			fw.write("#include <stdio.h>\n");
+			fw.write("#include <stdint.h>\n");
+			fw.write("#include <string.h>\n\n");
+			fw.write("/* Scheduler includes. */\n");
+			fw.write("#include \"shared_comms.h\"\n");
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * Header inclusion - LabelFileCreation
+	 *
+	 * @param file
+	 */
+	private static void headerIncludesLabelHead(final File file, final int k) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			fw.write("/* Standard includes. */\n");
+			fw.write("#include <stdio.h>\n");
+			fw.write("#include <stdint.h>\n");
+			fw.write("#include <string.h>\n\n");
+			fw.write("/* Scheduler includes. */\n");
+			fw.write("#include \"shared_comms.h\"\n");
+			fw.write("#include \"label" + k + ".h\"\n\n");
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+
+	/**
+	 * Label definition and initialization structure.
+	 *
+	 * @param file
+	 * @param tasks
+	 * @param labellist
+	 */
+	private static void LabelDeclaration(final File file, final List<Task> tasks, final List<Label> labellist) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			labellist.stream().distinct().collect(Collectors.toList());
+			for (final Label label : labellist) {
+				final String type = fileUtil.datatype(label.getSize().toString());
+				final long init = fileUtil.intialisation(label.getSize().toString());
+				fw.write("\t" + type + "	" + label.getName() + " \t=\t " + init + ";\n");
+			}
+
+			fw.write("\n\n\n\n");
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * Local label definition and initialization structure. Task specific local
+	 * labels are defined to perform Cin and Cout operation.
+	 *
+	 * @param file
+	 * @param tasks
+	 * @param sharedLabelList
+	 */
+	private static void LabelDeclarationLocal(final File file, final List<Task> tasks,
+			final List<Label> labelCoreCommonList, final List<Label> sharedLabelList) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			for (final Task task : tasks) {
+				List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+				final ArrayList<Label> labellist1 = new ArrayList<Label>();
+				runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+				for (final Runnable run : runnablesOfTask) {
+					final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);
+					labellist1.addAll(labellist);
+				}
+				final List<Label> listWithoutDuplicates2 = labellist1.stream().distinct().collect(Collectors.toList());
+				final Set<Label> TaskLabel = SoftwareUtil.getAccessedLabelSet(task, null);
+				fw.write("\n //local variable for " + task.getName() + "\n");
+				for (final Label lab : listWithoutDuplicates2) {
+					if ((TaskLabel.contains(lab)) && !(sharedLabelList.contains(lab))
+							&& (labelCoreCommonList.contains(lab))) {
+						final String type = fileUtil.datatype(lab.getSize().toString());
+						final long init = fileUtil.intialisation(lab.getSize().toString());
+						fw.write("\t\t" + type + "\t" + lab.getName() + "_" + task.getName() + "\t=\t" + init + ";\n");
+					}
+				}
+				fw.write("\n //Shared label \n");
+				for (final Label lab : sharedLabelList) {
+					if (TaskLabel.contains(lab)) {
+						final String type = fileUtil.datatype(lab.getSize().toString());
+						final long init = fileUtil.intialisation(lab.getSize().toString());
+						fw.write(
+								"\t\t" + type + "\t" + lab.getName() + "_" + task.getName() + " \t=\t " + init + ";\n");
+					}
+				}
+				final Set<Label> readLabels = SoftwareUtil.getReadLabelSet(task, null);
+				final Set<Label> writeLabels = SoftwareUtil.getWriteLabelSet(task, null);
+				fw.write("\n\tvoid cIN_" + task.getName() + "()\n\t{\n");
+				List<String> readLabelType = new ArrayList<String>();
+				final HashMap<String, HashMap<Label, Integer>> SharedLabelTypeMapIndexed = new HashMap<String, HashMap<Label, Integer>>();
+				for (final Label share : sharedLabelList) {
+					final String type = share.getSize().toString();
+					readLabelType.add(type);
+				}
+				readLabelType = readLabelType.stream().distinct().collect(Collectors.toList());
+				for (final String rLT : readLabelType) {
+
+					final HashMap<Label, Integer> SharedLabelTypeMap = new HashMap<Label, Integer>();
+					int k = 0;
+					for (final Label share : sharedLabelList) {
+						final String type = share.getSize().toString();
+						if (type.equals(rLT)) {
+							SharedLabelTypeMap.put(share, new Integer(k));
+							k++;
+						}
+					}
+					SharedLabelTypeMapIndexed.put(rLT, SharedLabelTypeMap);
+				}
+				HashMap<Label, Integer> LabelIndexedType = new HashMap<Label, Integer>();
+				for (final String rLT : readLabelType) {
+					LabelIndexedType = SharedLabelTypeMapIndexed.get(rLT);
+					for (final Label share : sharedLabelList) {
+						final String type = share.getSize().toString();
+						if ((type.equals(rLT)) & (readLabels.contains(share))) {
+							fw.write("\t\t" + share.getName() + "_" + task.getName() + "\t=\tshared_label_"
+									+ type.replace(" ", "") + "_read(" + LabelIndexedType.get(share) + ");\n");
+						}
+					}
+				}
+				for (final Label lab : listWithoutDuplicates2) {
+					if (labelCoreCommonList.contains(lab)) {
+						fw.write("\t\t" + lab.getName() + "_" + task.getName() + "\t=\t" + lab.getName() + ";\n");
+					}
+				}
+				fw.write("\t}\n");
+				fw.write("\n\tvoid cOUT_" + task.getName() + "()\n\t{\n");
+				final ArrayList<Label> labellist2 = new ArrayList<Label>();
+				runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+				for (final Runnable run : runnablesOfTask) {
+					final Set<Label> labellist = SoftwareUtil.getWriteLabelSet(run, null);
+					labellist2.addAll(labellist);
+				}
+				final List<Label> listWithoutDuplicates1 = labellist2.stream().distinct().collect(Collectors.toList());
+				for (final Label lab : listWithoutDuplicates1) {
+					if (labelCoreCommonList.contains(lab) & (writeLabels.contains(lab))) {
+						fw.write("\t\t" + lab.getName() + "\t=\t" + lab.getName() + "_" + task.getName() + ";\n");
+					}
+				}
+				HashMap<Label, Integer> LabelWriteIndexedType = new HashMap<Label, Integer>();
+				for (final String rLT : readLabelType) {
+					LabelWriteIndexedType = SharedLabelTypeMapIndexed.get(rLT);
+					for (final Label share : sharedLabelList) {
+						final String type = share.getSize().toString();
+						if ((type.equals(rLT)) & (writeLabels.contains(share))) {
+							fw.write("\t\t" + share.getName() + "_" + task.getName() + "++;\n");
+							fw.write("\t\tshared_label_" + type.replace(" ", "") + "_write("
+									+ LabelWriteIndexedType.get(share) + "," + share.getName() + "_" + task.getName()
+									+ " );\n");
+						}
+					}
+				}
+				fw.write("\t}\n");
+				fw.write("\n\n");
+			}
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+	}
+
+	private static void LabelDeclarationLocalHeader(final File file, final List<Task> tasks,
+			final List<Label> labelList) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			for (final Task task : tasks) {
+				List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);
+				final ArrayList<Label> labellist1 = new ArrayList<Label>();
+				runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+				for (final Runnable run : runnablesOfTask) {
+					final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);
+					labellist1.addAll(labellist);
+				}
+				fw.write("\n\tvoid cIN_" + task.getName() + "();");
+				fw.write("\n\tvoid cOUT_" + task.getName() + "();");
+			}
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+	}
+
+	public static List<Label> SharedLabelFinder(final Amalthea model) {
+		final EList<Task> tasks = model.getSwModel().getTasks();
+		final ArrayList<Label> labelCombined = new ArrayList<Label>();
+		final ArrayList<Label> labelOhneDuplicate = new ArrayList<Label>();
+		for (final Task task : tasks) {
+			final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(task, null);
+			labelCombined.addAll(labellist);
+		}
+		final Set<Label> uniques = new HashSet<>();
+		for (final Label t : labelCombined) {
+			if (!uniques.add(t)) {
+				labelOhneDuplicate.add(t);
+			}
+		}
+		final List<Label> sharedLabelList = labelOhneDuplicate.stream().distinct().collect(Collectors.toList());
+		return sharedLabelList;
+	}
+
+	@SuppressWarnings("null")
+	public static HashMap<Label, HashMap<Task, ProcessingUnit>> LabelTaskMap(final Amalthea model,
+			final List<Label> labelList) {
+		final EList<Task> tasks = model.getSwModel().getTasks();
+		final HashMap<Label, HashMap<Task, ProcessingUnit>> localLabelAllocation = new HashMap<Label, HashMap<Task, ProcessingUnit>>();
+
+		for (final Label label : labelList) {
+			final HashMap<Task, ProcessingUnit> localAllocation = new HashMap<Task, ProcessingUnit>();
+			for (final Task task : tasks) {
+				final ProcessingUnit pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();
+				final ArrayList<Label> labelListLocalTask = new ArrayList<Label>(
+						SoftwareUtil.getAccessedLabelSet(task, null));
+				if (labelListLocalTask.contains(label)) {
+					localAllocation.put(task, pu);
+				}
+			}
+			if (localAllocation != null) {
+				localLabelAllocation.put(label, localAllocation);
+			}
+		}
+		return localLabelAllocation;
+	}
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainFileCreation.java
new file mode 100755
index 0000000..f0a3e6c
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainFileCreation.java
@@ -0,0 +1,259 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Set;

+import java.util.stream.Collectors;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Label;

+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;

+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;

+import org.eclipse.app4mc.cdgen.utils.fileUtil;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * Implementation of Main function in which scheduling is done.

+ *

+ *

+ */

+

+public class MainFileCreation {

+	final private Amalthea model;

+

+	/**

+	 * MainFileCreation Constructor

+	 *

+	 * @param Model

+	 * @param srcPath

+	 * @param configFlag

+	 * @throws IOException

+	 */

+	public MainFileCreation(final Amalthea Model, final String srcPath, final int configFlag) throws IOException {

+		this.model = Model;

+		System.out.println("Main File Creation Begins");

+		if (0x2000 == (configFlag & 0xF000)) {

+			fileCreatePthread(this.model, srcPath);

+		}

+		System.out.println("Main File Creation Ends");

+	}

+

+

+	/**

+	 * Shared Label definition and initialization structure.

+	 *

+	 * @param file

+	 * @param labellist

+	 */

+	public static List<Label> SharedLabelCoreDefinition(final Amalthea model, final String srcPath) {

+		final EList<Label> labellist = model.getSwModel().getLabels();

+		final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+		if (labellist.size() == 0) {

+			System.out.println("Shared Label size 0");

+		}

+		else {

+			final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+					.LabelTaskMap(model, labellist);

+			int i = 0, k = 0, j = 0;

+			for (final Label share : labellist) {

+				final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+				final Collection<ProcessingUnit> puList = TaskMap.values();

+				final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+				final Set<Task> TaskList = TaskMap.keySet();

+				if (puListUnique.size() == 1 && TaskList.size() > 1) {

+					SharedLabelListSortCore.add(share);

+					i++;

+				}

+				else if (puListUnique.size() > 1) {

+					j++;

+				}

+				else if (TaskList.size() == 1) {

+					k++;

+				}

+			}

+			System.out.println("Total Labels :" + sharedLabelTaskMap.keySet().size() + "=" + i + "+" + j + "+" + k + "="

+					+ (i + j + k));

+		}

+		return SharedLabelListSortCore;

+	}

+

+

+	private static void sleepTimerMsPthread(final File f1) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("void sleepTimerMs(int ticks)\n");

+			fw.write("{\n");

+			fw.write("\tint var;\n");

+			fw.write("\tfor (var = 0; var < ticks; ++var)\n");

+			fw.write("\t{\n");

+			fw.write("\t\tsuspendMe();\n");

+			fw.write("\t\t{\n");

+			fw.write("\t\t\tusleep(1000);\n");

+			fw.write("\t\t}\n");

+			fw.write("\t\tresumeMe();\n");

+			fw.write("\t}\n");

+			fw.write("}\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void fileCreatePthread(final Amalthea model, final String path1) throws IOException {

+		final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();

+		int k = 0;

+		for (final SchedulerAllocation c : CoreNo) {

+			final ProcessingUnit pu = c.getResponsibility().get(0);

+			final Set<Task> tasks = DeploymentUtil.getTasksMappedToCore(pu, model);

+			final String fname = path1 + File.separator + "main" + k + ".c";

+			final File f2 = new File(path1);

+			final File f1 = new File(fname);

+			f2.mkdirs();

+			try {

+				f1.createNewFile();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			try {

+				fileUtil.fileMainHeader(f1);

+				mainFileHeader(f1);

+				headerIncludesMainPthread(f1, model, k, tasks);

+				sleepTimerMsPthread(f1);

+				mainFucntionPthread(f1, tasks);

+			}

+			finally {

+				try {

+					fw.close();

+				}

+				catch (final IOException e) {

+					e.printStackTrace();

+				}

+			}

+			k++;

+		}

+	}

+

+	private static void mainFucntionPthread(final File f1, final Set<Task> tasks) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("int main(void) \n{\n");

+			fw.write("\tpthread_t thread[NUM_THREADS];\n");

+			fw.write("\tpthread_attr_t attr;\n\n");

+			final int tasksize = tasks.size();

+			int init = 0;

+			while (init < tasksize) {

+				fw.write("\tlong rtr" + init + "=" + init + ";\n");

+				init++;

+			}

+			fw.write("\tlong t;\n");

+			fw.write("\tint rc;\n");

+			fw.write("\tvoid *status;\n\n");

+			fw.write("\tfor(;;)\n\t{\n");

+			fw.write("\t\tpthread_attr_init(&attr);\n");

+			fw.write("\t\tpthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);\n\n");

+			int init1 = 0;

+			while (init1 < tasksize) {

+				fw.write("\t\tpthread_create (&thread[" + init1 + "], &attr, v" + tasks.iterator().next().getName()

+						+ ", (void *)rtr" + init1 + ");\n");

+				init1++;

+			}

+			fw.write("\t\tif (rc)\n");

+			fw.write("\t\t{\n");

+			fw.write("\t\t\tprintf(\"ERROR; return code from pthread_join() is %d\\n\", rc);\n");

+			fw.write("\t\t\texit(-1);\n");

+			fw.write("\t\t}\n");

+

+			fw.write("\n\t\tpthread_attr_destroy(&attr);\n");

+			fw.write("\n\t\tfor(t=0; t<NUM_THREADS; t++)\n");

+			fw.write("\t\t{\n");

+			fw.write("\t\t\trc = pthread_join(thread[t], &status);\n");

+			fw.write("\t\t\tif (rc)\n");

+			fw.write("\t\t\t{\n");

+			fw.write("\t\t\t\tprintf(\"ERROR; return code from pthread_join() is %d\\n\", rc);\n");

+			fw.write("\t\t\t\texit(-1);\n");

+			fw.write("\t\t\t}\n");

+			fw.write(

+					"\t\t\tprintf(\"Main: completed join with thread %ld having a status of %ld\\n\",t,(long)status);\n");

+			fw.write("\t\t}\n");

+			fw.write("\t\tprintf(\"\\n\");\n");

+			fw.write("\t}\n");

+			fw.write("\tprintf(\"Main: program completed. Exiting.\\n\");\n");

+			fw.write("\tpthread_exit(NULL);\n");

+			fw.write("}\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void headerIncludesMainPthread(final File f1, final Amalthea model2, final int k,

+			final Set<Task> tasks) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdio.h>\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <pthread.h>\n");

+			fw.write("#include <string.h>\n\n");

+			fw.write("/* Scheduler includes. */\n");

+			fw.write("#include \"taskDef" + k + ".h\"\n");

+			fw.write("#define NUM_THREADS\t" + tasks.size() + "\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+

+	}

+

+	private static void mainFileHeader(final File f1) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("*Title 		:   C File for Tasks Call\n");

+			fw.write("*Description	:	Main file in which scheduling is done \n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************/\n\n\n");

+

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+

+	}

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainRMSFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainRMSFileCreation.java
new file mode 100644
index 0000000..16e3261
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MainRMSFileCreation.java
@@ -0,0 +1,475 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.math.BigInteger;

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Map;

+import java.util.Set;

+import java.util.stream.Collectors;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Label;

+import org.eclipse.app4mc.amalthea.model.MappingModel;

+import org.eclipse.app4mc.amalthea.model.PeriodicStimulus;

+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;

+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;

+import org.eclipse.app4mc.amalthea.model.Stimulus;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.amalthea.model.Time;

+import org.eclipse.app4mc.amalthea.model.TimeUnit;

+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;

+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil;

+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil.TimeType;

+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;

+import org.eclipse.app4mc.amalthea.model.util.TimeUtil;

+import org.eclipse.app4mc.cdgen.utils.fileUtil;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * Implementation of Main function in which scheduling is done. Specific to RMS

+ * Scheduler

+ *

+ *

+ */

+

+public class MainRMSFileCreation {

+	final private Amalthea model;

+

+	/**

+	 * MainRMSFileCreation Constructor

+	 *

+	 * @param Model

+	 * @param srcPath

+	 * @param configFlag

+	 * @throws IOException

+	 */

+	public MainRMSFileCreation(final Amalthea Model, final String srcPath, final int configFlag) throws IOException {

+		this.model = Model;

+		System.out.println("Main File Creation Begins");

+		fileCreate(this.model, srcPath, configFlag);

+		System.out.println("Main File Creation Ends");

+	}

+

+	/**

+	 * MainRMSFileCreation - File Creation

+	 *

+	 * @param model

+	 * @param srcPath

+	 * @param configFlag

+	 * @throws IOException

+	 */

+	private static void fileCreate(final Amalthea model, final String srcPath, final int configFlag)

+			throws IOException {

+		final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();

+		int k = 0;

+		for (final SchedulerAllocation c : CoreNo) {

+			final ProcessingUnit pu = c.getResponsibility().get(0);

+			final Set<Task> tasks = DeploymentUtil.getTasksMappedToCore(pu, model);

+			final String fname = srcPath + File.separator + "main" + k + ".c";

+			final File f2 = new File(srcPath);

+			final File f1 = new File(fname);

+			f2.mkdirs();

+			try {

+				f1.createNewFile();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			try {

+				fileUtil.fileMainHeader(f1);

+				mainFileHeader(f1);

+				if ((0x0100 == (0x0F00 & configFlag)) & (0x3000 == (0xF000 & configFlag))) {

+					headerIncludesMainRMS(f1, k);

+					mainTaskStimuli(model, f1, tasks);

+					mainTaskPriority(f1, tasks);

+					mainFucntionRMS(model, f1, tasks);

+					// SharedLabelDeclarationHead(f1, model);

+				}

+				else {

+					headerIncludesMainFreeRTOS(f1, k);

+					mainTaskStimuli(model, f1, tasks);

+					mainTaskPriority(f1, tasks);

+					mainFucntionFreeRTOS(model, f1, tasks);

+				}

+			}

+			finally {

+				try {

+					fw.close();

+				}

+				catch (final IOException e) {

+					e.printStackTrace();

+				}

+			}

+			k++;

+		}

+	}

+

+	/**

+	 * Main function in Main file of RMS specific scheduler

+	 *

+	 * @param model

+	 * @param file

+	 * @param tasks

+	 */

+	private static void mainFucntionRMS(final Amalthea model, final File file, final Set<Task> tasks) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("int main(void) \n{\n");

+			fw.write("\toutbuf_init();\n");

+			final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);

+			final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+			if (SharedLabelList.size() == 0) {

+				System.out.println("Shared Label size 0");

+			}

+			else {

+				final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+						.LabelTaskMap(model, SharedLabelList);

+				for (final Label share : SharedLabelList) {

+					final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+					final Collection<ProcessingUnit> puList = TaskMap.values();

+					final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+					if (puListUnique.size() > 1) {

+						SharedLabelListSortCore.add(share);

+					}

+				}

+			}

+

+			final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();

+			for (final Label share : SharedLabelListSortCore) {

+				SharedLabelTypeMap.put(share, share.getSize().toString());

+			}

+			final List<String> SharedTypeMapList = new ArrayList<>(

+					SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));

+			final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());

+			for (int k = 0; k < SharedTypeMapList.size(); k++) {

+				final List<Label> SharedLabel = new ArrayList<Label>();

+				final String sh = SharedTypeMapList.get(k);

+				for (final Label s : SharedLabelMapList) {

+					final String ShTy = SharedLabelTypeMap.get(s);

+					if (sh.equals(ShTy)) {

+						SharedLabel.add(s);

+					}

+				}

+				int SharedLabelCounter = SharedLabel.size();

+				if (SharedLabelCounter != 0) {

+					fw.write("\tshared_label_" + sh.toString().replace(" ", "") + "_init();\n");

+				}

+				SharedLabelCounter = 0;

+			}

+

+			for (final Task task : tasks) {

+				final MappingModel mappingModel = model.getMappingModel();

+				ProcessingUnit pu = null;

+				if (mappingModel != null) {

+					pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();

+					Time taskTime = RuntimeUtil.getExecutionTimeForProcess(task, pu, null, TimeType.WCET);

+					taskTime = TimeUtil.convertToTimeUnit(taskTime, TimeUnit.MS);

+					final BigInteger sleepTime = taskTime.getValue();

+					final BigInteger b2 = new BigInteger("1000");

+					final int comparevalue = sleepTime.compareTo(b2);

+					if (comparevalue < 0) {

+						fw.write("\tAmaltheaTask AmalTk_" + task.getName() + " = createAmaltheaTask( v" + task.getName()

+								+ ", cIN_" + task.getName() + ", cOUT_" + task.getName() + ", "

+								+ task.getStimuli().get(0).getName() + ", " + task.getStimuli().get(0).getName()

+								+ ", 1);\n");

+					}

+					else {

+						fw.write("\tAmaltheaTask AmalTk_" + task.getName() + " = createAmaltheaTask( v" + task.getName()

+								+ ", cIN_" + task.getName() + ", cOUT_" + task.getName() + ", "

+								+ task.getStimuli().get(0).getName() + ", " + task.getStimuli().get(0).getName() + ", "

+								+ sleepTime + ");\n");

+					}

+				}

+			}

+			for (final Task task : tasks) {

+				final Set<Label> taskLabel = SoftwareUtil.getAccessedLabelSet(task, null);

+				final List<Label> taskLabelList = new ArrayList<>(taskLabel);

+				final HashMap<Label, String> LabelTypeMap = new HashMap<Label, String>();

+				for (final Label tl : taskLabelList) {

+					LabelTypeMap.put(tl, tl.getSize().toString());

+				}

+				final List<String> TypeList = new ArrayList<>(

+						LabelTypeMap.values().stream().distinct().collect(Collectors.toList()));

+				final List<Label> LabelList = new ArrayList<>(

+						LabelTypeMap.keySet().stream().distinct().collect(Collectors.toList()));

+				fw.write("\tcreateRTOSTask( &AmalTk_" + task.getName() + ", main" + task.getName() + ", "

+						+ TypeList.size() + ",");

+				final List<Label> dataTypeList = new ArrayList<Label>();

+				int k = 0;

+				for (final String tl : TypeList) {

+					fw.write(fileUtil.datatypeSize(tl) + ", ");

+					for (final Label La : LabelList) {

+						if (LabelTypeMap.get(La).contains(tl) && (SharedLabelListSortCore.contains(La))) {

+							dataTypeList.add(La);

+						}

+					}

+					fw.write("" + dataTypeList.size() + "");

+					k++;

+					if (k < TypeList.size()) {

+						fw.write(", ");

+					}

+				}

+				fw.write(");\n");

+			}

+			fw.write("\tvTaskStartScheduler();\n");

+			fw.write("\t" + "return EXIT_SUCCESS;\n");

+			fw.write("}\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * Main function in Main file of RMS specific scheduler

+	 *

+	 * @param model

+	 * @param file

+	 * @param tasks

+	 */

+	private static void mainFucntionFreeRTOS(final Amalthea model, final File file, final Set<Task> tasks) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("int main(void) \n{\n");

+			fw.write("\toutbuf_init();\n");

+			final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);

+			final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+			if (SharedLabelList.size() == 0) {

+				System.out.println("Shared Label size 0");

+			}

+			else {

+				// System.out.println("Shared Label size

+				// "+SharedLabelList.size());

+				final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+						.LabelTaskMap(model, SharedLabelList);

+				for (final Label share : SharedLabelList) {

+					final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+					final Collection<ProcessingUnit> puList = TaskMap.values();

+					final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+					if (puListUnique.size() > 1) {

+						SharedLabelListSortCore.add(share);

+					}

+				}

+			}

+

+			final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();

+			for (final Label share : SharedLabelListSortCore) {

+				SharedLabelTypeMap.put(share, share.getSize().toString());

+			}

+			final List<String> SharedTypeMapList = new ArrayList<>(

+					SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));

+			final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());

+			for (int k = 0; k < SharedTypeMapList.size(); k++) {

+				final List<Label> SharedLabel = new ArrayList<Label>();

+				final String sh = SharedTypeMapList.get(k);

+				for (final Label s : SharedLabelMapList) {

+					final String ShTy = SharedLabelTypeMap.get(s);

+					if (sh.equals(ShTy)) {

+						SharedLabel.add(s);

+					}

+				}

+				int SharedLabelCounter = SharedLabel.size();

+				if (SharedLabelCounter != 0) {

+					fw.write("\tshared_label_" + sh.toString().replace(" ", "") + "_init();\n");

+					// fw.write("void shared_label_"+sh.toString().replace(" ",

+					// "")+"_init_core();\n");

+

+				}

+				SharedLabelCounter = 0;

+			}

+

+			for (final Task task : tasks) {

+				fw.write("\txTaskCreate( v" + task.getName() + " , \"" + task.getName()

+						+ "\", configMINIMAL_STACK_SIZE, &v" + task.getName() + ", main" + task.getName()

+						+ ", NULL);\n");

+			}

+			fw.write("\tvTaskStartScheduler();\n");

+			fw.write("\t" + "return EXIT_SUCCESS;\n");

+			fw.write("}\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * Title Card of MainRMSFileCreation

+	 *

+	 * @param file

+	 */

+	private static void mainFileHeader(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("*Title 		:   C File for Tasks Call\n");

+			fw.write("*Description	:	Main file in which scheduling is done \n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************/\n\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * MainRMSFileCreation Header inclusion

+	 *

+	 * @param file

+	 */

+	private static void headerIncludesMainRMS(final File file, final int k) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdio.h>\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <string.h>\n");

+			fw.write("#include <e_lib.h>\n\n");

+			fw.write("/* Scheduler includes. */\n");

+			fw.write("#include \"FreeRTOS.h\"\n");

+			fw.write("#include \"task.h\"\n");

+			fw.write("#include \"queue.h\"\n");

+			fw.write("#include \"AmaltheaConverter.h\"\n");

+			fw.write("#include \"debugFlags.h\"\n");

+			fw.write("#include \"ParallellaUtils.h\"\n");

+			fw.write("#include \"taskDef" + k + ".h\"\n");

+			fw.write("#include \"shared_comms.h\"\n\n");

+			fw.write("#include \"label" + k + ".h\"\n");

+			// fw.write("#include \"c2c.h\"\n\n");

+			// fw.write("#define READ_PRECISION_US 1000\n\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * Assign Priority to task in RMS

+	 *

+	 * @param file

+	 * @param tasks

+	 */

+	private static void mainTaskPriority(final File file, final Set<Task> tasks) {

+		try {

+			final File fn = file;

+			final List<Task> localTaskPriority = new ArrayList<Task>();

+			localTaskPriority.addAll(tasks);

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* TaskPriorities. */\n");

+			final HashMap<Task, Long> periodMap = new HashMap<Task, Long>();

+			for (final Task task : tasks) {

+				final long period = fileUtil.getRecurrence(task).getValue().longValue();

+				periodMap.put(task, period);

+			}

+			final Map<Task, Long> periodMapSorted = fileUtil.sortByValue(periodMap);

+			// System.out.println("periodMapSorted Size "+

+			// periodMapSorted.size());

+			// for (int i=0;i<(periodMapSorted.size());i++) {

+			for (int i = (periodMapSorted.size()), k = 0; i > 0; i--, k++) {

+				final Task task = (Task) periodMapSorted.keySet().toArray()[k];

+				fw.write("\t#define main" + task.getName() + "\t( tskIDLE_PRIORITY +" + (i) + " )\n");

+			}

+			fw.write("\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * MainRMSFileCreation Header inclusion

+	 *

+	 * @param file

+	 */

+	private static void headerIncludesMainFreeRTOS(final File file, final int k) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdio.h>\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <string.h>\n");

+			fw.write("#include <e_lib.h>\n\n");

+			fw.write("/* Scheduler includes. */\n");

+			fw.write("#include \"FreeRTOS.h\"\n");

+			fw.write("#include \"task.h\"\n");

+			fw.write("#include \"queue.h\"\n");

+			fw.write("#include \"AmaltheaConverter.h\"\n");

+			fw.write("#include \"debugFlags.h\"\n");

+			fw.write("#include \"ParallellaUtils.h\"\n");

+			fw.write("#include \"taskDef" + k + ".h\"\n");

+			fw.write("#include \"shared_comms.h\"\n\n");

+			fw.write("#include \"label" + k + ".h\"\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * Macro for Stimuli in the model

+	 *

+	 * @param model

+	 * @param file

+	 * @param tasks

+	 */

+	private static void mainTaskStimuli(final Amalthea model, final File f1, final Set<Task> tasks) {

+		try {

+			final File fn = f1;

+

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* TaskStimuli. */\n");

+			final EList<Stimulus> Stimuli = model.getStimuliModel().getStimuli();

+			for (final Stimulus s : Stimuli) {

+				if (s instanceof PeriodicStimulus) {

+					fw.write("\t#define " + s.getName() + "\t" + ((PeriodicStimulus) s).getRecurrence().getValue()

+							+ " \n");

+				}

+			}

+			fw.write("\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MakeFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MakeFileCreation.java
new file mode 100644
index 0000000..a57b805
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/MakeFileCreation.java
@@ -0,0 +1,179 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * Implementation of Main function in which scheduling is done.

+ *

+ *

+ */

+

+public class MakeFileCreation {

+	final private Amalthea model;

+

+	public MakeFileCreation(final Amalthea Model, final String path1, final int configFlag) throws IOException {

+		this.model = Model;

+		System.out.println("MAKEFILE Creation Begins");

+		fileCreate(this.model, path1, configFlag);

+		System.out.println("MAKEFILE Creation Ends");

+	}

+

+	private static void fileCreate(final Amalthea model, final String path1, final int configFlag) throws IOException {

+		model.getMappingModel().getTaskAllocation();

+		final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();

+		final String fname = path1 + File.separator + "Makefile";

+		final File f2 = new File(path1);

+		final File f1 = new File(fname);

+		f2.mkdirs();

+		try {

+			f1.createNewFile();

+		}

+		catch (final IOException e) {

+			e.printStackTrace();

+		}

+		final File fn = f1;

+		@SuppressWarnings("resource")

+		final FileWriter fw = new FileWriter(fn, true);

+		try {

+			// fileUtil.fileMainHeader(f1);

+			makeFileHeader(f1);

+			headerIncludesMainRMS(f1, CoreNo);

+		}

+		finally {

+			try {

+				fw.close();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+		}

+	}

+

+

+	private static void makeFileHeader(final File f1) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("#******************************************************************\n");

+			fw.write("#*Title 		:   Makefile Setup\n");

+			fw.write("#*Description	:	Makefile Setup for the Scheduler \n");

+			fw.write("#******************************************************************\n");

+			fw.write("#******************************************************************\n");

+			fw.write("#******************************************************************\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void headerIncludesMainRMS(final File f1, final EList<SchedulerAllocation> coreNo) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("EPIPHANY_HOME=/opt/adapteva/esdk\n");

+			fw.write("#host compiler path\n");

+			fw.write("LCC=/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc\n");

+			fw.write("#device compiler path\n");

+			fw.write("CC=e-gcc\n");

+			fw.write("#FreeRTOS dependencies\n");

+			fw.write("CFLAGS=-I.\n");

+			fw.write("FREERTOSSRC=../../Source\n");

+			fw.write("INCLUDES= -g -I$(FREERTOSSRC)/include -I$(FREERTOSSRC)/portable/GCC/Epiphany -I.\n");

+			fw.write("DEPS = $(FREERTOSSRC)/portable/GCC/Epiphany/");

+			fw.write("portmacro.h ");

+			fw.write("Makefile ");

+			fw.write("FreeRTOSConfig.h ");

+			fw.write("debugFlags.h ");

+			fw.write("AmaltheaConverter.h ");

+			int coreIndex;

+			for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {

+				fw.write("taskDef" + coreIndex + ".h ");

+			}

+			for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {

+				fw.write("label" + coreIndex + ".h ");

+			}

+			for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {

+				fw.write("runnable" + coreIndex + ".h ");

+			}

+			fw.write("ParallellaUtils.h \n");

+			fw.write("#Epiphany SDK dependencies\n");

+			fw.write("ESDK=${EPIPHANY_HOME} \n");

+			fw.write("ELIBS=${ESDK}/tools/host.armv7l/lib \n");

+			fw.write("EINCS=${ESDK}/tools/host.armv7l/include \n");

+			fw.write("ELDF=${ESDK}/bsps/current/fast.ldf \n");

+			fw.write("EHDF=${EPIPHANY_HDF} \n");

+			fw.write("#search paths for C source code files \n");

+			fw.write(

+					"vpath %.c .:$(FREERTOSSRC)/:$(FREERTOSSRC)/portable/MemMang:$(FREERTOSSRC)/portable/GCC/Epiphany:/ \n");

+			fw.write("#search path for assembly listings \n");

+			fw.write("vpath %.s $(FREERTOSSRC)/portable/GCC/Epiphany \n");

+			fw.write("#main target  \n");

+			fw.write("run: armcode ");

+			for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {

+				fw.write("main" + coreIndex + ".elf ");

+			}

+			fw.write("\n	@echo build status : successful\n\n");

+			fw.write("#rule for every device target\n");

+			fw.write(

+					"%.elf: $(ELDF) tasks.o queue.o list.o port.o portasm.o heap_1.o c2c.o debugFlags.o AmaltheaConverter.o ");

+			for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {

+				fw.write("taskDef" + coreIndex + ".o ");

+			}

+			for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {

+				fw.write("label" + coreIndex + ".o ");

+			}

+			for (coreIndex = 0; coreIndex < coreNo.size(); coreIndex++) {

+				fw.write("runnable" + coreIndex + ".o ");

+			}

+

+			fw.write("ParallellaUtils.o shared_comms.o %.o  \n");

+			fw.write("	$(CC) -g -T$< -Wl,--gc-sections -o $@ $(filter-out $<,$^) -le-lib\n\n");

+			fw.write("#host target\n");

+			fw.write("armcode: armcode.c $(DEPS)\n");

+			fw.write("	$(LCC) $< -o $@  -I ${EINCS} -L ${ELIBS} -lpal -le-hal -le-loader -lpthread\n");

+			fw.write("#clean target\n");

+			fw.write("clean:\n");

+			fw.write("	rm -f *.o *.srec *.elf armcode\n\n");

+			fw.write(".SECONDARY:\n");

+			fw.write("%.o: %.c $(DEPS)\n");

+			fw.write("	$(CC) -fdata-sections -ffunction-sections  -c -o $@ $< $(INCLUDES)\n\n");

+			fw.write("%.o: %.s $(DEPS)\n");

+			fw.write("	$(CC) -c -o $@ $< $(INCLUDES)\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * helper function to get the Amalthea Model

+	 *

+	 */

+	public Amalthea getModel() {

+		return this.model;

+	}

+

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/RunFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/RunFileCreation.java
new file mode 100755
index 0000000..3d723f7
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/RunFileCreation.java
@@ -0,0 +1,375 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ *   SPDX-License-Identifier: EPL-2.0
+ *
+ *   Contributors:
+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen;
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.Process;
+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;
+import org.eclipse.app4mc.amalthea.model.Runnable;
+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;
+import org.eclipse.app4mc.amalthea.model.Task;
+import org.eclipse.app4mc.amalthea.model.Time;
+import org.eclipse.app4mc.amalthea.model.TimeUnit;
+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil;
+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil.TimeType;
+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;
+import org.eclipse.app4mc.amalthea.model.util.TimeUtil;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * Implementation of Runnable Definition with Runnable specific delay.
+ *
+ *
+ */
+
+public class RunFileCreation {
+	final private Amalthea model;
+
+	/**
+	 * Constructor RunFileCreation
+	 *
+	 * @param Model
+	 *            Amalthea Model
+	 * @param srcPath
+	 * @param pthreadFlag
+	 * @throws IOException
+	 */
+	public RunFileCreation(final Amalthea Model, final String srcPath, final String path2, final int configFlag)
+			throws IOException {
+		this.model = Model;
+		System.out.println("Runnable File Creation Begins");
+		fileCreate(this.model, srcPath, path2, configFlag);
+		System.out.println("Runnable File Creation Ends");
+
+	}
+
+
+	/**
+	 * Runnable File Creation
+	 *
+	 * @param model
+	 * @param srcPath
+	 * @param path2
+	 * @param configFlag
+	 * @param tasks
+	 * @param runnables
+	 * @throws IOException
+	 */
+	private static void fileCreate(final Amalthea model, final String srcPath, final String path2, final int configFlag)
+			throws IOException {
+		final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();
+		int k = 0;
+		for (final SchedulerAllocation c : CoreNo) {
+			final ProcessingUnit pu = c.getResponsibility().get(0);
+			final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);
+			final List<Task> tasks = new ArrayList<Task>(task);
+			final String fname = srcPath + File.separator + "runnable" + k + ".c";
+			final File f2 = new File(srcPath);
+			final File f1 = new File(fname);
+			f2.mkdirs();
+			try {
+				f1.createNewFile();
+			}
+			catch (final IOException e) {
+				e.printStackTrace();
+			}
+
+			final File fn = f1;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			try {
+				if (0x2000 == (configFlag & 0xF000)) {
+					fileUtil.fileMainHeader(f1);
+					runFileHeader(f1);
+					headerIncludesRun(f1, k);
+					runnablePthreadDefinition(f1, tasks, model);
+				}
+				else {
+					fileUtil.fileMainHeader(f1);
+					runFileHeader(f1);
+					headerIncludesRun(f1, k);
+					runnableDefinition(f1, tasks, model);
+				}
+
+			}
+			finally {
+				try {
+					fw.close();
+				}
+				catch (final IOException e) {
+					e.printStackTrace();
+				}
+			}
+			final String fname2 = srcPath + File.separator + "runnable" + k + ".h";
+			final File f4 = new File(srcPath);
+			final File f3 = new File(fname2);
+			f4.mkdirs();
+			try {
+				f1.createNewFile();
+			}
+			catch (final IOException e) {
+				e.printStackTrace();
+			}
+
+			final File fn1 = f3;
+			@SuppressWarnings("resource")
+			final FileWriter fw1 = new FileWriter(fn1, true);
+			try {
+				if (0x2000 == (configFlag & 0xF000)) {
+					fileUtil.fileMainHeader(f3);
+					runFileHeader(f3);
+					headerIncludesRunPthreadHead(f3);
+					runnableDeclaration(f3, tasks);
+				}
+				else {
+					fileUtil.fileMainHeader(f3);
+					runFileHeader(f3);
+					headerIncludesRunHead(f3);
+					runnableDeclaration(f3, tasks);
+				}
+
+			}
+			finally {
+				try {
+					fw1.close();
+				}
+				catch (final IOException e) {
+					e.printStackTrace();
+				}
+			}
+			k++;
+		}
+	}
+
+	/**
+	 * Title Card for RunFileCreation
+	 *
+	 * @param file
+	 */
+	private static void runFileHeader(final File file) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			fw.write("*Title 		:   Runnable Header\n");
+			fw.write("*Description	:	Runnable Definition with Runnable delay\n");
+			fw.write("******************************************************************\n");
+			fw.write("******************************************************************/\n\n\n");
+
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * Header inclusion for the Runnable.c file
+	 *
+	 * @param file
+	 */
+	private static void headerIncludesRun(final File file, final int k) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			fw.write("/* Standard includes. */\n");
+			fw.write("#include <stdio.h>\n");
+			fw.write("#include <stdlib.h>\n");
+			fw.write("#include <string.h>\n\n");
+			fw.write("/* Scheduler includes. */\n");
+			fw.write("#include \"runnable" + k + ".h\"\n");
+
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * RunFileCreation - Header inclusion for runnable.h
+	 *
+	 * @param file
+	 */
+	private static void headerIncludesRunHead(final File file) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			fw.write("/* Standard includes. */\n");
+			fw.write("#include <stdio.h>\n");
+			fw.write("#include <stdlib.h>\n");
+			fw.write("#include <string.h>\n\n");
+			fw.write("/* Scheduler includes. */\n");
+			// fw.write("#include \"runnable.h\"\n\n");
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * RunFileCreation - Header inclusion for runnable.h pthread specific
+	 *
+	 * @param file
+	 */
+	private static void headerIncludesRunPthreadHead(final File file) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			fw.write("/* Standard includes. */\n");
+			fw.write("#include <stdio.h>\n");
+			fw.write("#include <stdlib.h>\n");
+			fw.write("#include <string.h>\n\n");
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+	}
+
+	/**
+	 * RunFileCreation - Runnable Definition Pthread specific
+	 *
+	 * @param file
+	 * @param tasks
+	 * @param model
+	 */
+	private static void runnablePthreadDefinition(final File file, final List<Task> tasks, final Amalthea model) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			// int taskCounter =1;
+			for (final Task t : tasks) {
+				List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(t, null);
+				runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+				// int runnableCounter =1;
+				for (final Runnable Run : runnablesOfTask) {
+					fw.write("void " + Run.getName() + " (void)\t{\n");
+					/*
+					 * fw.write("\tvDisplayMessagePthread(\" " + t.getName() +
+					 * " \tRunnable Execution	" + "\t" + Run.getName() +
+					 * "\\n\");\n");
+					 */
+					final Process RunTaskName = SoftwareUtil.getCallingProcesses(Run, null).get(0);
+					final Set<ProcessingUnit> pu = DeploymentUtil.getAssignedCoreForProcess(RunTaskName, model);
+					if (pu != null) {
+						for (final ProcessingUnit p : pu) {
+							Time RunTime1 = RuntimeUtil.getExecutionTimeForRunnable(Run, p, null, TimeType.WCET);
+							RunTime1 = TimeUtil.convertToTimeUnit(RunTime1, TimeUnit.US);
+
+							final double sleepTime = RunTime1.getValue().doubleValue();
+
+							fw.write("\tusleep(" + sleepTime + ");\n");
+							break;
+						}
+					}
+					fw.write("}\n");
+					// runnableCounter++;
+				}
+				// taskCounter++;
+			}
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+	}
+
+	/**
+	 * Runnable Definition(Generic)
+	 *
+	 * @param file
+	 * @param tasks
+	 * @param model
+	 */
+	private static void runnableDefinition(final File file, final List<Task> tasks, final Amalthea model) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			for (final Task t : tasks) {
+				List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(t, null);
+				runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());
+				for (final Runnable Run : runnablesOfTask) {
+					fw.write("void " + Run.getName() + " \t(void)\t{\n");
+					final Process RunTaskName = SoftwareUtil.getCallingProcesses(Run, null).get(0);
+					final Set<ProcessingUnit> pu = DeploymentUtil.getAssignedCoreForProcess(RunTaskName, model);
+					for (final ProcessingUnit p : pu) {
+						Time RunTime1 = RuntimeUtil.getExecutionTimeForRunnable(Run, p, null, TimeType.WCET);
+						RunTime1 = TimeUtil.convertToTimeUnit(RunTime1, TimeUnit.US);
+						break;
+					}
+					fw.write("}\n");
+				}
+			}
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * Runnable Declaration in runnable.h
+	 *
+	 * @param file
+	 * @param runnables
+	 */
+	private static void runnableDeclaration(final File file, final List<Task> tasks) {
+		try {
+			final File fn = file;
+			@SuppressWarnings("resource")
+			final FileWriter fw = new FileWriter(fn, true);
+			final List<Runnable> runnables = new ArrayList<Runnable>();
+			for (final Task ta : tasks) {
+				runnables.addAll(SoftwareUtil.getRunnableList(ta, null));
+			}
+			for (final Runnable Run : runnables) {
+				fw.write("void " + Run.getName() + " (void);\n");
+			}
+			fw.close();
+		}
+		catch (final IOException ioe) {
+			System.err.println("IOException: " + ioe.getMessage());
+		}
+
+	}
+
+	/**
+	 * helper function to get the Amalthea Model
+	 *
+	 */
+	public Amalthea getModel() {
+		return this.model;
+	}
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/SharedLabelsFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/SharedLabelsFileCreation.java
new file mode 100644
index 0000000..a991ec3
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/SharedLabelsFileCreation.java
@@ -0,0 +1,367 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.List;

+import java.util.stream.Collectors;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Label;

+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.cdgen.utils.fileUtil;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * Declaration of Labels with initial values .

+ *

+ *

+ */

+

+/**

+ * @author rpras

+ *

+ */

+public class SharedLabelsFileCreation {

+	final private Amalthea model;

+

+	/**

+	 * Constructor LabelFileCreation

+	 *

+	 * @param Model

+	 *            Amalthea Model

+	 * @param srcPath

+	 * @throws IOException

+	 */

+	public SharedLabelsFileCreation(final Amalthea Model, final String srcPath) throws IOException {

+		this.model = Model;

+		System.out.println("Shared Label File Creation Begins");

+		fileCreate(this.model, srcPath);

+		System.out.println("Shared Label File Creation Ends");

+	}

+

+	/**

+	 * FileCreation LabelFileCreation

+	 *

+	 * @param model

+	 * @param srcPath

+	 * @throws IOException

+	 */

+	private static void fileCreate(final Amalthea model, final String srcPath) throws IOException {

+		final EList<Label> labellist = model.getSwModel().getLabels();

+		final String fname1 = srcPath + File.separator + "shared_comms.c";

+		final String fname2 = srcPath + File.separator + "shared_comms.h";

+		final File f2 = new File(srcPath);

+		final File f1 = new File(fname1);

+		final File f3 = new File(fname2);

+		f2.mkdirs();

+		try {

+			f1.createNewFile();

+		}

+		catch (final IOException e) {

+			e.printStackTrace();

+		}

+

+		final File fn1 = f1;

+		@SuppressWarnings("resource")

+		final FileWriter fw = new FileWriter(fn1, true);

+		try {

+			fileUtil.fileMainHeader(f1);

+			sharedLabelFileHeader(f1);

+			headerIncludesSharedLabel(f1);

+			SharedLabelDeclaration(f1, model, labellist);

+		}

+		finally {

+			try {

+				fw.close();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+		}

+		try {

+			fileUtil.fileMainHeader(f3);

+			sharedLabelFileHeaderHead(f3);

+			headerIncludesSharedLabelHead(f3);

+			SharedLabelDeclarationHead(f3, model, labellist);

+		}

+		finally {

+			try {

+				fw.close();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+		}

+	}

+

+	/**

+	 * Title card - LabelFileCreation

+	 *

+	 * @param file

+	 */

+	private static void sharedLabelFileHeader(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("*Title 		:   Shared Label Declaration\n");

+			fw.write("*Description	:	Declaration and Initialisation of Shared Label\n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************/\n\n\n");

+

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * Title card - LabelFileCreation

+	 *

+	 * @param file

+	 */

+	private static void sharedLabelFileHeaderHead(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("*Title 		:   Shared Label Declaration\n");

+			fw.write("*Description	:	Header file for Declaration and Initialisation of Shared Label\n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************/\n\n\n");

+

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * Header inclusion - LabelFileCreation

+	 *

+	 * @param file

+	 */

+	private static void headerIncludesSharedLabelHead(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("#ifndef DEMO_PARALLELLA_SHARED_COMMS_H_\n");

+			fw.write("#define DEMO_PARALLELLA_SHARED_COMMS_H_\n\n");

+

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <stdint.h>\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * Header inclusion - LabelFileCreation

+	 *

+	 * @param file

+	 */

+	private static void headerIncludesSharedLabel(final File file) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include \"shared_comms.h\"\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * Shared Label definition and initialization structure.

+	 *

+	 * @param file

+	 * @param labellist

+	 */

+	private static void SharedLabelDeclaration(final File file, final Amalthea model, final EList<Label> labellist) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);

+			final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+			if (SharedLabelList.size() == 0) {

+				// System.out.println("Shared Label size 0");

+			}

+			else {

+				// System.out.println("Shared Label size

+				// "+SharedLabelList.size());

+				final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+						.LabelTaskMap(model, SharedLabelList);

+				for (final Label share : SharedLabelList) {

+					final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+					final Collection<ProcessingUnit> puList = TaskMap.values();

+					final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+					if (puListUnique.size() > 1) {

+						SharedLabelListSortCore.add(share);

+					}

+				}

+			}

+

+			final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();

+			for (final Label share : SharedLabelListSortCore) {

+				SharedLabelTypeMap.put(share, share.getSize().toString());

+			}

+			final List<String> SharedTypeMapList = new ArrayList<>(

+					SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));

+			final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());

+			for (int k = 0; k < SharedTypeMapList.size(); k++) {

+				final List<Label> SharedLabel = new ArrayList<Label>();

+				final String sh = SharedTypeMapList.get(k);

+				for (final Label s : SharedLabelMapList) {

+					final String ShTy = SharedLabelTypeMap.get(s);

+					if (sh.equals(ShTy)) {

+						SharedLabel.add(s);

+					}

+				}

+				int SharedLabelCounter = SharedLabel.size();

+				if (SharedLabelCounter != 0) {

+

+

+					fw.write(fileUtil.datatype(sh.toString()) + " 	*outbuf_shared" + sh.toString().replace(" ", "")

+							+ "[" + SharedLabelCounter + "];\n\n");

+					fw.write("void shared_label_" + sh.toString().replace(" ", "") + "_init(){\n");

+					fw.write("\toutbuf_shared" + sh.toString().replace(" ", "") + "[0] = ("

+							+ fileUtil.datatype(sh.toString()) + " *) shared_mem_section"

+							+ sh.toString().replace(" ", "") + ";\n");

+					for (int i = 1; i < SharedLabelCounter; i++) {

+						fw.write("\toutbuf_shared" + sh.toString().replace(" ", "") + "[" + i + "]=outbuf_shared"

+								+ sh.toString().replace(" ", "") + "[" + i + "] + 1;\n");

+					}

+					fw.write("\tfor (int i=0;i<" + SharedLabelCounter + ";i++){\n");

+					fw.write("\t\t*outbuf_shared" + sh.toString().replace(" ", "") + "[i] =0;\n");

+					fw.write("\t}\n");

+					fw.write("}\n\n");

+					fw.write("void shared_label_" + sh.toString().replace(" ", "")

+							+ "_write(int label_indx,int payload){\n");

+					// fw.write("\t"+fileUtil.datatype(sh.toString())+"

+					// retval=NULL;\n");

+					fw.write("\t*outbuf_shared" + sh.toString().replace(" ", "") + "[label_indx] = payload;\n");

+					// fw.write("\treturn retval;\n\n");

+					fw.write("}\n\n");

+					fw.write("" + fileUtil.datatype(sh.toString()) + " shared_label_" + sh.toString().replace(" ", "")

+							+ "_read(int label_indx){\n");

+					fw.write("\treturn *outbuf_shared" + sh.toString().replace(" ", "") + "[label_indx];\n");

+					fw.write("}\n\n");

+				}

+				SharedLabelCounter = 0;

+			}

+			fw.write("\n\n\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * Shared Label definition and initialization structure.

+	 *

+	 * @param file

+	 * @param labellist

+	 */

+	private static void SharedLabelDeclarationHead(final File file, final Amalthea model,

+			final EList<Label> labellist) {

+		try {

+			final File fn = file;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);

+			final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+			if (SharedLabelList.size() == 0) {

+				System.out.println("Shared Label size 0");

+			}

+			else {

+				// System.out.println("Shared Label size

+				// "+SharedLabelList.size());

+				final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+						.LabelTaskMap(model, SharedLabelList);

+				for (final Label share : SharedLabelList) {

+					final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+					final Collection<ProcessingUnit> puList = TaskMap.values();

+					final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+					if (puListUnique.size() > 1) {

+						SharedLabelListSortCore.add(share);

+					}

+				}

+			}

+

+			final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();

+			for (final Label share : SharedLabelListSortCore) {

+				SharedLabelTypeMap.put(share, share.getSize().toString());

+			}

+			final List<String> SharedTypeMapList = new ArrayList<>(

+					SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));

+			final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());

+			for (int k = 0; k < SharedTypeMapList.size(); k++) {

+				final List<Label> SharedLabel = new ArrayList<Label>();

+				final String sh = SharedTypeMapList.get(k);

+				for (final Label s : SharedLabelMapList) {

+					final String ShTy = SharedLabelTypeMap.get(s);

+					if (sh.equals(ShTy)) {

+						SharedLabel.add(s);

+					}

+				}

+				int SharedLabelCounter = SharedLabel.size();

+				if (SharedLabelCounter != 0) {

+					fw.write("\n#define shared_mem_section" + sh.toString().replace(" ", "") + "	0x0" + (k + 1)

+							+ "000000\n\n");

+					fw.write("void shared_label_" + sh.toString().replace(" ", "") + "_init();\n");

+					fw.write("void shared_label_" + sh.toString().replace(" ", "")

+							+ "_write(int label_indx,int payload);\n");

+					fw.write("" + fileUtil.datatype(sh.toString()) + " shared_label_" + sh.toString().replace(" ", "")

+							+ "_read(int label_indx);\n");

+				}

+				SharedLabelCounter = 0;

+			}

+			fw.write("\n\n");

+			fw.write("#endif");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	/**

+	 * helper function to get the Amalthea Model

+	 *

+	 */

+	public Amalthea getModel() {

+		return this.model;

+	}

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/TaskFileCreation.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/TaskFileCreation.java
new file mode 100755
index 0000000..96d2815
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/TaskFileCreation.java
@@ -0,0 +1,683 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.math.BigInteger;

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.List;

+import java.util.Set;

+import java.util.stream.Collectors;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Label;

+import org.eclipse.app4mc.amalthea.model.MappingModel;

+import org.eclipse.app4mc.amalthea.model.PeriodicStimulus;

+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;

+import org.eclipse.app4mc.amalthea.model.Runnable;

+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;

+import org.eclipse.app4mc.amalthea.model.Stimulus;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.amalthea.model.Time;

+import org.eclipse.app4mc.amalthea.model.TimeUnit;

+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;

+import org.eclipse.app4mc.amalthea.model.util.HardwareUtil;

+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil;

+import org.eclipse.app4mc.amalthea.model.util.RuntimeUtil.TimeType;

+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;

+import org.eclipse.app4mc.amalthea.model.util.TimeUtil;

+import org.eclipse.app4mc.cdgen.utils.fileUtil;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * Implementation of Task Definition with Cin and Cout Calls.

+ *

+ *

+ */

+

+public class TaskFileCreation {

+	final private Amalthea model;

+

+	/**

+	 * Constructor TaskFileCreation

+	 *

+	 * @param Model

+	 *            - Amalthea Model

+	 * @param srcPath

+	 * @param pthreadFlag

+	 * @param preemptionFlag

+	 * @throws IOException

+	 */

+	public TaskFileCreation(final Amalthea Model, final String srcPath, final String path2, final int configFlag)

+			throws IOException {

+		this.model = Model;

+

+		if ((0x3100 == (0xFF00 & configFlag)) || (0x1300 == (0xFF00 & configFlag))) {

+			System.out.println("Task File Creation Begins");

+			fileCreate(this.model, srcPath, path2, configFlag);

+			System.out.println("Task File Creation Ends");

+		}

+		else {

+			System.out.println("Task File Creation Begins");

+			fileCreatePthread(this.model, srcPath, path2, configFlag);

+			System.out.println("Task File Creation Ends");

+		}

+

+	}

+

+

+	private static void fileCreate(final Amalthea model, final String srcPath, final String path2, final int configFlag)

+			throws IOException {

+		boolean preemptionFlag = false;

+		if (0x0020 == (0x00F0 & configFlag)) {

+			preemptionFlag = true;

+		}

+		else {

+			preemptionFlag = false;

+		}

+		final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();

+		int k = 0;

+		for (final SchedulerAllocation c : CoreNo) {

+			final ProcessingUnit pu = c.getResponsibility().get(0);

+			final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);

+			final List<Task> tasks = new ArrayList<Task>(task);

+			final String fname = srcPath + File.separator + "taskDef" + k + ".c";

+			final File f2 = new File(srcPath);

+			final File f1 = new File(fname);

+			f2.mkdirs();

+			try {

+				f1.createNewFile();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			try {

+				fileUtil.fileMainHeader(f1);

+				taskFileHeader(f1);

+				if ((0x3000 == (0xF000 & configFlag)) & (0x0100 == (0x0F00 & configFlag))) {

+					headerIncludesTaskHeadRMS(f1, k);

+					TaskCounter(f1, tasks);

+					TaskDefinitionRMS(f1, model, tasks, preemptionFlag);

+				}

+				else if ((0x1000 == (0xF000 & configFlag)) & (0x0300 == (0x0F00 & configFlag))) {

+					headerIncludesTaskHeadRMS(f1, k);

+					TaskCounter(f1, tasks);

+					TaskDefinitionFreeRTOS(f1, model, tasks, preemptionFlag);

+				}

+			}

+			finally {

+				try {

+					fw.close();

+				}

+				catch (final IOException e) {

+					e.printStackTrace();

+				}

+			}

+			final String fname2 = srcPath + File.separator + "taskDef" + k + ".h";

+			final File f4 = new File(srcPath);

+			final File f3 = new File(fname2);

+			f4.mkdirs();

+			try {

+				f1.createNewFile();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+

+			final File fn1 = f3;

+			@SuppressWarnings("resource")

+			final FileWriter fw1 = new FileWriter(fn1, true);

+			try {

+				fileUtil.fileMainHeader(f3);

+				taskFileHeader(f3);

+				headerIncludesTaskRMSHead(f3, k);

+				mainStaticTaskDef(f3, tasks);

+

+			}

+			finally {

+				try {

+					fw1.close();

+				}

+				catch (final IOException e) {

+					e.printStackTrace();

+				}

+			}

+			k++;

+		}

+	}

+

+

+	private static void TaskCounter(final File f3, final List<Task> tasks) {

+		try {

+			final File fn = f3;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true); // the true will

+															// append the new

+															// data

+			fw.write("/* Task Counter Declaration. */\n");

+			for (final Task ta : tasks) {

+				fw.write("int taskCount" + ta.getName() + "\t=\t0;\n");

+			}

+			fw.write("\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+

+	private static void fileCreatePthread(final Amalthea model, final String path1, final String path2,

+			final int configFlag) throws IOException {

+		boolean preemptionFlag = false;

+		if (0x0020 == (0x00F0 & configFlag)) {

+			preemptionFlag = true;

+		}

+		else {

+			preemptionFlag = false;

+		}

+		final EList<SchedulerAllocation> CoreNo = model.getMappingModel().getSchedulerAllocation();

+		int k = 0;

+		for (final SchedulerAllocation c : CoreNo) {

+			final ProcessingUnit pu = c.getResponsibility().get(0);

+			final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, model);

+			final List<Task> tasks = new ArrayList<Task>(task);

+			final String fname = path1 + File.separator + "taskDef" + k + ".c";

+			final File f2 = new File(path1);

+			final File f1 = new File(fname);

+			f2.mkdirs();

+			try {

+				f1.createNewFile();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			try {

+				fileUtil.fileMainHeader(f1);

+				taskFileHeader(f1);

+				headerIncludesTaskPthreadHead(f1);

+				TaskDefinitionPthread(f1, tasks, model, preemptionFlag);

+			}

+			finally {

+				try {

+					fw.close();

+				}

+				catch (final IOException e) {

+					e.printStackTrace();

+				}

+			}

+			final String fname2 = path1 + File.separator + "taskDef" + k + ".h";

+			final File f4 = new File(path1);

+			final File f3 = new File(fname2);

+			f4.mkdirs();

+			try {

+				f1.createNewFile();

+			}

+			catch (final IOException e) {

+				e.printStackTrace();

+			}

+			final File fn1 = f3;

+			@SuppressWarnings("resource")

+			final FileWriter fw1 = new FileWriter(fn1, true);

+			try {

+				fileUtil.fileMainHeader(f3);

+				taskFileHeader(f3);

+				headerIncludesPthreadTask(f3, k);

+				mainStaticTaskPthreadDef(f3, tasks);

+			}

+			finally {

+				try {

+					fw1.close();

+				}

+				catch (final IOException e) {

+					e.printStackTrace();

+				}

+			}

+			k++;

+		}

+	}

+

+	private static void headerIncludesPthreadTask(final File f3, final int k) {

+		try {

+			final File fn = f3;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true); // the true will

+															// append the new

+															// data

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdio.h>\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <string.h>\n\n");

+			fw.write("#include <stdint.h>\n\n");

+			fw.write("/* Scheduler includes. */\n");

+			fw.write("#include \"runnable" + k + ".h\"\n");

+			fw.write("#include \"label" + k + ".h\"\n");

+

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+

+	}

+

+	private static void mainStaticTaskPthreadDef(final File f3, final List<Task> tasks) {

+		try {

+			final File fn = f3;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Static definition of the tasks. */\n");

+			for (final Task task : tasks) {

+				fw.write("void v" + task.getName() + "( void *t );\n");

+			}

+			fw.write("\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+

+	}

+

+	private static void TaskDefinitionPthread(final File f1, final List<Task> tasks, final Amalthea model,

+			final boolean preemptionFlag) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			for (final Task task : tasks) {

+				final List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);

+				final ArrayList<Label> labellist1 = new ArrayList<Label>();

+				for (final Runnable run : runnablesOfTask) {

+					final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);

+					labellist1.addAll(labellist);

+				}

+				final List<Label> listWithoutDuplicates2 = labellist1.stream().distinct().collect(Collectors.toList());

+				for (final Label lab : listWithoutDuplicates2) {

+					final String type = fileUtil.datatype(lab.getSize().toString());

+					fw.write("\t\textern\t" + type + "\t" + lab.getName() + ";\n");

+				}

+				fw.write("\n\n\n");

+				for (final Label lab : listWithoutDuplicates2) {

+					final String type = fileUtil.datatype(lab.getSize().toString());

+					fw.write("\t\textern\t" + type + "\t" + lab.getName() + "_" + task.getName() + ";\n");

+				}

+				fw.write("\n\n\n");

+

+				fw.write("\n\tvoid cIN_" + task.getName() + "()\n\t{\n");

+				for (final Label lab : listWithoutDuplicates2) {

+					fw.write("\t\t" + lab.getName() + "_" + task.getName() + "\t=\t" + lab.getName() + ";\n");

+				}

+				fw.write("\t}\n");

+				fw.write("\n\tvoid cOUT_" + task.getName() + "()\n\t{\n");

+				final ArrayList<Label> labellist2 = new ArrayList<Label>();

+				for (final Runnable run : runnablesOfTask) {

+					final Set<Label> labellist = SoftwareUtil.getWriteLabelSet(run, null);

+					labellist2.addAll(labellist);

+				}

+				final List<Label> listWithoutDuplicates1 = labellist2.stream().distinct().collect(Collectors.toList());

+

+				for (final Label lab : listWithoutDuplicates1) {

+					fw.write("\t\t" + lab.getName() + "\t=\t" + lab.getName() + "_" + task.getName() + ";\n");

+				}

+				fw.write("\t}\n");

+				fw.write("\n\tvoid v" + task.getName() + "( void *t )" + "\n\t{\n");

+				final MappingModel mappingModel = model.getMappingModel();

+				if (mappingModel != null) {

+					final List<ProcessingUnit> processingUnits = HardwareUtil

+							.getModulesFromHwModel(ProcessingUnit.class, model);

+					final ArrayList<ProcessingUnit> localPU = new ArrayList<ProcessingUnit>();

+					localPU.addAll(processingUnits);

+

+					final HashMap<ProcessingUnit, Long> CoreMap = new HashMap<ProcessingUnit, Long>();

+					long count = 0;

+					for (final ProcessingUnit p : localPU) {

+						CoreMap.put(p, count);

+						count++;

+					}

+					final ProcessingUnit pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();

+					final Long coreID = CoreMap.get(pu);

+					fw.write("\t\tcpu_set_t cpuset;\n");

+					fw.write("\t\tint cpu = " + coreID + ";\n");

+					fw.write("\t\tCPU_ZERO(&cpuset);\n");

+					fw.write("\t\tCPU_SET( cpu , &cpuset);\n");

+					final Set<ProcessingUnit> procUniSet = DeploymentUtil.getAssignedCoreForProcess(task, model);

+					List<ProcessingUnit> procUniList = null;

+					if (procUniSet != null) {

+						procUniList = new ArrayList<ProcessingUnit>(procUniSet);

+					}

+					if (procUniList != null) {

+						procUniList.get(0);

+					}

+					fw.write("\t\tsched_setaffinity(0, sizeof(cpuset), &cpuset);\n\n");

+				}

+				fw.write("\t\tfor( ;; )\n\t\t{\n");

+				fw.write("\t\t\tsuspendMe ();\n");

+				fw.write("\t\tprint_affinity();\n");

+				fw.write("\t\t\tvDisplayMessagePthread( \"" + task.getName() + " is running\\r\\n\" );\n");

+				fw.write("\t\t\t/* Cin - Create local variables and copy the actual variable to them */\n");

+				fw.write("\t\t\tcIN_" + task.getName() + "();\n");

+				if (preemptionFlag == true) {

+					fw.write("\t\t\tresumeMe ();\n");

+				}

+				fw.write("\n\t\t\t/*Runnable calls */\n");

+				for (final Runnable run : runnablesOfTask) {

+					fw.write("\t\t\t" + run.getName() + "();\n");

+				}

+				fw.write("\n\t\t\t/* Cout - Write back the local variables back to the actual variables */\n");

+				if (preemptionFlag == true) {

+					fw.write("\t\t\tsuspendMe ();\n");

+				}

+				fw.write("\t\t\tcOUT_" + task.getName() + "();\n");

+				fw.write("\t\t\tresumeMe ();\n");

+				fw.write("\t\t\tsleepTimerMs(DELAY_MULT*NULL);\n");

+				fw.write("\t\t\tpthread_exit((void*) t);\n");

+				final Time tasktime = fileUtil.getRecurrence(task);

+				if (tasktime != null) {

+					// TimeUtil.getAsTimeUnit(fileUtil.getRecurrence(task),

+					// null);

+

+				}

+				fw.write("\t\t}\n");

+				fw.write("\t}\n\n");

+			}

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void taskFileHeader(final File f1) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("*Title 		:   Task Definition\n");

+			fw.write("*Description	:	Task Definition with Task Structure\n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************/\n\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void headerIncludesTaskPthreadHead(final File f1) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("#define _GNU_SOURCE\n\n");

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdio.h>\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <string.h>\n");

+			fw.write("#include <pthread.h>\n");

+			fw.write("#include <sched.h>\n");

+			fw.write("#include <stdint.h>\n\n");

+

+			// fw.write("#define DELAY_MULT 100\n\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void headerIncludesTaskRMSHead(final File f1, final int k) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Standard includes. */\n");

+			fw.write("#include <stdio.h>\n");

+			fw.write("#include <stdlib.h>\n");

+			fw.write("#include <string.h>\n");

+			fw.write("#include <stdint.h>\n\n");

+			fw.write("/* Scheduler includes. */\n");

+			fw.write("#include \"FreeRTOS.h\"\n");

+			fw.write("#include \"queue.h\"\n");

+			fw.write("#include \"croutine.h\"\n");

+			fw.write("#include \"debugFlags.h\"\n");

+			fw.write("#include \"task.h\"\n");

+			fw.write("#include \"ParallellaUtils.h\"\n");

+			fw.write("#include \"label" + k + ".h\"\n");

+			fw.write("#include \"runnable" + k + ".h\"\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void headerIncludesTaskHeadRMS(final File f1, final int k) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("#include \"taskDef" + k + ".h\"\n\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	public static void mainStaticTaskDef(final File f1, final List<Task> tasks) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("/* Static definition of the tasks. */\n");

+			for (final Task task : tasks) {

+				fw.write("void v" + task.getName() + "( );\n");

+			}

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	public static HashMap<Task, Integer> TaskIndexMapping(final Amalthea model) {

+		final EList<Task> tasks = model.getSwModel().getTasks();

+		final HashMap<Task, Integer> TaskMapping = new HashMap<Task, Integer>();

+		int i = 0;

+		for (final Task Ta : tasks) {

+			TaskMapping.put(Ta, i);

+			i++;

+		}

+		return TaskMapping;

+	}

+

+

+	private static void TaskDefinitionRMS(final File f1, final Amalthea model, final List<Task> tasks,

+			final boolean preemptionFlag) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			final HashMap<Task, Integer> taskIndex = TaskIndexMapping(model);

+			for (final Task task : tasks) {

+				final Integer taskCount = taskIndex.get(task);

+				List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);

+				runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());

+				fw.write("\n");

+				final List<Label> taskLabelList = TaskSpecificLabel(model, task);

+				for (final Label lab : taskLabelList) {

+					final String type = fileUtil.datatype(lab.getSize().toString());

+					fw.write("\t" + type + "\t" + lab.getName() + ";\n");

+				}

+				fw.write("\n");

+				fw.write("\n\n");

+				fw.write("\n\tvoid v" + task.getName() + "()" + "\n\t{\n");

+

+				// fw.write("\n\n");

+				fw.write("\t\tupdateDebugFlag(700);\n");

+				fw.write("\t\ttraceTaskPasses(1,1);\n");

+				fw.write("\n\t\t\t/*Runnable calls */\n");

+				for (final Runnable run : runnablesOfTask) {

+					fw.write("\t\t\t" + run.getName() + "();\n");

+				}

+				final MappingModel mappingModel = model.getMappingModel();

+				ProcessingUnit pu = null;

+				if (mappingModel != null) {

+					pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();

+					Time taskTime = RuntimeUtil.getExecutionTimeForProcess(task, pu, null, TimeType.WCET);

+					taskTime = TimeUtil.convertToTimeUnit(taskTime, TimeUnit.MS);

+					final BigInteger sleepTime = taskTime.getValue();

+					final BigInteger b2 = new BigInteger("1000");

+					final int comparevalue = sleepTime.compareTo(b2);

+					if (comparevalue < 0) {

+						fw.write("\n\t\t\tsleepTimerMs(1 , 1" + (taskCount + 1) + ");\n");

+					}

+					else {

+						fw.write("\n\t\t\tsleepTimerMs(" + sleepTime + ", " + taskCount + 1 + ");\n");

+					}

+

+				}

+				fw.write("\n\t\t\ttaskCount" + task.getName() + "++;");

+				fw.write("\n\t\t\ttraceTaskPasses(" + taskCount + ", taskCount" + task.getName() + ");");

+				fw.write("\n\t\t\ttraceRunningTask(0);\n");

+				fw.write("\t}\n\n");

+			}

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	private static void TaskDefinitionFreeRTOS(final File f1, final Amalthea model, final List<Task> tasks,

+			final boolean preemptionFlag) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			final HashMap<Task, Integer> taskIndex = TaskIndexMapping(model);

+			for (final Task task : tasks) {

+				Integer taskCount = taskIndex.get(task);

+				List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);

+				runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());

+				final List<Label> taskLabelList = TaskSpecificLabel(model, task);

+				fw.write("\n");

+				for (final Label lab : taskLabelList) {

+					final String type = fileUtil.datatype(lab.getSize().toString());

+					fw.write("\t\t" + type + "\t" + lab.getName() + ";\n");

+				}

+				fw.write("\n");

+				fw.write("\n\tvoid v" + task.getName() + "()" + "\n\t{\n");

+				fw.write("\tportTickType xLastWakeTime=xTaskGetTickCount();\n");

+				fw.write("\n\t\tfor( ;; )\n\t\t{\n");

+				fw.write("\t\tupdateDebugFlag(700);\n");

+				fw.write("\t\ttraceTaskPasses(1,1);\n");

+				fw.write("\t\t\t/* Cin - Create local variables and copy the actual variable to them */\n");

+				fw.write("\t\t\ttaskENTER_CRITICAL ();\n");

+				fw.write("\t\t\tcIN_" + task.getName() + "();\n");

+				fw.write("\t\t\ttaskEXIT_CRITICAL ();\n");

+				fw.write("\n\t\t\t/*Runnable calls */\n");

+				for (final Runnable run : runnablesOfTask) {

+					fw.write("\t\t\t" + run.getName() + "();\n");

+				}

+				fw.write("\n\t\t\t/* Cout - Write back the local variables back to the actual variables */\n");

+				fw.write("\t\t\ttaskENTER_CRITICAL ();\n");

+				fw.write("\t\t\tcOUT_" + task.getName() + "();\n");

+				fw.write("\t\t\ttaskEXIT_CRITICAL ();\n");

+				final MappingModel mappingModel = model.getMappingModel();

+				ProcessingUnit pu = null;

+				if (mappingModel != null) {

+					pu = DeploymentUtil.getAssignedCoreForProcess(task, model).iterator().next();

+					Time taskTime = RuntimeUtil.getExecutionTimeForProcess(task, pu, null, TimeType.WCET);

+					taskTime = TimeUtil.convertToTimeUnit(taskTime, TimeUnit.MS);

+					final BigInteger sleepTime = taskTime.getValue();

+					final BigInteger b2 = new BigInteger("1000");

+					final int comparevalue = sleepTime.compareTo(b2);

+					if (comparevalue < 0) {

+						fw.write("\n\t\t\tsleepTimerMs(1 , 1" + (taskCount + 1) + ");\n");

+					}

+					else {

+						fw.write("\n\t\t\tsleepTimerMs(" + sleepTime + ", " + taskCount + 1 + ");\n");

+					}

+					taskCount++;

+				}

+				fw.write("\n\t\t\ttaskCount" + task.getName() + "++;");

+				fw.write("\n\t\t\ttraceTaskPasses(" + taskCount + ", taskCount" + task.getName() + ");");

+				fw.write("\n\t\t\ttraceRunningTask(0);\n");

+				final EList<Stimulus> Stimuli = model.getStimuliModel().getStimuli();

+				for (final Stimulus s : Stimuli) {

+					if (s instanceof PeriodicStimulus) {

+						if (task.getStimuli().get(0) == s) {

+							fw.write("\t\t\tvTaskDelayUntil(&xLastWakeTime, "

+									+ ((PeriodicStimulus) s).getRecurrence().getValue() + ");\n");

+						}

+					}

+				}

+				fw.write("\t\t}\n");

+				fw.write("\t}\n\n");

+			}

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+	}

+

+	/**

+	 * Shared Label definition and initialization structure.

+	 *

+	 * @param file

+	 * @param labellist

+	 */

+	public static List<Label> TaskSpecificLabel(final Amalthea model, final Task tasks) {

+		List<Label> SharedLabelList = new ArrayList<Label>(SoftwareUtil.getAccessedLabelSet(tasks, null));

+		SharedLabelList = SharedLabelList.stream().distinct().collect(Collectors.toList());

+		final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+		if (SharedLabelList.size() == 0) {

+			// System.out.println("Shared Label size 0");

+		}

+		else {

+			final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+					.LabelTaskMap(model, SharedLabelList);

+			for (final Label share : SharedLabelList) {

+				final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+				final Set<Task> taskList = TaskMap.keySet();

+				final Collection<ProcessingUnit> puList = TaskMap.values();

+				final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+				if (!((puListUnique.size() == 1 && taskList.size() > 1) || (puListUnique.size() > 1))) {

+					SharedLabelListSortCore.add(share);

+				}

+			}

+		}

+		return SharedLabelListSortCore;

+	}

+

+	/**

+	 * helper function to get the Amalthea Model

+	 *

+	 */

+	public Amalthea getModel() {

+		return this.model;

+	}

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFileCreateGUI.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFileCreateGUI.java
new file mode 100755
index 0000000..1f71463
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFileCreateGUI.java
@@ -0,0 +1,322 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ *   SPDX-License-Identifier: EPL-2.0
+ *
+ *   Contributors:
+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Color;
+import java.awt.Desktop;
+import java.awt.EventQueue;
+import java.awt.Font;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.sql.Timestamp;
+
+import javax.imageio.ImageIO;
+import javax.swing.ButtonGroup;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JRadioButton;
+import javax.swing.JSeparator;
+import javax.swing.JTextField;
+import javax.swing.filechooser.FileNameExtensionFilter;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.amalthea.model.io.AmaltheaLoader;
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ */
+
+public class checkFileCreateGUI {
+	JFrame frame;
+
+	public static void main(final String[] args) {
+		EventQueue.invokeLater(new Runnable() {
+			@SuppressWarnings("null")
+			@Override
+			public void run() {
+				checkFileCreateGUI window = null;
+				try {
+					window = new checkFileCreateGUI();
+				}
+				catch (final IOException e) {
+					e.printStackTrace();
+				}
+				window.frame.setVisible(true);
+				window.frame.setTitle("CDGen");
+
+			}
+		});
+
+	}
+
+	public checkFileCreateGUI() throws IOException {
+		initialize();
+	}
+
+	int modelIndex;
+	String fileInput;
+	String fileInput1;
+	JTextField txtFieldScheduler = new JTextField("FreeRTOS / RMS / POSIX Browse path");
+	JTextField txtFieldModel = new JTextField("Amalthea Model Browse path");
+
+	private void initialize() throws IOException {
+		this.frame = new JFrame();
+		this.frame.setBounds(100, 100, 864, 272);
+		this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+		this.frame.getContentPane().setLayout(null);
+
+		final JRadioButton cdgenFreeRTOS = new JRadioButton("FreeRTOS");
+		cdgenFreeRTOS.setBounds(40, 80, 145, 25);
+		this.frame.getContentPane().add(cdgenFreeRTOS);
+
+		final JRadioButton cdgenPosix = new JRadioButton("POSIX");
+		cdgenPosix.setBounds(40, 110, 145, 25);
+		this.frame.getContentPane().add(cdgenPosix);
+
+		final JRadioButton cdgenCustom = new JRadioButton("RMS(Rate Monotonic)");
+		cdgenCustom.setBounds(40, 140, 210, 25);
+		this.frame.getContentPane().add(cdgenCustom);
+
+		final ButtonGroup group = new ButtonGroup();
+		group.add(cdgenFreeRTOS);
+		group.add(cdgenPosix);
+		group.add(cdgenCustom);
+
+		final JRadioButton cdgenCooperative = new JRadioButton("Cooperative");
+		cdgenCooperative.setBounds(190, 80, 145, 25);
+		this.frame.getContentPane().add(cdgenCooperative);
+
+		final JRadioButton cdgenPreemptive = new JRadioButton("Preemptive");
+		cdgenPreemptive.setBounds(190, 110, 145, 25);
+		this.frame.getContentPane().add(cdgenPreemptive);
+
+		final ButtonGroup group3 = new ButtonGroup();
+		group3.add(cdgenCooperative);
+		group3.add(cdgenPreemptive);
+		final BufferedImage browseButtonIconScheduler = ImageIO.read(new File("./cdgen.graphics/browse.png"));
+		final JButton btnBrowseScheduler = new JButton(new ImageIcon(browseButtonIconScheduler));
+		final JFileChooser fc = new JFileChooser();
+		btnBrowseScheduler.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(final ActionEvent e) {
+				if (e.getSource() == btnBrowseScheduler) {
+					final int returnVal = fc.showOpenDialog(checkFileCreateGUI.this.frame);
+					if (returnVal == JFileChooser.APPROVE_OPTION) {
+						final File file = fc.getCurrentDirectory();
+						checkFileCreateGUI.this.fileInput = file.getPath();
+						checkFileCreateGUI.this.txtFieldScheduler.setText(checkFileCreateGUI.this.fileInput);
+					}
+				}
+			}
+		});
+		btnBrowseScheduler.setBounds(673, 75, 120, 35);
+		this.frame.getContentPane().add(btnBrowseScheduler);
+
+		final BufferedImage browseButtonIconModel = ImageIO.read(new File("./cdgen.graphics/browse.png"));
+		final JButton btnBrowseModel = new JButton(new ImageIcon(browseButtonIconModel));
+		final JFileChooser fc1 = new JFileChooser();
+		// final String fileInput1;
+		btnBrowseModel.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(final ActionEvent e) {
+
+				if (e.getSource() == btnBrowseModel) {
+					final FileNameExtensionFilter filter = new FileNameExtensionFilter("*.amxmi", "*.amxmi");
+					fc1.addChoosableFileFilter(filter);
+					fc1.setMultiSelectionEnabled(false);
+					// fc1.showOpenDialog(null);
+					final int returnVal = fc1.showOpenDialog(checkFileCreateGUI.this.frame);
+					// System.out.println("\nRam " +
+					// fileUtil.getFileExtension(fc1.getSelectedFile()));
+					// if(fileUtil.getFileExtension(fc1.getSelectedFile())=="amxmi"){
+					if (returnVal == JFileChooser.APPROVE_OPTION) {
+						final File file = fc1.getSelectedFile();
+						checkFileCreateGUI.this.fileInput1 = file.getPath();
+						checkFileCreateGUI.this.txtFieldModel.setText(checkFileCreateGUI.this.fileInput1);
+					}
+					/*
+					 * }else { JOptionPane.showMessageDialog(null,
+					 * " choose a file with \".amxmi\" file ","Wrong model file"
+					 * ,2); }
+					 */
+				}
+			}
+		});
+		btnBrowseModel.setBounds(673, 130, 120, 35);
+		this.frame.getContentPane().add(btnBrowseModel);
+		final BufferedImage helpButtonIcon = ImageIO.read(new File("./cdgen.graphics/help.png"));
+		final JButton btnHelp = new JButton(new ImageIcon(helpButtonIcon));
+		btnHelp.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(final ActionEvent e) {
+				try {
+					Desktop.getDesktop()
+							.browse(new URL("https://cdgendoc.readthedocs.io/en/latest/GUI_Layout.html").toURI());
+				}
+				catch (final Exception e1) {
+					e1.printStackTrace();
+				}
+			}
+		});
+		btnHelp.setBounds(800, 10, 30, 30);
+		this.frame.getContentPane().add(btnHelp);
+
+		this.txtFieldScheduler.setBounds(370, 80, 280, 25);
+		this.frame.getContentPane().add(this.txtFieldScheduler);
+
+
+		this.txtFieldModel.setBounds(370, 140, 280, 25);
+		this.frame.getContentPane().add(this.txtFieldModel);
+
+
+		final BufferedImage startButtonIcon = ImageIO.read(new File("./cdgen.graphics/start.png"));
+		final JButton btnSelectTasks = new JButton(new ImageIcon(startButtonIcon));
+		btnSelectTasks.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(final ActionEvent e) {
+				// File inputFile = new File();
+				// String inputFile = Constants.DEMOCARMULTI;
+				final Amalthea model = AmaltheaLoader
+						.loadFromFileNamed(checkFileCreateGUI.this.txtFieldModel.getText());
+				System.out.println("\n Model file " + checkFileCreateGUI.this.txtFieldModel.getText());
+				if (model == null) {
+					System.out.println("Error: No model loaded!");
+					return;
+				}
+				final String path = System.getProperty("user.dir");
+				String timestamp = new Timestamp(System.currentTimeMillis()).toString();
+				timestamp = timestamp.substring(0, timestamp.length() - 6).replaceAll(":", "");
+				timestamp = timestamp.replaceAll("-", "_");
+				timestamp = timestamp.replaceAll(" ", "_");
+				final File theDir = new File(timestamp);
+				if (!theDir.exists()) {
+					System.out.println("creating directory: " + theDir.getName());
+					boolean result = false;
+					try {
+						theDir.mkdir();
+						result = true;
+					}
+					catch (final SecurityException se) {
+						System.exit(0);
+					}
+					if (result) {
+						System.out.println("DIR created");
+					}
+				}
+				final String path1 = path + "/" + timestamp;
+				final String path2 = checkFileCreateGUI.this.txtFieldScheduler.getText();
+				int configFlag = 0xFFFF;
+				/*
+				 *
+				 * 0X1000 ==> FreeRTOS 0X2000 ==> POSIX 0x3000 ==> RMS
+				 *
+				 * 0X0010 ==> Cooperative 0X0020 ==> Preemptive
+				 *
+				 * FreeRTOS == Cooperative == 0x1X10 FreeRTOS == Preemptive ==
+				 * 0x1X20 POSIX == Cooperative == 0x2X10 POSIX == Preemptive ==
+				 * 0x2X20 RMS == Cooperative == 0x3X10 RMS == Preemptive ==
+				 * 0x3X20 X == Don't care
+				 */
+
+				System.out.println("############################################################");
+				if (cdgenFreeRTOS.isSelected() & cdgenPreemptive.isSelected()) {
+					configFlag = 0x1320;
+					System.out.println("\t\tFreeRTOS\tPreemptive");
+					System.out.println("############################################################");
+					new checkFreeRTOSConfiguration(model, path1, path2, configFlag);
+				}
+				else if (cdgenFreeRTOS.isSelected() & cdgenCooperative.isSelected()) {
+					configFlag = 0x1310;
+					System.out.println("\t\tFreeRTOS\tCooperative");
+					System.out.println("############################################################");
+					new checkFreeRTOSConfiguration(model, path1, path2, configFlag);
+				}
+				else if (cdgenPosix.isSelected() & cdgenPreemptive.isSelected()) {
+					configFlag = 0x2320;
+					System.out.println("\t\tPosix\tPreemptive");
+					System.out.println("############################################################");
+					new checkPOSIXConfiguration(model, path1, path2, configFlag);
+				}
+				else if (cdgenPosix.isSelected() & cdgenCooperative.isSelected()) {
+					configFlag = 0x2310;
+					System.out.println("\t\tPosix\tCooperative");
+					System.out.println("############################################################");
+					new checkPOSIXConfiguration(model, path1, path2, configFlag);
+				}
+				else if (cdgenCustom.isSelected() & cdgenPreemptive.isSelected()) {
+					configFlag = 0x3120;
+					System.out.println("\t\tRMS\tPreemptive");
+					System.out.println("############################################################");
+					new checkRMSConfiguration(model, path1, path2, configFlag);
+				}
+				else if (cdgenCustom.isSelected() & cdgenCooperative.isSelected()) {
+					configFlag = 0x3110;
+					System.out.println("\t\tRMS\tCooperative");
+					System.out.println("############################################################");
+					new checkRMSConfiguration(model, path1, path2, configFlag);
+				}
+				else {
+					System.out.println("Configuration Not Defined!");
+				}
+			}
+		});
+		btnSelectTasks.setBounds(190, 190, 120, 35);
+		this.frame.getContentPane().add(btnSelectTasks);
+		final BufferedImage closeButtonIcon = ImageIO.read(new File("./cdgen.graphics/close.png"));
+		final JButton btnClose = new JButton(new ImageIcon(closeButtonIcon));
+		btnClose.addActionListener(new ActionListener() {
+			@Override
+			public void actionPerformed(final ActionEvent e) {
+				System.exit(0);
+			}
+		});
+		btnClose.setBounds(370, 190, 120, 35);
+		this.frame.getContentPane().add(btnClose);
+		final JLabel lblAllTasks = new JLabel("OS Options");
+		lblAllTasks.setFont(new Font("Tahoma", Font.BOLD, 13));
+		lblAllTasks.setBounds(40, 55, 110, 16);
+		this.frame.getContentPane().add(lblAllTasks);
+
+		final JLabel lblModelSelection = new JLabel("Model selection");
+		lblModelSelection.setFont(new Font("Tahoma", Font.BOLD, 13));
+		lblModelSelection.setBounds(370, 110, 145, 25);
+		this.frame.getContentPane().add(lblModelSelection);
+
+		final JLabel lblSourcePath = new JLabel("Source Path");
+		lblSourcePath.setFont(new Font("Tahoma", Font.BOLD, 13));
+		lblSourcePath.setBounds(370, 50, 145, 25);
+		this.frame.getContentPane().add(lblSourcePath);
+
+		final JLabel lblResponsetime = new JLabel("Task Preemption");
+		lblResponsetime.setFont(new Font("Tahoma", Font.BOLD, 13));
+		lblResponsetime.setBounds(190, 55, 150, 16);
+		this.frame.getContentPane().add(lblResponsetime);
+
+		final JLabel lblPerformanceMetric = new JLabel("CDGen - Code Generator for APP4MC");
+		lblPerformanceMetric.setForeground(Color.ORANGE);
+		lblPerformanceMetric.setFont(new Font("Tahoma", Font.BOLD, 20));
+		lblPerformanceMetric.setBounds(27, 13, 450, 30);
+		this.frame.getContentPane().add(lblPerformanceMetric);
+
+		final JSeparator separator = new JSeparator();
+		separator.setBounds(12, 42, 822, 272);
+		this.frame.getContentPane().add(separator);
+	}
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFreeRTOSConfiguration.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFreeRTOSConfiguration.java
new file mode 100644
index 0000000..28b8fc0
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkFreeRTOSConfiguration.java
@@ -0,0 +1,124 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ *   SPDX-License-Identifier: EPL-2.0
+ *
+ *   Contributors:
+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Desktop;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Paths;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.cdgen.FreeRTOSConfigFileCreation;
+import org.eclipse.app4mc.cdgen.LabelFileCreation;
+import org.eclipse.app4mc.cdgen.MainRMSFileCreation;
+import org.eclipse.app4mc.cdgen.MakeFileCreation;
+import org.eclipse.app4mc.cdgen.RunFileCreation;
+import org.eclipse.app4mc.cdgen.SharedLabelsFileCreation;
+import org.eclipse.app4mc.cdgen.TaskFileCreation;
+import org.eclipse.app4mc.cdgen.test.testTaskStructure;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ *
+ */
+
+public class checkFreeRTOSConfiguration {
+	public checkFreeRTOSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+			final int configFlag) {
+		FreeRTOSConfiguration(model, srcPath, headerPath, configFlag);
+	}
+
+	public void FreeRTOSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+			final int configFlag) {
+		try {
+			// String path = System.getProperty("user.dir");
+			// create new file
+			final File l_SourceDirectory = new File(headerPath);
+			// array of files and directory
+			final String[] filesName = l_SourceDirectory.list();
+			// for each name in the path array
+			for (final String pathi : filesName) {
+				final File SourceFile = new File(l_SourceDirectory.toString() + "/" + pathi);
+				final File DestinationFile = new File(Paths.get(srcPath).toString() + "/" + pathi);
+				if (fileUtil.getFileExtension(SourceFile) == "c" || fileUtil.getFileExtension(SourceFile) == "h"
+						|| fileUtil.getFileExtension(SourceFile) == "") {
+					com.google.common.io.Files.copy(SourceFile, DestinationFile);
+				}
+			}
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new MainRMSFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new RunFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new MakeFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new FreeRTOSConfigFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new TaskFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new SharedLabelsFileCreation(model, srcPath);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new LabelFileCreation(model, srcPath);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new testTaskStructure(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		System.out.println("Generation completed, Check path 	" + srcPath);
+		// TODO: Set hyperlink for path
+		// System.out.println("<a href=\"http://www.google.com\">whatever</a>");
+		try {
+			Desktop.getDesktop().open(new File(srcPath));
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		System.exit(0);
+	}
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkPOSIXConfiguration.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkPOSIXConfiguration.java
new file mode 100644
index 0000000..4bb4628
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkPOSIXConfiguration.java
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ *   SPDX-License-Identifier: EPL-2.0
+ *
+ *   Contributors:
+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Desktop;
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.cdgen.FreeRTOSConfigFileCreation;
+import org.eclipse.app4mc.cdgen.LabelFileCreation;
+import org.eclipse.app4mc.cdgen.MainFileCreation;
+import org.eclipse.app4mc.cdgen.MakeFileCreation;
+import org.eclipse.app4mc.cdgen.RunFileCreation;
+import org.eclipse.app4mc.cdgen.TaskFileCreation;
+import org.eclipse.app4mc.cdgen.test.testTaskStructure;
+
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ *
+ *
+ */
+
+public class checkPOSIXConfiguration {
+	public checkPOSIXConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+			final int configFlag) {
+		POSIXConfiguration(model, srcPath, headerPath, configFlag);
+	}
+
+	public void POSIXConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+			final int configFlag) {
+		try {
+			new MainFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new RunFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new LabelFileCreation(model, srcPath);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new FreeRTOSConfigFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new TaskFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new TaskFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new MakeFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new testTaskStructure(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+
+
+		System.out.println("Generation completed, Check path 	" + srcPath);
+		// TODO: Set hyperlink for path
+		try {
+			Desktop.getDesktop().open(new File(srcPath));
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+
+		System.exit(0);
+
+	}
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkRMSConfiguration.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkRMSConfiguration.java
new file mode 100644
index 0000000..85b3211
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/checks/checkRMSConfiguration.java
@@ -0,0 +1,144 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *
+ *   SPDX-License-Identifier: EPL-2.0
+ *
+ *   Contributors:
+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.app4mc.cdgen.checks;
+
+import java.awt.Desktop;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Paths;
+
+import org.eclipse.app4mc.amalthea.model.Amalthea;
+import org.eclipse.app4mc.cdgen.ArmCodeFileCreation;
+import org.eclipse.app4mc.cdgen.FreeRTOSConfigFileCreation;
+import org.eclipse.app4mc.cdgen.LabelFileCreation;
+import org.eclipse.app4mc.cdgen.MainRMSFileCreation;
+import org.eclipse.app4mc.cdgen.MakeFileCreation;
+import org.eclipse.app4mc.cdgen.RunFileCreation;
+import org.eclipse.app4mc.cdgen.SharedLabelsFileCreation;
+import org.eclipse.app4mc.cdgen.TaskFileCreation;
+import org.eclipse.app4mc.cdgen.test.testTaskStructure;
+import org.eclipse.app4mc.cdgen.utils.fileUtil;
+
+/**
+ * Implementation of GUI Design and Action on Button Click.
+ *
+ *
+ */
+
+public class checkRMSConfiguration {
+
+
+	public checkRMSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+			final int configFlag) {
+		RMSConfiguration(model, srcPath, headerPath, configFlag);
+	}
+
+	public void RMSConfiguration(final Amalthea model, final String srcPath, final String headerPath,
+			final int configFlag) {
+		/*
+		 * try { String path = System.getProperty("user.dir"); File
+		 * l_SourceDirectory = null; if(0x3110 == (configFlag & 0xFFF0)) {
+		 * l_SourceDirectory = new File(path + "/ref/rms_coop/"); }else
+		 * if(0x3120 == (configFlag & 0xFFF0)){ l_SourceDirectory = new
+		 * File(path + "/ref/freertos_preem/"); } String[] filesName =
+		 * l_SourceDirectory.list(); for(String pathi:filesName) { File
+		 * SourceFile = new File(l_SourceDirectory.toString() +"/" + pathi);
+		 * File DestinationFile = new File(Paths.get(srcPath).toString() + "/" +
+		 * pathi ); com.google.common.io.Files.copy(SourceFile , DestinationFile
+		 * ); } } catch (IOException e1) { e1.printStackTrace(); }
+		 */
+		try {
+			// String path = System.getProperty("user.dir");
+			// create new file
+			final File l_SourceDirectory = new File(headerPath);
+			// array of files and directory
+			final String[] filesName = l_SourceDirectory.list();
+			// for each name in the path array
+			for (final String pathi : filesName) {
+				final File SourceFile = new File(l_SourceDirectory.toString() + "/" + pathi);
+				final File DestinationFile = new File(Paths.get(srcPath).toString() + "/" + pathi);
+				if (fileUtil.getFileExtension(SourceFile) == "c" || fileUtil.getFileExtension(SourceFile) == "h"
+						|| fileUtil.getFileExtension(SourceFile) == "") {
+					com.google.common.io.Files.copy(SourceFile, DestinationFile);
+				}
+			}
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new MainRMSFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new RunFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new TaskFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new FreeRTOSConfigFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new MakeFileCreation(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new SharedLabelsFileCreation(model, srcPath);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new LabelFileCreation(model, srcPath);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new ArmCodeFileCreation(model, srcPath, headerPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		try {
+			new testTaskStructure(model, srcPath, configFlag);
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		System.out.println("Generation completed, Check path 	" + srcPath);
+		// TODO: Set hyperlink for path
+		try {
+			Desktop.getDesktop().open(new File(srcPath));
+		}
+		catch (final IOException e1) {
+			e1.printStackTrace();
+		}
+		System.exit(0);
+	}
+
+}
diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testLabel.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testLabel.java
new file mode 100644
index 0000000..49a84a8
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testLabel.java
@@ -0,0 +1,99 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen.test;

+

+import java.io.BufferedReader;

+import java.io.File;

+import java.io.FileReader;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Set;

+import java.util.stream.Collectors;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Label;

+import org.eclipse.app4mc.amalthea.model.Runnable;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;

+

+/**

+ * Implementation of testing Task, Runnable structure and Label types.

+ *

+ */

+

+public class testLabel

+

+{

+

+	public testLabel(final Amalthea Model, final String path1, final int k, final List<Task> taskmod)

+			throws IOException {

+		fileTestLabel(Model, path1, k, taskmod);

+	}

+

+	private void fileTestLabel(final Amalthea model2, final String path1, final int k, final List<Task> tasks)

+			throws IOException {

+		final String fname = path1 + File.separator + "label" + k + ".c";

+		// EList<Label> label = model2.getSwModel().getLabels();

+		final List<Label> label = new ArrayList<Label>();

+		for (final Task ta : tasks) {

+			label.addAll(SoftwareUtil.getAccessedLabelSet(ta, null));

+		}

+		final File f1 = new File(fname);

+		String[] words = null;

+		@SuppressWarnings("resource")

+		final FileReader fr = new FileReader(f1);

+		@SuppressWarnings("resource")

+		final BufferedReader br = new BufferedReader(fr);

+		String s;

+		final String input = "\tuint", input1 = "\t=\t";

+		int count = 0, count1 = 0;

+		int Counter = 0;

+		while ((s = br.readLine()) != null) {

+			words = s.split(" ");

+			for (final String word : words) {

+				if (word.contains(input)) {

+					count++;

+				}

+				if (word.equals(input1)) {

+					count1++;

+				}

+			}

+		}

+		for (final Task task : tasks) {

+			List<Runnable> runnablesOfTask = SoftwareUtil.getRunnableList(task, null);

+			final ArrayList<Label> labellist1 = new ArrayList<Label>();

+			runnablesOfTask = runnablesOfTask.stream().distinct().collect(Collectors.toList());

+			for (final Runnable run : runnablesOfTask) {

+				final Set<Label> labellist = SoftwareUtil.getAccessedLabelSet(run, null);

+				labellist1.addAll(labellist);

+			}

+			final List<Label> listWithoutDuplicates2 = labellist1.stream().distinct().collect(Collectors.toList());

+			Counter = Counter + listWithoutDuplicates2.size();

+		}

+		if (count != label.size() + Counter) {

+			System.out.println((label.size() + Counter) + "\tLabel : ERROR: Label2 count\t" + count);

+		}

+		else {

+			System.out.println("Label : Label2 count OK");

+		}

+		if (count1 != label.size()) {

+			System.out.println(label.size() + "\tLabel : ERROR: Label count\t" + count1);

+		}

+		else {

+			System.out.println("Label : Label1 count OK");

+		}

+		fr.close();

+	}

+

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testMain.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testMain.java
new file mode 100644
index 0000000..5b860a2
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testMain.java
@@ -0,0 +1,113 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen.test;

+

+import java.io.BufferedReader;

+import java.io.File;

+import java.io.FileReader;

+import java.io.IOException;

+import java.util.List;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Task;

+

+/**

+ * Implementation of testing Task, Runnable structure and Label types.

+ *

+ */

+

+public class testMain

+

+{

+

+	public testMain(final Amalthea model, final String path1, final int configFlag, final int k,

+			final List<Task> taskmod) throws IOException {

+		if ((0x1000 == (configFlag & 0xF000))) {

+			fileTestmainTask(model, path1, k, taskmod);

+		}

+		else if (0x2000 == (configFlag & 0xF000)) {

+			fileTestmainTaskPthread(model, path1, k, taskmod);

+		}

+	}

+

+	private void fileTestmainTaskPthread(final Amalthea model2, final String path1, final int k,

+			final List<Task> taskmod) throws IOException {

+		final String fname = path1 + File.separator + "main" + k + ".c";

+		// EList<Task> taskmod = model2.getSwModel().getTasks();

+		final File f1 = new File(fname);

+		String[] words = null;

+		@SuppressWarnings("resource")

+		final FileReader fr = new FileReader(f1);

+		@SuppressWarnings("resource")

+		final BufferedReader br = new BufferedReader(fr);

+		String s;

+		final String input = "\t\tpthread_create";

+		int count = 0;

+		while ((s = br.readLine()) != null) {

+			words = s.split(" ");

+			for (final String word : words) {

+				if (word.equals(input)) {

+					count++;

+				}

+			}

+		}

+		if (count != taskmod.size()) {

+			System.out.println(taskmod.size() + "\tMain" + k + " : ERROR: Task create count\t" + count);

+		}

+		else {

+			System.out.println("Main" + k + " : Task create count OK");

+		}

+		fr.close();

+	}

+

+	private void fileTestmainTask(final Amalthea model2, final String path1, final int k, final List<Task> taskmod)

+			throws IOException {

+		final String fname = path1 + File.separator + "main" + k + ".c";

+		// EList<Task> taskmod = model2.getSwModel().getTasks();

+		final File f1 = new File(fname);

+		String[] words = null;

+		@SuppressWarnings("resource")

+		final FileReader fr = new FileReader(f1);

+		@SuppressWarnings("resource")

+		final BufferedReader br = new BufferedReader(fr);

+		String s;

+		final String input = "\txTaskCreate(";

+		final String input2 = "configMINIMAL_STACK_SIZE,";

+		int count = 0, count1 = 0;

+		while ((s = br.readLine()) != null) {

+			words = s.split(" ");

+			for (final String word : words) {

+				if (word.equals(input)) {

+					count++;

+				}

+				else if (word.equals(input2)) {

+					count1++;

+				}

+			}

+		}

+		if (count != taskmod.size()) {

+			System.out.println(taskmod.size() + "\tMain" + k + " : ERROR: Task create count\t" + count);

+		}

+		else {

+			System.out.println("Main" + k + " : Task create count OK");

+		}

+		if (count1 != taskmod.size()) {

+			System.out.println(taskmod.size() + "\tMain" + k + " : ERROR: Task Priorities count\t" + count1);

+		}

+		else {

+			System.out.println("Main" + k + " : Task Priorities count OK");

+		}

+		fr.close();

+	}

+}

+

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testRunnable.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testRunnable.java
new file mode 100644
index 0000000..a30d9a2
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testRunnable.java
@@ -0,0 +1,146 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen.test;

+

+import java.io.BufferedReader;

+import java.io.File;

+import java.io.FileReader;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.List;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Runnable;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;

+

+/**

+ * Implementation of testing Task, Runnable structure and Label types.

+ *

+ */

+

+

+public class testRunnable {

+	public testRunnable(final Amalthea Model, final String path1, final int configFlag, final int k,

+			final List<Task> tasks) throws IOException {

+		this.model = Model;

+		if (0x2000 != (configFlag & 0xF000)) {

+			fileTestRunnable(this.model, path1, k, tasks);

+		}

+		else {

+			fileTestRunnablePthread(this.model, path1, k, tasks);

+		}

+	}

+

+

+	private void fileTestRunnable(final Amalthea model2, final String path1, final int k, final List<Task> tasks)

+			throws IOException {

+		final String fname = path1 + File.separator + "runnable" + k + ".c";

+		final List<Runnable> runmod = new ArrayList<Runnable>();

+		for (final Task ta : tasks) {

+			runmod.addAll(SoftwareUtil.getRunnableList(ta, null));

+		}

+

+		final File f1 = new File(fname);

+		String[] words = null;

+		@SuppressWarnings("resource")

+		final FileReader fr = new FileReader(f1);

+		@SuppressWarnings("resource")

+		final BufferedReader br = new BufferedReader(fr);

+		String s;

+		final String input1 = "void";

+		int count1 = 0;

+		while ((s = br.readLine()) != null) {

+			words = s.split(" ");

+			for (final String word : words) {

+				/*

+				 * if (word.equals(input)) { count++; }

+				 */

+				if (word.equals(input1)) {

+					count1++;

+				}

+			}

+		}

+		/*

+		 * if (count != runmod.size()) { System.out.println(runmod.size() +

+		 * "\tRunnable"+k+" : ERROR: Runnable size Not matching count\t" +

+		 * count); } else {

+		 * System.out.println("Runnable : Number of Runnables OK"); }

+		 */

+		if (count1 == runmod.size()) {

+			System.out.println("Runnable" + k + " : Number of Runnables  void OK");

+		}

+		else {

+

+			System.out.println(

+					runmod.size() + "\tRunnable" + k + " : ERROR: Runnable VOID Not matching count\t" + count1);

+		}

+		fr.close();

+	}

+

+	private void fileTestRunnablePthread(final Amalthea model2, final String path1, final int k, final List<Task> tasks)

+			throws IOException {

+		final String fname = path1 + File.separator + "runnable" + k + ".c";

+		final List<Runnable> runmod = new ArrayList<Runnable>();

+		for (final Task ta : tasks) {

+			runmod.addAll(SoftwareUtil.getRunnableList(ta, null));

+		}

+

+		final File f1 = new File(fname);

+		String[] words = null;

+		@SuppressWarnings("resource")

+		final FileReader fr = new FileReader(f1);

+		@SuppressWarnings("resource")

+		final BufferedReader br = new BufferedReader(fr);

+		String s;

+		boolean flagRun = false;

+		final String input = "\tRunnable", input1 = "void";

+		int count = 0, count1 = 0;

+		while ((s = br.readLine()) != null) {

+			words = s.split(" ");

+			for (final String word : words) {

+				if (flagRun) {

+					// System.out.println("\nRunnable "+word);

+					flagRun = false;

+				}

+				if (word.equals(input)) {

+					count++;

+				}

+				if (word.equals(input1)) {

+					count1++;

+					flagRun = true;

+				}

+			}

+		}

+		if (count != runmod.size()) {

+			System.out

+					.println(runmod.size() + "\tRunnable" + k + " : ERROR: Runnable size Not matching count\t" + count);

+		}

+		else {

+			System.out.println("Runnable" + k + " : Number of Runnables OK");

+		}

+		if (count1 != runmod.size()) {

+			System.out.println(

+					runmod.size() + "\tRunnable" + k + " : ERROR: Runnable VOID Not matching count\t" + count1);

+		}

+		else {

+			System.out.println("Runnable" + k + " : Number of Runnables  void OK");

+		}

+		fr.close();

+	}

+

+

+	final private Amalthea model;

+

+

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskDef.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskDef.java
new file mode 100644
index 0000000..f8710e2
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskDef.java
@@ -0,0 +1,238 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen.test;

+

+import java.io.BufferedReader;

+import java.io.File;

+import java.io.FileReader;

+import java.io.IOException;

+import java.util.List;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Task;

+

+/**

+ * Implementation of testing Task, Runnable structure and Label types.

+ *

+ */

+

+public class testTaskDef

+

+{

+

+

+	public testTaskDef(final Amalthea model, final String path1, final int configFlag, final int k,

+			final List<Task> tasks) throws IOException {

+

+		if (0x2000 != (configFlag & 0xF000)) {

+			fileTestTask(model, path1, configFlag, k, tasks);

+		}

+		else {

+			fileTestTaskPthread(model, path1, configFlag, k, tasks);

+		}

+	}

+

+	/**

+	 *

+	 * @param model2

+	 * @param path1

+	 * @param configFlag

+	 * @throws IOException

+	 */

+	private void fileTestTask(final Amalthea model2, final String path1, final int configFlag, final int k,

+			final List<Task> taskmod) throws IOException {

+		final String fname = path1 + File.separator + "taskDef" + k + ".c";

+		// EList<Task> taskmod = model2.getSwModel().getTasks();

+		final File f1 = new File(fname);

+		String[] words = null;

+		@SuppressWarnings("resource")

+		final FileReader fr = new FileReader(f1);

+		@SuppressWarnings("resource")

+		final BufferedReader br = new BufferedReader(fr);

+		String s;

+		// TODO

+		final String input = "Cout", input2 = "Cin", input3 = "\t\t\ttaskENTER_CRITICAL",

+				input4 = "\t\t\ttaskEXIT_CRITICAL";

+		final String input5 = "\tvoid";

+		int count = 0, count1 = 0, count2 = 0, count3 = 0, count4 = 0;

+		while ((s = br.readLine()) != null) {

+			words = s.split(" ");

+			for (final String word : words) {

+				if (word.equals(input)) {

+					count++;

+				}

+				else if (word.equals(input2)) {

+					count1++;

+				}

+				else if (word.equals(input3)) {

+					count2++;

+				}

+				else if (word.equals(input4)) {

+					count3++;

+				}

+				else if (word.equals(input5)) {

+					count4++;

+				}

+			}

+		}

+		if (0x1000 == (configFlag & 0xF000)) {

+			if (count != taskmod.size()) {

+				System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cout count\t" + count);

+			}

+			else {

+				System.out.println("Task" + k + " : Cout count OK");

+			}

+			if (count1 != taskmod.size()) {

+				System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cin count\t" + count1);

+			}

+			else {

+				System.out.println("Task" + k + " : Cin count OK");

+			}

+			// if(0x0020 == (configFlag & 0x00F0)) {

+			if (count2 != taskmod.size() * 2) {

+				System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: taskENTER_CRITICAL\t" + count2);

+			}

+			else {

+				System.out.println("Task" + k + " : taskENTER_CRITICAL OK");

+			}

+			/*

+			 * else { if (count2 != taskmod.size()) {

+			 * System.out.println(taskmod.size() * 2 +

+			 * "\tTask"+k+" : ERROR: taskENTER_CRITICAL\t" + count2); } else {

+			 * System.out.println("Task"+k+" : taskENTER_CRITICAL OK"); } }

+			 */

+			// if(0x0020 == (configFlag & 0x00F0)) {

+			if (count3 != taskmod.size() * 2) {

+				System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count2);

+			}

+			else {

+				System.out.println("Task" + k + " : taskEXIT_CRITICAL OK");

+			}

+			/*

+			 * else { if (count3 != taskmod.size()) {

+			 * System.out.println(taskmod.size()+

+			 * "\tTask"+k+" : ERROR: taskEXIT_CRITICAL\t" + count2); } else {

+			 * System.out.println("Task"+k+" : taskEXIT_CRITICAL OK"); }

+			 */

+

+			if (count3 != count2) {

+				System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count2);

+			}

+			else {

+				System.out.println("Task" + k + " : taskEXIT_CRITICAL and taskENTER_CRITICAL OK");

+			}

+		}

+		if (count4 != taskmod.size()) {

+			System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count4);

+		}

+		else {

+			System.out.println("Task" + k + " : Task Count OK");

+		}

+

+		fr.close();

+	}

+

+	private void fileTestTaskPthread(final Amalthea model2, final String path1, final int configFlag, final int k,

+			final List<Task> taskmod) throws IOException {

+		final String fname = path1 + File.separator + "taskDef" + k + ".c";

+		// EList<Task> taskmod = model2.getSwModel().getTasks();

+		final File f1 = new File(fname);

+		String[] words = null;

+		@SuppressWarnings("resource")

+		final FileReader fr = new FileReader(f1);

+		@SuppressWarnings("resource")

+		final BufferedReader br = new BufferedReader(fr);

+		String s;

+		final String input1 = "Cout", input2 = "Cin", input3 = "\t\t\tsuspendMe", input4 = "\t\t\tresumeMe",

+				input5 = "void";

+		int count1 = 0, count2 = 0, count3 = 0, count4 = 0, count5 = 0;

+		while ((s = br.readLine()) != null) {

+			words = s.split(" ");

+			for (final String word : words) {

+				if (word.equals(input1)) {

+					count1++;

+				}

+				else if (word.equals(input2)) {

+					count2++;

+				}

+				else if (word.equals(input3)) {

+					count3++;

+				}

+				else if (word.equals(input4)) {

+					count4++;

+				}

+				else if (word.equals(input5)) {

+					count5++;

+				}

+			}

+		}

+		if (0x3110 == (configFlag & 0xFFF0)) {

+			if (count1 != taskmod.size()) {

+				System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cout count\t" + count1);

+			}

+			else {

+				System.out.println("Task" + k + " : Cout count OK");

+			}

+			if (count2 != taskmod.size()) {

+				System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: Cin count\t" + count2);

+			}

+			else {

+				System.out.println("Task" + k + " : Cin count OK");

+			}

+

+			// if(0x0020 == (configFlag & 0x00F0)){

+			if (count3 != taskmod.size() * 2) {

+				System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: suspendMe\t" + count3);

+			}

+			else {

+				System.out.println("Task" + k + " : suspendMe OK");

+			}

+			/*

+			 * }else { if (count3 != taskmod.size()) {

+			 * System.out.println(taskmod.size()+

+			 * "\tTask"+k+" : ERROR: suspendMe\t" + count3); } else {

+			 * System.out.println("Task"+k+" : suspendMe OK"); } }

+			 */

+

+			// if(0x0020 == (configFlag & 0x00F0)) {

+			if (count4 != taskmod.size() * 2) {

+				System.out.println(taskmod.size() * 2 + "\tTask" + k + " : ERROR: resumeMe\t" + count4);

+			}

+			else {

+				System.out.println("Task" + k + " : resumeMe OK");

+			}

+			/*

+			 * }else { if (count4 != taskmod.size()) {

+			 * System.out.println(taskmod.size()+

+			 * "\tTask"+k+" : ERROR: resumeMe\t" + count4); } else {

+			 * System.out.println("Task"+k+" : resumeMe OK"); } }

+			 */

+

+			if (count4 != count3) {

+				System.out.println(count4 + "\tTask" + k + " : ERROR: suspendMe \t" + count3);

+			}

+			else {

+				System.out.println("Task" + k + " : suspendMe and resumeMe OK");

+			}

+			if (count5 != taskmod.size()) {

+				System.out.println(taskmod.size() + "\tTask" + k + " : ERROR: taskEXIT_CRITICAL\t" + count5);

+			}

+			else {

+				System.out.println("Task" + k + " : Task Count OK");

+			}

+		}

+		fr.close();

+	}

+

+

+}

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskStructure.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskStructure.java
new file mode 100755
index 0000000..40199ab
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/test/testTaskStructure.java
@@ -0,0 +1,59 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen.test;

+

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.List;

+import java.util.Set;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;

+import org.eclipse.app4mc.amalthea.model.SchedulerAllocation;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.amalthea.model.util.DeploymentUtil;

+import org.eclipse.emf.common.util.EList;

+

+/**

+ * Implementation of testing Task, Runnable structure and Label types.

+ *

+ */

+

+public class testTaskStructure

+

+{

+	final private Amalthea model;

+

+	public testTaskStructure(final Amalthea Model, final String path1, final int configFlag) throws IOException {

+		this.model = Model;

+		System.out.println("############################################################");

+		System.out.println("\t\t\tTest Begins");

+		System.out.println("############################################################");

+		final EList<SchedulerAllocation> CoreNo = this.model.getMappingModel().getSchedulerAllocation();

+		int k = 0;

+		for (final SchedulerAllocation c : CoreNo) {

+			final ProcessingUnit pu = c.getResponsibility().get(0);

+			final Set<Task> task = DeploymentUtil.getTasksMappedToCore(pu, this.model);

+			final List<Task> tasks = new ArrayList<Task>(task);

+			new testRunnable(this.model, path1, configFlag, k, tasks);

+			new testTaskDef(this.model, path1, configFlag, k, tasks);

+			new testMain(this.model, path1, configFlag, k, tasks);

+			// new testLabel(model, path1, k, tasks);

+			k++;

+		}

+		System.out.println("############################################################");

+		System.out.println("\t\t\tTest Ends");

+		System.out.println("############################################################");

+	}

+}

+

diff --git a/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/utils/fileUtil.java b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/utils/fileUtil.java
new file mode 100755
index 0000000..5b0598b
--- /dev/null
+++ b/eclipse-tools/cdgen/src/org/eclipse/app4mc/cdgen/utils/fileUtil.java
@@ -0,0 +1,290 @@
+/*******************************************************************************

+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.

+ *

+ *   This program and the accompanying materials are made

+ *   available under the terms of the Eclipse Public License 2.0

+ *   which is available at https://www.eclipse.org/legal/epl-2.0/

+ *

+ *   SPDX-License-Identifier: EPL-2.0

+ *

+ *   Contributors:

+ *       Dortmund University of Applied Sciences and Arts - initial API and implementation

+ *******************************************************************************/

+package org.eclipse.app4mc.cdgen.utils;

+

+import java.io.File;

+import java.io.FileWriter;

+import java.io.IOException;

+import java.util.ArrayList;

+import java.util.Collection;

+import java.util.HashMap;

+import java.util.LinkedHashMap;

+import java.util.List;

+import java.util.Map;

+import java.util.Map.Entry;

+import java.util.Set;

+import java.util.stream.Collectors;

+

+import org.eclipse.app4mc.amalthea.model.Amalthea;

+import org.eclipse.app4mc.amalthea.model.Label;

+import org.eclipse.app4mc.amalthea.model.PeriodicStimulus;

+import org.eclipse.app4mc.amalthea.model.ProcessingUnit;

+import org.eclipse.app4mc.amalthea.model.Stimulus;

+import org.eclipse.app4mc.amalthea.model.Task;

+import org.eclipse.app4mc.amalthea.model.Time;

+import org.eclipse.app4mc.amalthea.model.util.SoftwareUtil;

+import org.eclipse.app4mc.cdgen.LabelFileCreation;

+

+

+/**

+ * Implementation of Common API for CDGen.

+ *

+ */

+

+public class fileUtil {

+

+	@SuppressWarnings({ "null", "resource" })

+	public static void fileMainHeader(final File f) throws IOException {

+		FileWriter fr = null;

+		try {

+			fr = new FileWriter(f);

+			fr.write("/******************************************************************\n");

+			fr.write("******************************************************************\n");

+			fr.write("**************#####**####*****#####**######*###****##*************\n");

+			fr.write("*************##******#***##**##******##*****##*#***##*************\n");

+			fr.write("*************#*******#****#**#****##*######*##**#**##*************\n");

+			fr.write("*************##******#***##**##***##*##*****##***#*##*************\n");

+			fr.write("**************#####**####*****######*######*##****###*************\n");

+			fr.write("******************************************************************\n");

+			fr.write("******************************************************************\n");

+			fr.write("*Author		:	Ram Prasath Govindarajan\n");

+			fr.write("*Tool 		:	CDGen_GSoC\n");

+			fr.write("*Version 	:	V1.0.0\n");

+		}

+		catch (final IOException e) {

+			e.printStackTrace();

+		}

+

+		fr.close();

+	}

+

+	public static void FreeRTOSConfigFileHeader(final File f1) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true);

+			fw.write("*Title 		:   FreeRTOSConfig\n");

+			fw.write("*Description	:	Holds configuration for the FreeRTOS Software\n");

+			fw.write("******************************************************************\n");

+			fw.write("******************************************************************/\n\n\n");

+

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+

+	}

+

+

+	public static String getFileExtension(final File file) {

+		final String fileName = file.getName();

+		String fileExtension = null;

+		if (fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0) {

+			fileExtension = fileName.substring(fileName.lastIndexOf(".") + 1);

+			// return fileName.substring(fileName.lastIndexOf(".") + 1);

+		}

+		return fileExtension;

+	}

+

+	public static String datatype(final String string) {

+		String type = null;

+		switch (string) {

+			case "8 bit":

+				type = "uint8_t";

+				break;

+			case "16 bit":

+				type = "uint16_t";

+				break;

+			case "32 bit":

+				type = "uint32_t";

+				break;

+			case "64 bit":

+				type = "uint64_t";

+				break;

+			default:

+				type = "int";

+				break;

+		}

+		return type;

+	}

+

+

+	public static String datatypeSize(final String string) {

+		String type = null;

+		switch (string) {

+			case "8 bit":

+				type = "8";

+				break;

+			case "16 bit":

+				type = "16";

+				break;

+			case "32 bit":

+				type = "32";

+				break;

+			case "64 bit":

+				type = "64";

+				break;

+			default:

+				type = "00";

+				break;

+		}

+		return type;

+	}

+

+	/**

+	 * Shared Label definition and initialization structure.

+	 *

+	 * @param tasks

+	 *

+	 * @param file

+	 * @param labellist

+	 * @return

+	 */

+	public static List<Label> CoreSpecificLabel(final Amalthea model, final List<Task> tasks) {

+		List<Label> SharedLabelList = new ArrayList<Label>();

+		for (final Task ta : tasks) {

+			SharedLabelList.addAll(SoftwareUtil.getReadLabelSet(ta, null));

+		}

+		SharedLabelList = SharedLabelList.stream().distinct().collect(Collectors.toList());

+		final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+		if (SharedLabelList.size() == 0) {

+			System.out.println("Shared Label size 0");

+		}

+		else {

+			// System.out.println("Shared Label size "+SharedLabelList.size());

+			final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+					.LabelTaskMap(model, SharedLabelList);

+			for (final Label share : SharedLabelList) {

+				final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+				final Set<Task> taskList = TaskMap.keySet();

+				final Collection<ProcessingUnit> puList = TaskMap.values();

+				final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+				if (puListUnique.size() == 1 && taskList.size() > 1) {

+					SharedLabelListSortCore.add(share);

+				}

+			}

+		}

+		return SharedLabelListSortCore;

+	}

+

+	/**

+	 * Shared Label definition and initialization structure.

+	 *

+	 * @param tasks

+	 *

+	 * @param file

+	 * @param labellist

+	 * @return

+	 */

+	// public static List<Label> SharedLabelDeclarationHead(Amalthea model,

+	// List<Task> tasks) {

+	public static List<Label> SharedLabelDeclarationHead(final Amalthea model, final List<Task> tasks) {

+		final List<Label> SharedLabelList = LabelFileCreation.SharedLabelFinder(model);

+		final List<Label> SharedLabelListSortCore = new ArrayList<Label>();

+		final List<Label> SharedLabel = new ArrayList<Label>();

+		if (SharedLabelList.size() == 0) {

+			// System.out.println("Shared Label size 0");

+		}

+		else {

+			// System.out.println("Shared Label size "+SharedLabelList.size());

+			final HashMap<Label, HashMap<Task, ProcessingUnit>> sharedLabelTaskMap = LabelFileCreation

+					.LabelTaskMap(model, SharedLabelList);

+			for (final Label share : SharedLabelList) {

+				final HashMap<Task, ProcessingUnit> TaskMap = sharedLabelTaskMap.get(share);

+				final Collection<ProcessingUnit> puList = TaskMap.values();

+				final List<ProcessingUnit> puListUnique = puList.stream().distinct().collect(Collectors.toList());

+				if (puListUnique.size() > 1) {

+					SharedLabelListSortCore.add(share);

+				}

+			}

+		}

+

+		final HashMap<Label, String> SharedLabelTypeMap = new HashMap<Label, String>();

+		for (final Label share : SharedLabelListSortCore) {

+			SharedLabelTypeMap.put(share, share.getSize().toString());

+		}

+		final List<String> SharedTypeMapList = new ArrayList<>(

+				SharedLabelTypeMap.values().stream().distinct().collect(Collectors.toList()));

+		final List<Label> SharedLabelMapList = new ArrayList<Label>(SharedLabelTypeMap.keySet());

+		for (int k = 0; k < SharedTypeMapList.size(); k++) {

+			final String sh = SharedTypeMapList.get(k);

+			for (final Label s : SharedLabelMapList) {

+				final String ShTy = SharedLabelTypeMap.get(s);

+				if (sh.equals(ShTy)) {

+					SharedLabel.add(s);

+				}

+			}

+		}

+		return SharedLabel;

+	}

+

+

+	public static long intialisation(final String string) {

+		long init = 0;

+		switch (string) {

+			case "8 bit":

+				init = 255;

+				break;

+			case "16 bit":

+				init = 65535;

+				break;

+			// case "32 bit": init =4294967295; break;

+			// case "64 bit": init =18446744073709551615; break;

+			default:

+				init = 0000;

+				break;

+		}

+		return init;

+	}

+

+	public static void defineMain(final File f1) {

+		try {

+			final File fn = f1;

+			@SuppressWarnings("resource")

+			final FileWriter fw = new FileWriter(fn, true); // the true will

+			// append the new

+			// data

+			fw.write("#define DELAY_MULT 100");

+			fw.write("\n");

+			fw.close();

+		}

+		catch (final IOException ioe) {

+			System.err.println("IOException: " + ioe.getMessage());

+		}

+

+	}

+

+	public static Time getRecurrence(final Task t) {

+		final List<Stimulus> lStimuli = t.getStimuli();

+		for (final Stimulus s : lStimuli) {

+			if (s instanceof PeriodicStimulus) {

+				return ((PeriodicStimulus) s).getRecurrence();

+			}

+			System.out.println("ERR: Unsupported Stimulus in Task " + t + " -> " + s);

+		}

+		return null;

+	}

+

+	// This code is form stackoverflow https://stackoverflow.com/a/2581754

+	public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(final Map<K, V> map) {

+		final List<Entry<K, V>> list = new ArrayList<>(map.entrySet());

+		list.sort(Entry.comparingByValue());

+

+		final Map<K, V> result = new LinkedHashMap<>();

+		for (final Entry<K, V> entry : list) {

+			result.put(entry.getKey(), entry.getValue());

+		}

+		return result;

+	}

+}

diff --git a/eclipse-tools/emf-graphical-viewer/.gitignore b/eclipse-tools/emf-graphical-viewer/.gitignore
new file mode 100644
index 0000000..f1c734e
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/.gitignore
@@ -0,0 +1,5 @@
+.metadata/
+
+# Eclipse target directories
+bin/
+target/
diff --git a/eclipse-tools/emf-graphical-viewer/.mvn/extensions.xml b/eclipse-tools/emf-graphical-viewer/.mvn/extensions.xml
new file mode 100644
index 0000000..710a9ec
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/.mvn/extensions.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<extensions>
+  <extension>
+    <groupId>org.eclipse.tycho.extras</groupId>
+    <artifactId>tycho-pomless</artifactId>
+    <version>1.6.0</version>
+  </extension>
+</extensions>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/.project b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/.project
deleted file mode 100644
index c93b42d..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.app4mc.emfutils.extractor.build</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-	</buildSpec>
-	<natures>
-	</natures>
-</projectDescription>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/META-INF/MANIFEST.MF
deleted file mode 100644
index a77fb88..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: EMF Content Extractor Build
-Bundle-SymbolicName: org.eclipse.app4mc.emfutils.extractor.build;singleton:=true
-Bundle-Version: 1.2.0
-Bundle-Activator: org.eclipse.app4mc.emfutils.content.extractor.Activator
-Require-Bundle: org.eclipse.ui
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
- JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Bundle-ClassPath: .,
- lib/plantuml.8041.jar
-Bundle-Vendor: Eclipse APP4MC
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/about.html b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/about.html
deleted file mode 100644
index 164f781..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/epl-2.0.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/pom.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/pom.xml
deleted file mode 100644
index 9fed643..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.extractor.build/pom.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<project>
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
-  <artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
-  <version>0.8.3</version> 
-  <packaging>pom</packaging>
-  <name>Ecore Reference Extractor</name>
- 
-	<properties>
-		<tycho.version>0.22.0</tycho.version>
-		<jacoco.version>0.7.4.201502262128</jacoco.version>
-		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
-		<luna-repo.url>http://download.eclipse.org/releases/luna</luna-repo.url>
-		<amalthea-repo.url>http://download.eclipse.org/app4mc/updatesites/releases/0.8.3/</amalthea-repo.url>
-		
-		<franca-repo.url>http://franca.github.io/franca/update_site/releases/0.9.1/</franca-repo.url>
-		<orbit-repo.url>http://download.eclipse.org/tools/orbit/downloads/drops/R20150124073747/repository/</orbit-repo.url>
-		<ease-repo-url>http://download.eclipse.org/ease/update/release</ease-repo-url>
-		<sphinx-repo-url>http://download.eclipse.org/sphinx/updates/interim</sphinx-repo-url>
-	</properties>
-  	<repositories>
-<repository>
-			<id>amalthea</id>
-			<url>${amalthea-repo.url}</url>
-			<layout>p2</layout>
-		</repository>
-		<repository>
-			<id>franca</id>
-			<url>${franca-repo.url}</url>
-			<layout>p2</layout>
-		</repository>
-		<repository>
-			<id>luna</id>
-			<url>${luna-repo.url}</url>
-			<layout>p2</layout>
-		</repository>
-		<repository>
-			<id>orbit</id>
-			<url>${orbit-repo.url}</url>
-			<layout>p2</layout>
-		</repository>
-		<repository>
-			<id>ease</id>
-			<url>${ease-repo-url}</url>
-			<layout>p2</layout>
-		</repository>
-		<repository>
-			<id>sphinx</id>
-			<url>${sphinx-repo-url}</url>
-			<layout>p2</layout>
-		</repository>
-	</repositories>
-  
-
-  <modules>
-  	<!-- Plugins -->
-    <module>../../plugins/org.eclipse.app4mc.emfutils.content.extractor</module>
-   <module>../../plugins/org.eclipse.app4mc.emfutils.metamodelviewer</module>
-   <module>../../plugins/org.eclipse.app4mc.emfutils.resourceset.mapper</module>
-
-   <module>../../plugins/net.sourceforge.plantuml</module>
-   
-    <!-- Tests -->
-  
-    <!-- Features -->
-    <module>../../features/org.eclipse.app4mc.emfutils.content.extractor.feature</module>
-	<module>../../features/org.eclipse.app4mc.emfutils.metamodelviewer.feature</module>
-	  
-    <!-- P2Repo -->
-    <module>../org.eclipse.app4mc.emfutils.p2repo</module>
-
-  </modules>
-  
-  
-  	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-maven-plugin</artifactId>
-				<version>${tycho.version}</version>
-				<extensions>true</extensions>
-				<configuration>
-
-				</configuration>
-			</plugin>
-
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-compiler-plugin</artifactId>
-				<version>${tycho.version}</version>
-				<configuration>
-					<verbose>true</verbose>
-					<source>1.8</source>
-					<target>1.8</target>
-				</configuration>
-			</plugin>
-
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>target-platform-configuration</artifactId>
-				<version>${tycho.version}</version>
-				<configuration>
-					<dependency-resolution>
-						<extraRequirements>
-							<requirement>
-								<type>eclipse-plugin</type>
-								<id>org.hamcrest</id>
-								<versionRange>0.0.0</versionRange>
-							</requirement>
-						</extraRequirements>
-					</dependency-resolution>
-					<environments>
-						<environment>
-							<os>linux</os>
-							<ws>gtk</ws>
-							<arch>x86</arch>
-						</environment>
-						<environment>
-							<os>linux</os>
-							<ws>gtk</ws>
-							<arch>x86_64</arch>
-						</environment>
-						<environment>
-							<os>win32</os>
-							<ws>win32</ws>
-							<arch>x86</arch>
-						</environment>
-						<environment>
-							<os>win32</os>
-							<ws>win32</ws>
-							<arch>x86_64</arch>
-						</environment>
-						<environment>
-							<os>macosx</os>
-							<ws>cocoa</ws>
-							<arch>x86_64</arch>
-						</environment>
-					</environments>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-surefire-plugin</artifactId>
-				<version>${tycho.version}</version>
-				<configuration>
-					<!-- argLine>${tycho.testArgLine}</argLine> -->
-					<forkMode>never</forkMode>
-					<includes>
-						<include>**/*Test.*</include>
-					</includes>
-				</configuration>
-			</plugin>
-			<plugin>
-				<groupId>org.jacoco</groupId>
-				<artifactId>jacoco-maven-plugin</artifactId>
-				<version>0.7.4.201502262128</version>
-				<configuration>
-					<excludes>
-
-					</excludes>
-				</configuration>
-				<executions>
-					<!-- Prepares the property pointing to the JaCoCo runtime agent which
-						is passed as VM argument when Maven the Surefire plugin is executed. -->
-					<execution>
-						<id>pre-unit-test</id>
-						<goals>
-							<goal>prepare-agent</goal>
-						</goals>
-						<configuration>
-							<!-- Sets the path to the file which contains the execution data. -->
-							<destFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</destFile>
-						</configuration>
-					</execution>
-					<!-- Ensures that the code coverage report for unit tests is created
-						after unit tests have been run. -->
-					<execution>
-						<id>post-unit-test</id>
-						<phase>verify</phase>
-						<goals>
-							<goal>report</goal>
-						</goals>
-						<configuration>
-							<!-- Sets the path to the file which contains the execution data. -->
-							<dataFile>${project.build.directory}/coverage-reports/jacoco-ut.exec</dataFile>
-							<!-- Sets the output directory for the code coverage report. -->
-							<outputDirectory>${project.reporting.outputDirectory}/jacoco-ut</outputDirectory>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
-  
-</project>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/category.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/category.xml
deleted file mode 100644
index 661b7f4..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/category.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-   <feature url="features/org.eclipse.app4mc.emfutils.metamodelviewer.feature_0.8.3.jar" id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" version="0.8.3">
-      <category name="Ecore Tools"/>
-   </feature>
-   <feature url="features/org.eclipse.app4mc.emfutils.content.extractor.feature_0.8.3.jar" id="org.eclipse.app4mc.emfutils.content.extractor.feature" version="0.8.3">
-      <category name="Ecore Tools"/>
-   </feature>
-   <category-def name="Ecore Tools" label="org.eclipse.app4mc.emfutils.content.extractor"/>
-</site>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/pom.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/pom.xml
deleted file mode 100644
index 973db9b..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/pom.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<relativePath>../org.eclipse.app4mc.emfutils.extractor.build</relativePath>
-		<groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
-		<artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
-		<version>0.8.3</version>
-	</parent>
-
-	<artifactId>org.eclipse.app4mc.emfutils.p2repo</artifactId>
-	<packaging>eclipse-repository</packaging>
-	
-	<properties>
-		<org.jboss.tools.tycho-plugins.version>0.22.0</org.jboss.tools.tycho-plugins.version>
-	</properties>
-	
-	<pluginRepositories>
-		<pluginRepository>
-			<id>jboss-public-repository-group</id>
-			<name>JBoss Public Repository Group</name>
-			<url>http://repository.jboss.org/nexus/content/groups/public/</url>
-		</pluginRepository>
-
-		<pluginRepository>
-			<id>jboss-snapshots-repository</id>
-			<name>JBoss Snapshots Repository</name>
-			<url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
-		</pluginRepository>
-	</pluginRepositories>
-
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.eclipse.tycho</groupId>
-				<artifactId>tycho-p2-repository-plugin</artifactId>
-				<version>${tycho.version}</version>
-
-				<configuration>
-					<compress/>
-				</configuration>
-			</plugin>
-
-			
-			<plugin>
-				<groupId>org.jboss.tools.tycho-plugins</groupId>
-				<artifactId>repository-utils</artifactId>
-				<version>${org.jboss.tools.tycho-plugins.version}</version>
-
-				<executions>
-					<execution>
-						<id>generate-facade</id>
-						<phase>package</phase>
-	
-						<goals>
-							<goal>generate-repository-facade</goal>
-						</goals>
-	
-						<configuration>
-							<siteTemplateFolder>siteTemplate</siteTemplateFolder>
-							
-							<!-- Symbols are used while expanding index.html template -->
-							<symbols>
-								<update.site.name>${project.parent.name}</update.site.name>
-								<target.eclipse.version>4.3.2</target.eclipse.version>
-							</symbols>
-
-							<associateSites>
-								<!-- site>http://hudson.eclipse.org/hudson/job/damos-master/lastSuccessfulBuild/artifact/update-site</site>
-								<site>http://download.eclipse.org/modeling/emf/emf/updates/releases</site>
-								<site>http://download.eclipse.org/modeling/emf/compare/updates/releases</site>
-								<site>http://download.eclipse.org/rmf/updates</site>
-								<site>http://download.eclipse.org/sphinx/updates/interim</site>
-								<site>http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases</site>
-								<site>http://franca.github.io/franca/update_site/releases</site>
-								<site>http://updates.yakindu.org/sct/kepler/releases</site>
-								
-								<site>http://download.eclipse.org/sphinx/updates/interim</site-->
-							</associateSites>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-		</plugins>
-	</build>
-
-</project>
diff --git a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/site.xml b/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/site.xml
deleted file mode 100644
index 806f343..0000000
--- a/eclipse-tools/emf-graphical-viewer/build/org.eclipse.app4mc.emfutils.p2repo/site.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<site>
-   <feature url="features/org.eclipse.app4mc.emfutils.content.extractor.feature_0.8.3.201704071342.jar" id="org.eclipse.app4mc.emfutils.content.extractor.feature" version="0.8.3.201704071342">
-      <category name="Ecore Tools"/>
-   </feature>
-   <feature url="features/org.eclipse.app4mc.emfutils.metamodelviewer.feature_0.8.3.201704071342.jar" id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" version="0.8.3.201704071342">
-      <category name="Ecore Tools"/>
-   </feature>
-   <category-def name="Ecore Tools" label="Ecore Tools"/>
-</site>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.gitignore b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.gitignore
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.project
similarity index 83%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.project
index 2b681c4..30a42d9 100644
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.app4mc.emfutils.metamodelviewer.feature</name>
+	<name>org.eclipse.app4mc.emf.metamodelviewers</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/about.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/build.properties
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/build.properties
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/epl-2.0.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/feature.xml
new file mode 100644
index 0000000..d4d985d
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.metamodelviewers/feature.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.app4mc.emf.metamodelviewers"
+      label="APP4MC EMF MetaModel Viewers"
+      version="0.9.8.qualifier"
+      provider-name="Eclipse APP4MC"
+      license-feature="org.eclipse.license"
+      license-feature-version="2.0.2.qualifier">
+
+   <description url="https://projects.eclipse.org/projects/technology.app4mc">
+      APP4MC EMF MetaModel Viewers
+   </description>
+
+   <copyright url="https://projects.eclipse.org/projects/technology.app4mc">
+      (c) Copyright Robert Bosch GmbH. 2017-2020. 
+All rights reserved.
+   </copyright>
+
+   <requires>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.sphinx.emf"/>
+      <import plugin="org.eclipse.ui"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.app4mc.emf.metamodelviewer"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.gitignore b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.gitignore
rename to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.project
similarity index 83%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.project
index 2b681c4..921ceb6 100644
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/.project
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.app4mc.emfutils.metamodelviewer.feature</name>
+	<name>org.eclipse.app4mc.emf.viewers.graphical</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/about.html
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/about.html
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/build.properties
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/build.properties
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/build.properties
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/epl-2.0.html
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/epl-2.0.html
copy to eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/feature.xml
new file mode 100644
index 0000000..f9d3655
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emf.viewers.graphical/feature.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.eclipse.app4mc.emf.viewers.graphical"
+      label="APP4MC EMF Graphical Viewers"
+      version="0.9.8.qualifier"
+      provider-name="Eclipse APP4MC"
+      license-feature="org.eclipse.license"
+      license-feature-version="2.0.2.qualifier">
+
+   <description url="https://projects.eclipse.org/projects/technology.app4mc">
+      APP4MC EMF Graphical Viewers
+   </description>
+
+   <copyright url="https://projects.eclipse.org/projects/technology.app4mc">
+      (c) Copyright Robert Bosch GmbH. 2017-2020. 
+All rights reserved.
+   </copyright>
+
+   <includes
+         id="org.eclipse.app4mc.emf.metamodelviewers"
+         version="0.0.0"/>
+
+   <requires>
+      <import plugin="org.eclipse.core.runtime"/>
+      <import plugin="org.eclipse.emf.ecore"/>
+      <import plugin="org.eclipse.emf.ecore.xmi"/>
+      <import plugin="org.eclipse.sphinx.emf"/>
+      <import plugin="org.eclipse.sphinx.emf.editors"/>
+      <import plugin="org.eclipse.sphinx.emf.editors.forms"/>
+      <import plugin="org.eclipse.ui"/>
+      <import plugin="org.eclipse.ui.browser"/>
+      <import feature="net.sourceforge.plantuml.ecore.feature" version="1.1.24"/>
+      <import feature="net.sourceforge.plantuml.feature" version="1.1.24"/>
+      <import feature="net.sourceforge.plantuml.lib.feature" version="1.2019.11"/>
+   </requires>
+
+   <plugin
+         id="org.eclipse.app4mc.emf.viewer.plantuml"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.project b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.project
deleted file mode 100644
index b090637..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.app4mc.emfutils.content.extractor.feature</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/feature.xml
deleted file mode 100644
index 92e1e33..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/feature.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.app4mc.emfutils.content.extractor.feature" label="AMALTHEA Graphical Tools" provider-name="Eclipse APP4MC" version="0.8.3">
-	<copyright url="http://www.example.com/copyright">
-		[Enter Copyright Description here.]
-	</copyright>
-	<description url="http://www.example.com/description">
-		[Enter Feature Description here.]
-	</description>
-	<includes id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" version="0.0.0"/>
-	<license url="http://www.example.com/license">
-		[Enter License Description here.]
-	</license>
-	<plugin download-size="0" id="net.sourceforge.plantuml" install-size="0" version="0.0.0"/>
-	<plugin download-size="0" id="org.eclipse.app4mc.emfutils.content.extractor" install-size="0" unpack="false" version="0.0.0"/>
-	<requires>
-		<import plugin="org.eclipse.core.runtime"/>
-		<import plugin="org.eclipse.emf.ecore"/>
-		<import plugin="org.eclipse.emf.ecore.xmi"/>
-		<import plugin="org.eclipse.sphinx.emf"/>
-		<import plugin="org.eclipse.sphinx.emf.editors"/>
-		<import plugin="org.eclipse.sphinx.emf.editors.forms"/>
-		<import plugin="org.eclipse.ui"/>
-		<import plugin="org.eclipse.ui.browser"/>
-	</requires>
-</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/pom.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/pom.xml
deleted file mode 100644
index 19ab779..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.content.extractor.feature/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
-		<groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
-		<artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
-		<version>0.8.3</version>
-	</parent>
-
-	<artifactId>org.eclipse.app4mc.emfutils.content.extractor.feature</artifactId>
-	<packaging>eclipse-feature</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/about.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/about.html
deleted file mode 100644
index 164f781..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/about.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>About</title>
-</head>
-<body lang="EN-US">
-	<h2>About This Content</h2>
-
-	<p>November 30, 2017</p>
-	<h3>License</h3>
-
-	<p>
-		The Eclipse Foundation makes available all content in this plug-in
-		(&quot;Content&quot;). Unless otherwise indicated below, the Content
-		is provided to you under the terms and conditions of the Eclipse
-		Public License Version 2.0 (&quot;EPL&quot;). A copy of the EPL is
-		available at <a href="http://www.eclipse.org/legal/epl-2.0">http://www.eclipse.org/legal/epl-2.0</a>.
-		For purposes of the EPL, &quot;Program&quot; will mean the Content.
-	</p>
-
-	<p>
-		If you did not receive this Content directly from the Eclipse
-		Foundation, the Content is being redistributed by another party
-		(&quot;Redistributor&quot;) and different terms and conditions may
-		apply to your use of any object code in the Content. Check the
-		Redistributor's license that was provided with the Content. If no such
-		license exists, contact the Redistributor. Unless otherwise indicated
-		below, the terms and conditions of the EPL still apply to any source
-		code in the Content and such source code may be obtained at <a
-			href="http://www.eclipse.org/">http://www.eclipse.org</a>.
-	</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/build.properties b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/build.properties
deleted file mode 100644
index 1690c70..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# *******************************************************************************
-#  Copyright (c) 2017 - 2018 Robert Bosch GmbH and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License 2.0
-#  which accompanies this distribution, and is available at
-#  https://www.eclipse.org/legal/epl-2.0/
-# 
-#   Contributors:
-#  	 Robert Bosch GmbH - initial API and implementation
-# 
-# *******************************************************************************
-bin.includes = feature.xml,\
-               epl-2.0.html,\
-               about.html
-src.includes = about.html,\
-               epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/epl-2.0.html
deleted file mode 100644
index 637a181..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/epl-2.0.html
+++ /dev/null
@@ -1,300 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Eclipse Public License - Version 2.0</title>
-    <style type="text/css">
-      body {
-        margin: 1.5em 3em;
-      }
-      h1{
-        font-size:1.5em;
-      }
-      h2{
-        font-size:1em;
-        margin-bottom:0.5em;
-        margin-top:1em;
-      }
-      p {
-        margin-top:  0.5em;
-        margin-bottom: 0.5em;
-      }
-      ul, ol{
-        list-style-type:none;
-      }
-    </style>
-  </head>
-  <body>
-    <h1>Eclipse Public License - v 2.0</h1>
-    <p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-      PUBLIC LICENSE (&ldquo;AGREEMENT&rdquo;). ANY USE, REPRODUCTION OR DISTRIBUTION
-      OF THE PROGRAM CONSTITUTES RECIPIENT&#039;S ACCEPTANCE OF THIS AGREEMENT.
-    </p>
-    <h2 id="definitions">1. DEFINITIONS</h2>
-    <p>&ldquo;Contribution&rdquo; means:</p>
-    <ul>
-      <li>a) in the case of the initial Contributor, the initial content
-        Distributed under this Agreement, and
-      </li>
-      <li>
-        b) in the case of each subsequent Contributor:
-        <ul>
-          <li>i) changes to the Program, and</li>
-          <li>ii) additions to the Program;</li>
-        </ul>
-        where such changes and/or additions to the Program originate from
-        and are Distributed by that particular Contributor. A Contribution
-        &ldquo;originates&rdquo; from a Contributor if it was added to the Program by such
-        Contributor itself or anyone acting on such Contributor&#039;s behalf.
-        Contributions do not include changes or additions to the Program that
-        are not Modified Works.
-      </li>
-    </ul>
-    <p>&ldquo;Contributor&rdquo; means any person or entity that Distributes the Program.</p>
-    <p>&ldquo;Licensed Patents&rdquo; mean patent claims licensable by a Contributor which
-      are necessarily infringed by the use or sale of its Contribution alone
-      or when combined with the Program.
-    </p>
-    <p>&ldquo;Program&rdquo; means the Contributions Distributed in accordance with this
-      Agreement.
-    </p>
-    <p>&ldquo;Recipient&rdquo; means anyone who receives the Program under this Agreement
-      or any Secondary License (as applicable), including Contributors.
-    </p>
-    <p>&ldquo;Derivative Works&rdquo; shall mean any work, whether in Source Code or other
-      form, that is based on (or derived from) the Program and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship.
-    </p>
-    <p>&ldquo;Modified Works&rdquo; shall mean any work in Source Code or other form that
-      results from an addition to, deletion from, or modification of the
-      contents of the Program, including, for purposes of clarity any new file
-      in Source Code form that contains any contents of the Program. Modified
-      Works shall not include works that contain only declarations, interfaces,
-      types, classes, structures, or files of the Program solely in each case
-      in order to link to, bind by name, or subclass the Program or Modified
-      Works thereof.
-    </p>
-    <p>&ldquo;Distribute&rdquo; means the acts of a) distributing or b) making available
-      in any manner that enables the transfer of a copy.
-    </p>
-    <p>&ldquo;Source Code&rdquo; means the form of a Program preferred for making
-      modifications, including but not limited to software source code,
-      documentation source, and configuration files.
-    </p>
-    <p>&ldquo;Secondary License&rdquo; means either the GNU General Public License,
-      Version 2.0, or any later versions of that license, including any
-      exceptions or additional permissions as identified by the initial
-      Contributor.
-    </p>
-    <h2 id="grant-of-rights">2. GRANT OF RIGHTS</h2>
-    <ul>
-      <li>a) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free copyright
-        license to reproduce, prepare Derivative Works of, publicly display,
-        publicly perform, Distribute and sublicense the Contribution of such
-        Contributor, if any, and such Derivative Works.
-      </li>
-      <li>b) Subject to the terms of this Agreement, each Contributor hereby
-        grants Recipient a non-exclusive, worldwide, royalty-free patent
-        license under Licensed Patents to make, use, sell, offer to sell,
-        import and otherwise transfer the Contribution of such Contributor,
-        if any, in Source Code or other form. This patent license shall
-        apply to the combination of the Contribution and the Program if,
-        at the time the Contribution is added by the Contributor, such
-        addition of the Contribution causes such combination to be covered
-        by the Licensed Patents. The patent license shall not apply to any
-        other combinations which include the Contribution. No hardware per
-        se is licensed hereunder.
-      </li>
-      <li>c) Recipient understands that although each Contributor grants the
-        licenses to its Contributions set forth herein, no assurances are
-        provided by any Contributor that the Program does not infringe the
-        patent or other intellectual property rights of any other entity.
-        Each Contributor disclaims any liability to Recipient for claims
-        brought by any other entity based on infringement of intellectual
-        property rights or otherwise. As a condition to exercising the rights
-        and licenses granted hereunder, each Recipient hereby assumes sole
-        responsibility to secure any other intellectual property rights needed,
-        if any. For example, if a third party patent license is required to
-        allow Recipient to Distribute the Program, it is Recipient&#039;s
-        responsibility to acquire that license before distributing the Program.
-      </li>
-      <li>d) Each Contributor represents that to its knowledge it has sufficient
-        copyright rights in its Contribution, if any, to grant the copyright
-        license set forth in this Agreement.
-      </li>
-      <li>e) Notwithstanding the terms of any Secondary License, no Contributor
-        makes additional grants to any Recipient (other than those set forth
-        in this Agreement) as a result of such Recipient&#039;s receipt of the
-        Program under the terms of a Secondary License (if permitted under
-        the terms of Section 3).
-      </li>
-    </ul>
-    <h2 id="requirements">3. REQUIREMENTS</h2>
-    <p>3.1 If a Contributor Distributes the Program in any form, then:</p>
-    <ul>
-      <li>a) the Program must also be made available as Source Code, in
-        accordance with section 3.2, and the Contributor must accompany
-        the Program with a statement that the Source Code for the Program
-        is available under this Agreement, and informs Recipients how to
-        obtain it in a reasonable manner on or through a medium customarily
-        used for software exchange; and
-      </li>
-      <li>
-        b) the Contributor may Distribute the Program under a license
-        different than this Agreement, provided that such license:
-        <ul>
-          <li>i) effectively disclaims on behalf of all other Contributors all
-            warranties and conditions, express and implied, including warranties
-            or conditions of title and non-infringement, and implied warranties
-            or conditions of merchantability and fitness for a particular purpose;
-          </li>
-          <li>ii) effectively excludes on behalf of all other Contributors all
-            liability for damages, including direct, indirect, special, incidental
-            and consequential damages, such as lost profits;
-          </li>
-          <li>iii) does not attempt to limit or alter the recipients&#039; rights in the
-            Source Code under section 3.2; and
-          </li>
-          <li>iv) requires any subsequent distribution of the Program by any party
-            to be under a license that satisfies the requirements of this section 3.
-          </li>
-        </ul>
-      </li>
-    </ul>
-    <p>3.2 When the Program is Distributed as Source Code:</p>
-    <ul>
-      <li>a) it must be made available under this Agreement, or if the Program (i)
-        is combined with other material in a separate file or files made available
-        under a Secondary License, and (ii) the initial Contributor attached to
-        the Source Code the notice described in Exhibit A of this Agreement,
-        then the Program may be made available under the terms of such
-        Secondary Licenses, and
-      </li>
-      <li>b) a copy of this Agreement must be included with each copy of the Program.</li>
-    </ul>
-    <p>3.3 Contributors may not remove or alter any copyright, patent, trademark,
-      attribution notices, disclaimers of warranty, or limitations of liability
-      (&lsquo;notices&rsquo;) contained within the Program from any copy of the Program which
-      they Distribute, provided that Contributors may add their own appropriate
-      notices.
-    </p>
-    <h2 id="commercial-distribution">4. COMMERCIAL DISTRIBUTION</h2>
-    <p>Commercial distributors of software may accept certain responsibilities
-      with respect to end users, business partners and the like. While this
-      license is intended to facilitate the commercial use of the Program, the
-      Contributor who includes the Program in a commercial product offering should
-      do so in a manner which does not create potential liability for other
-      Contributors. Therefore, if a Contributor includes the Program in a
-      commercial product offering, such Contributor (&ldquo;Commercial Contributor&rdquo;)
-      hereby agrees to defend and indemnify every other Contributor
-      (&ldquo;Indemnified Contributor&rdquo;) against any losses, damages and costs
-      (collectively &ldquo;Losses&rdquo;) arising from claims, lawsuits and other legal actions
-      brought by a third party against the Indemnified Contributor to the extent
-      caused by the acts or omissions of such Commercial Contributor in connection
-      with its distribution of the Program in a commercial product offering.
-      The obligations in this section do not apply to any claims or Losses relating
-      to any actual or alleged intellectual property infringement. In order to
-      qualify, an Indemnified Contributor must: a) promptly notify the
-      Commercial Contributor in writing of such claim, and b) allow the Commercial
-      Contributor to control, and cooperate with the Commercial Contributor in,
-      the defense and any related settlement negotiations. The Indemnified
-      Contributor may participate in any such claim at its own expense.
-    </p>
-    <p>For example, a Contributor might include the Program
-      in a commercial product offering, Product X. That Contributor is then a
-      Commercial Contributor. If that Commercial Contributor then makes performance
-      claims, or offers warranties related to Product X, those performance claims
-      and warranties are such Commercial Contributor&#039;s responsibility alone.
-      Under this section, the Commercial Contributor would have to defend claims
-      against the other Contributors related to those performance claims and
-      warranties, and if a court requires any other Contributor to pay any damages
-      as a result, the Commercial Contributor must pay those damages.
-    </p>
-    <h2 id="warranty">5. NO WARRANTY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN &ldquo;AS IS&rdquo; BASIS, WITHOUT
-      WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-      WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-      MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is
-      solely responsible for determining the appropriateness of using and
-      distributing the Program and assumes all risks associated with its
-      exercise of rights under this Agreement, including but not limited to the
-      risks and costs of program errors, compliance with applicable laws, damage
-      to or loss of data, programs or equipment, and unavailability or
-      interruption of operations.
-    </p>
-    <h2 id="disclaimer">6. DISCLAIMER OF LIABILITY</h2>
-    <p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT PERMITTED
-      BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY
-      LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
-      OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS),
-      HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-      LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-      OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-      GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-    </p>
-    <h2 id="general">7. GENERAL</h2>
-    <p>If any provision of this Agreement is invalid or unenforceable under
-      applicable law, it shall not affect the validity or enforceability of the
-      remainder of the terms of this Agreement, and without further action by the
-      parties hereto, such provision shall be reformed to the minimum extent
-      necessary to make such provision valid and enforceable.
-    </p>
-    <p>If Recipient institutes patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-      (excluding combinations of the Program with other software or hardware)
-      infringes such Recipient&#039;s patent(s), then such Recipient&#039;s rights granted
-      under Section 2(b) shall terminate as of the date such litigation is filed.
-    </p>
-    <p>All Recipient&#039;s rights under this Agreement shall terminate if it fails to
-      comply with any of the material terms or conditions of this Agreement and
-      does not cure such failure in a reasonable period of time after becoming
-      aware of such noncompliance. If all Recipient&#039;s rights under this Agreement
-      terminate, Recipient agrees to cease use and distribution of the Program
-      as soon as reasonably practicable. However, Recipient&#039;s obligations under
-      this Agreement and any licenses granted by Recipient relating to the
-      Program shall continue and survive.
-    </p>
-    <p>Everyone is permitted to copy and distribute copies of this Agreement,
-      but in order to avoid inconsistency the Agreement is copyrighted and may
-      only be modified in the following manner. The Agreement Steward reserves
-      the right to publish new versions (including revisions) of this Agreement
-      from time to time. No one other than the Agreement Steward has the right
-      to modify this Agreement. The Eclipse Foundation is the initial Agreement
-      Steward. The Eclipse Foundation may assign the responsibility to serve as
-      the Agreement Steward to a suitable separate entity. Each new version of
-      the Agreement will be given a distinguishing version number. The Program
-      (including Contributions) may always be Distributed subject to the version
-      of the Agreement under which it was received. In addition, after a new
-      version of the Agreement is published, Contributor may elect to Distribute
-      the Program (including its Contributions) under the new version.
-    </p>
-    <p>Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
-      receives no rights or licenses to the intellectual property of any
-      Contributor under this Agreement, whether expressly, by implication,
-      estoppel or otherwise. All rights in the Program not expressly granted
-      under this Agreement are reserved. Nothing in this Agreement is intended
-      to be enforceable by any entity that is not a Contributor or Recipient.
-      No third-party beneficiary rights are created under this Agreement.
-    </p>
-    <h2 id="exhibit-a">Exhibit A &ndash; Form of Secondary Licenses Notice</h2>
-    <p>&ldquo;This Source Code may also be made available under the following 
-    	Secondary Licenses when the conditions for such availability set forth 
-    	in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
-    	version(s), and exceptions or additional permissions here}.&rdquo;
-    </p>
-    <blockquote>
-      <p>Simply including a copy of this Agreement, including this Exhibit A
-        is not sufficient to license the Source Code under Secondary Licenses.
-      </p>
-      <p>If it is not possible or desirable to put the notice in a particular file,
-        then You may include the notice in a location (such as a LICENSE file in a
-        relevant directory) where a recipient would be likely to look for
-        such a notice.
-      </p>
-      <p>You may add additional accurate notices of copyright ownership.</p>
-    </blockquote>
-  </body>
-</html>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/feature.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/feature.xml
deleted file mode 100644
index e6a90b8..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/feature.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature id="org.eclipse.app4mc.emfutils.metamodelviewer.feature" label="AMALTHEA MetaModel Viewer" provider-name="Eclipse APP4MC" version="0.8.3">
-	<copyright url="http://www.example.com/copyright">
-		[Enter Copyright Description here.]
-	</copyright>
-	<description url="http://www.example.com/description">
-		[Enter Feature Description here.]
-	</description>
-	<license url="http://www.example.com/license">
-		[Enter License Description here.]
-	</license>
-	<plugin download-size="0" id="org.eclipse.app4mc.emfutils.metamodelviewer" install-size="0" unpack="false" version="0.0.0"/>
-	<requires>
-		<import plugin="org.eclipse.core.runtime"/>
-		<import plugin="org.eclipse.sphinx.emf"/>
-		<import plugin="org.eclipse.ui"/>
-	</requires>
-</feature>
diff --git a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/pom.xml b/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/pom.xml
deleted file mode 100644
index 0dd477c..0000000
--- a/eclipse-tools/emf-graphical-viewer/features/org.eclipse.app4mc.emfutils.metamodelviewer.feature/pom.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-	<parent>
-		<relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
-		<groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
-		<artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
-		<version>0.8.3</version>
-	</parent>
-
-	<artifactId>org.eclipse.app4mc.emfutils.metamodelviewer.feature</artifactId>
-	<packaging>eclipse-feature</packaging>
-
-</project>
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.classpath b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.classpath
deleted file mode 100644
index 3cd64d4..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry exported="true" kind="lib" path="lib/plantuml-2018.8.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.gitignore b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.gitignore
deleted file mode 100644
index 09e3bc9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/bin/
-/target/
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/META-INF/MANIFEST.MF
deleted file mode 100644
index 19c6390..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,152 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Plantuml
-Bundle-SymbolicName: net.sourceforge.plantuml
-Bundle-Version: 8000.0.0.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ClassPath: lib/plantuml-2018.8.jar
-Export-Package: gen.lib.cdt,
- gen.lib.cgraph,
- gen.lib.circogen,
- gen.lib.common,
- gen.lib.dotgen,
- gen.lib.fdpgen,
- gen.lib.gvc,
- gen.lib.label,
- gen.lib.ortho,
- gen.lib.pack,
- gen.lib.pathplan,
- gen.lib.xdot,
- gen.plugin.core,
- gen.plugin.dot_layout,
- h,
- net.sourceforge.plantuml,
- net.sourceforge.plantuml.activitydiagram,
- net.sourceforge.plantuml.activitydiagram.command,
- net.sourceforge.plantuml.activitydiagram3,
- net.sourceforge.plantuml.activitydiagram3.command,
- net.sourceforge.plantuml.activitydiagram3.ftile,
- net.sourceforge.plantuml.activitydiagram3.ftile.vcompact,
- net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.cond,
- net.sourceforge.plantuml.activitydiagram3.ftile.vertical,
- net.sourceforge.plantuml.anim,
- net.sourceforge.plantuml.ant,
- net.sourceforge.plantuml.api,
- net.sourceforge.plantuml.api.mda.option2,
- net.sourceforge.plantuml.api.mda.option3,
- net.sourceforge.plantuml.asciiart,
- net.sourceforge.plantuml.bpm,
- net.sourceforge.plantuml.braille,
- net.sourceforge.plantuml.brotli,
- net.sourceforge.plantuml.classdiagram,
- net.sourceforge.plantuml.classdiagram.command,
- net.sourceforge.plantuml.code,
- net.sourceforge.plantuml.command,
- net.sourceforge.plantuml.command.note,
- net.sourceforge.plantuml.command.note.sequence,
- net.sourceforge.plantuml.command.regex,
- net.sourceforge.plantuml.compositediagram,
- net.sourceforge.plantuml.compositediagram.command,
- net.sourceforge.plantuml.core,
- net.sourceforge.plantuml.creole,
- net.sourceforge.plantuml.cucadiagram,
- net.sourceforge.plantuml.cucadiagram.dot,
- net.sourceforge.plantuml.cucadiagram.entity,
- net.sourceforge.plantuml.cute,
- net.sourceforge.plantuml.dedication,
- net.sourceforge.plantuml.definition,
- net.sourceforge.plantuml.descdiagram,
- net.sourceforge.plantuml.descdiagram.command,
- net.sourceforge.plantuml.directdot,
- net.sourceforge.plantuml.donors,
- net.sourceforge.plantuml.eggs,
- net.sourceforge.plantuml.eps,
- net.sourceforge.plantuml.flashcode,
- net.sourceforge.plantuml.flowdiagram,
- net.sourceforge.plantuml.font,
- net.sourceforge.plantuml.ftp,
- net.sourceforge.plantuml.fun,
- net.sourceforge.plantuml.geom,
- net.sourceforge.plantuml.geom.kinetic,
- net.sourceforge.plantuml.golem,
- net.sourceforge.plantuml.graph,
- net.sourceforge.plantuml.graph2,
- net.sourceforge.plantuml.graphic,
- net.sourceforge.plantuml.graphic.color,
- net.sourceforge.plantuml.hector,
- net.sourceforge.plantuml.hector2,
- net.sourceforge.plantuml.hector2.continuity,
- net.sourceforge.plantuml.hector2.graphic,
- net.sourceforge.plantuml.hector2.layering,
- net.sourceforge.plantuml.hector2.mpos,
- net.sourceforge.plantuml.html,
- net.sourceforge.plantuml.jdot,
- net.sourceforge.plantuml.jungle,
- net.sourceforge.plantuml.math,
- net.sourceforge.plantuml.mda,
- net.sourceforge.plantuml.mjpeg,
- net.sourceforge.plantuml.objectdiagram,
- net.sourceforge.plantuml.objectdiagram.command,
- net.sourceforge.plantuml.openiconic,
- net.sourceforge.plantuml.openiconic.data,
- net.sourceforge.plantuml.oregon,
- net.sourceforge.plantuml.pdf,
- net.sourceforge.plantuml.png,
- net.sourceforge.plantuml.posimo,
- net.sourceforge.plantuml.postit,
- net.sourceforge.plantuml.preproc,
- net.sourceforge.plantuml.printskin,
- net.sourceforge.plantuml.project,
- net.sourceforge.plantuml.project.command,
- net.sourceforge.plantuml.project.graphic,
- net.sourceforge.plantuml.project2,
- net.sourceforge.plantuml.project2.command,
- net.sourceforge.plantuml.project3,
- net.sourceforge.plantuml.real,
- net.sourceforge.plantuml.salt,
- net.sourceforge.plantuml.salt.element,
- net.sourceforge.plantuml.salt.factory,
- net.sourceforge.plantuml.sequencediagram,
- net.sourceforge.plantuml.sequencediagram.command,
- net.sourceforge.plantuml.sequencediagram.graphic,
- net.sourceforge.plantuml.sequencediagram.puma,
- net.sourceforge.plantuml.sequencediagram.teoz,
- net.sourceforge.plantuml.skin,
- net.sourceforge.plantuml.skin.bluemodern,
- net.sourceforge.plantuml.skin.rose,
- net.sourceforge.plantuml.statediagram,
- net.sourceforge.plantuml.statediagram.command,
- net.sourceforge.plantuml.stats,
- net.sourceforge.plantuml.stats.api,
- net.sourceforge.plantuml.suggest,
- net.sourceforge.plantuml.svek,
- net.sourceforge.plantuml.svek.extremity,
- net.sourceforge.plantuml.svek.image,
- net.sourceforge.plantuml.svg,
- net.sourceforge.plantuml.swing,
- net.sourceforge.plantuml.syntax,
- net.sourceforge.plantuml.telnet,
- net.sourceforge.plantuml.tikz,
- net.sourceforge.plantuml.timingdiagram,
- net.sourceforge.plantuml.ugraphic,
- net.sourceforge.plantuml.ugraphic.arc,
- net.sourceforge.plantuml.ugraphic.crossing,
- net.sourceforge.plantuml.ugraphic.eps,
- net.sourceforge.plantuml.ugraphic.g2d,
- net.sourceforge.plantuml.ugraphic.hand,
- net.sourceforge.plantuml.ugraphic.html5,
- net.sourceforge.plantuml.ugraphic.sprite,
- net.sourceforge.plantuml.ugraphic.svg,
- net.sourceforge.plantuml.ugraphic.tikz,
- net.sourceforge.plantuml.ugraphic.txt,
- net.sourceforge.plantuml.ugraphic.visio,
- net.sourceforge.plantuml.utils,
- net.sourceforge.plantuml.version,
- net.sourceforge.plantuml.vizjs,
- net.sourceforge.plantuml.xmi,
- net.sourceforge.plantuml.xmlsc,
- net.sourceforge.plantuml.zopfli,
- smetana.core,
- smetana.core.amiga,
- smetana.core.debug
-Automatic-Module-Name: net.sourceforge.plantuml
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/build.properties b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/build.properties
deleted file mode 100644
index dc20abe..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/build.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# *******************************************************************************
-#  Copyright (c) 2017 - 2018 Robert Bosch GmbH and others.
-#  All rights reserved. This program and the accompanying materials
-#  are made available under the terms of the Eclipse Public License 2.0
-#  which accompanies this distribution, and is available at
-#  https://www.eclipse.org/legal/epl-2.0/
-# 
-#   Contributors:
-#  	 Robert Bosch GmbH - initial API and implementation
-# 
-# *******************************************************************************
-bin.includes = META-INF/,\
-               lib-src/,\
-               lib/plantuml-2018.8.jar
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/README.txt b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/README.txt
deleted file mode 100644
index 6416959..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/README.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-Goto http://plantuml.sourceforge.net/ for product info
-
-CQ clearance as a part of eclipse IPZilla (CQ 8178): https://dev.eclipse.org/ipzilla/show_bug.cgi?id=8178 
-
-Downloaded jar from : http://sourceforge.net/projects/plantuml/files/plantuml-jar-epl-8000.zip/download
-
-Downloaded sources from :  https://dev.eclipse.org/ipzilla/attachment.cgi?id=11627
\ No newline at end of file
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/plantuml-sources-epl-8000.zip b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/plantuml-sources-epl-8000.zip
deleted file mode 100644
index 69db480..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib-src/plantuml-sources-epl-8000.zip
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib/plantuml-2018.8.jar b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib/plantuml-2018.8.jar
deleted file mode 100644
index 7f4bde6..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/lib/plantuml-2018.8.jar
+++ /dev/null
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/license/license.txt b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/license/license.txt
deleted file mode 100644
index 47adaf9..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/license/license.txt
+++ /dev/null
@@ -1,42 +0,0 @@
-========================================================================
-PlantUML : a free UML diagram generator
-========================================================================
-
-(C) Copyright 2009-2014, Arnaud Roques
-
-Project Info:  http://plantuml.sourceforge.net
-
-PlantUML is free software; you can redistribute it and/or modify it
-under the terms of the Eclipse Public License.
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). [Eclipse Public License - v 1.0]
-
-ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
-RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-You may obtain a copy of the License at
-
-http://www.eclipse.org/legal/epl-v10.html
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Note that images (whatever their format : PNG, SVG...) generated by running PlantUML
-are owned by the author of their corresponding sources code (that is, their
-textual description in PlantUML language). Those images are not covered by
-the Eclipse Public License.
-
-The generated images can then be used without any reference to the Eclipse Public License.
-It is not even necessary to stipulate that they have been generated with PlantUML,
-also this will be appreciate by PlantUML team.
-
-There is an exception : if the textual description in PlantUML language is also covered
-by a license (like the EPL), then the generated images are logically covered
-by the very same license.
-
-Icon provided by OpenIconic :  https://useiconic.com/open/
-
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/pom.xml b/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/pom.xml
deleted file mode 100644
index f489eaa..0000000
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-	<modelVersion>4.0.0</modelVersion>
-
-<parent>
-		<relativePath>../../build/org.eclipse.app4mc.emfutils.extractor.build</relativePath>
-		<groupId>org.eclipse.app4mc.emfutils.content.extractor</groupId>
-		<artifactId>org.eclipse.app4mc.emfutils.extractor.build</artifactId>
-		<version>0.8.3</version>
-	</parent>
-
-	<artifactId>net.sourceforge.plantuml</artifactId>
-	<packaging>eclipse-plugin</packaging>
-	<version>8000.0.0-SNAPSHOT</version>
-
-</project>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.classpath
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.classpath
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.gitignore b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.gitignore
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.project
similarity index 91%
copy from eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.project
index 7614bd0..751de6a 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/net.sourceforge.plantuml/.project
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>net.sourceforge.plantuml</name>
+	<name>org.eclipse.app4mc.emf.metamodelviewer</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..b54e4f2
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/META-INF/MANIFEST.MF
@@ -0,0 +1,20 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC EMF Metamodel Viewer
+Bundle-SymbolicName: org.eclipse.app4mc.emf.metamodelviewer;singleton:=true
+Bundle-Version: 0.9.8.qualifier
+Bundle-Vendor: Eclipse APP4MC
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.sphinx.emf,
+ org.eclipse.jface;bundle-version="3.14.0",
+ org.eclipse.ui
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Activator: org.eclipse.app4mc.emf.metamodelviewer.base.Activator
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.app4mc.emf.metamodelviewer.base,
+ org.eclipse.app4mc.emf.metamodelviewer.dialogs,
+ org.eclipse.app4mc.emf.metamodelviewer.preferences,
+ org.eclipse.app4mc.emf.metamodelviewer.utils,
+ org.eclipse.app4mc.emf.metamodelviewer.views,
+ org.eclipse.app4mc.emf.metamodelviewer.views.providers
+Automatic-Module-Name: org.eclipse.app4mc.emf.metamodelviewer
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/about.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/about.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/about.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/build.properties b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/build.properties
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/build.properties
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/build.properties
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/epl-2.0.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/epl-2.0.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/abstract_class_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/abstract_class_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/abstract_class_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/abstract_class_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_containment.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_containment.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_containment.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_containment.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_reference.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_reference.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/attribute_reference.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/attribute_reference.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/class_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/class_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/class_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/class_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/container.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/container.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/container.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/container.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/downward_co.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/downward_co.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/downward_co.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/downward_co.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/enum_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/enum_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/enum_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/enum_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/hierarchy.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/hierarchy.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/hierarchy.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/hierarchy.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/interface_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/interface_obj.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/interface_obj.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/interface_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/prop_ps.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/prop_ps.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/register_ecores.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/register_ecores.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/register_ecores.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/register_ecores.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/sample.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/sample.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/super_co.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/super_co.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/type_obj.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/type_obj.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/type_obj.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/icons/type_obj.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/plugin.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/plugin.xml
new file mode 100644
index 0000000..8834d5d
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.ui.views">
+      <category
+            name="Meta Model Explorer"
+            id="org.eclipse.app4mc.emf.metamodelviewer.explorer.view.category">
+      </category>
+      <view
+            allowMultiple="true"
+            category="org.eclipse.app4mc.emf.metamodelviewer.explorer.view.category"
+            class="org.eclipse.app4mc.emf.metamodelviewer.views.MetaModelExplorerView"
+            icon="icons/sample.gif"
+            id="org.eclipse.app4mc.emf.metamodelviewer.views.MetaModel-ExplorerView"
+            name="Meta Model Explorer">
+      </view>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.preferences">
+      <initializer
+            class="org.eclipse.app4mc.emf.metamodelviewer.preferences.PreferenceInitializer">
+      </initializer>
+   </extension>
+   <extension
+         point="org.eclipse.ui.preferencePages">
+      <page
+            class="org.eclipse.app4mc.emf.metamodelviewer.preferences.MetaModelViewerPreferencePage"
+            id="org.eclipse.app4mc.emf.metamodelviewer.page1"
+            name="Meta Model Viewer">
+      </page>
+   </extension>
+
+</plugin>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/base/Activator.java
similarity index 86%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/base/Activator.java
index c86b924..952b3f5 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/base/Activator.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.content.extractor;
+
+package org.eclipse.app4mc.emf.metamodelviewer.base;
 
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
@@ -23,7 +24,7 @@
 public class Activator extends AbstractUIPlugin {
 
 	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.app4mc.emfutils.content.extractor"; //$NON-NLS-1$
+	public static final String PLUGIN_ID = "org.eclipse.app4mc.emf.metamodelviewer"; //$NON-NLS-1$
 
 	// The shared instance
 	private static Activator plugin;
@@ -36,7 +37,7 @@
 
 	/*
 	 * (non-Javadoc)
-	 * 
+	 *
 	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
 	 */
 	@Override
@@ -47,7 +48,7 @@
 
 	/*
 	 * (non-Javadoc)
-	 * 
+	 *
 	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
 	 */
 	@Override
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/dialogs/SelectedElementContentDialog.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/dialogs/SelectedElementContentDialog.java
similarity index 84%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/dialogs/SelectedElementContentDialog.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/dialogs/SelectedElementContentDialog.java
index 71538d3..8de6d96 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/dialogs/SelectedElementContentDialog.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/dialogs/SelectedElementContentDialog.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,15 +12,16 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.dialogs;
+
+package org.eclipse.app4mc.emf.metamodelviewer.dialogs;
 
 import java.util.AbstractMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map.Entry;
 
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
-import org.eclipse.app4mc.emfutils.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.action.IContributionItem;
@@ -54,7 +55,6 @@
 		this.iWorkbenchPartSite = iWorkbenchPartSite;
 	}
 
-
 	@Override
 	protected Control createDialogArea(final Composite parent) {
 		final Composite container = (Composite) super.createDialogArea(parent);
@@ -73,13 +73,11 @@
 		//
 		// this.tv = filteredTree.getViewer();
 
-
 		this.tv = new TreeViewer(container);
 		this.tv.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
 		this.tv.setContentProvider(
-				new org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewContentProvider());
-		this.tv.setLabelProvider(new org.eclipse.app4mc.emfutils.metamodelviewer.views.providers.ViewLabelProvider());
-
+				new org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewContentProvider());
+		this.tv.setLabelProvider(new org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewLabelProvider());
 
 		final Entry<String, EObject> entry = new AbstractMap.SimpleEntry<String, EObject>("Selected Element",
 				this.eObject);
@@ -117,7 +115,6 @@
 		getIWorkbenchPartSite().registerContextMenu(menuMgr, this.tv);
 	}
 
-
 	private void hookDoubleClickAction() {
 		this.tv.addDoubleClickListener(new IDoubleClickListener() {
 			@Override
@@ -129,20 +126,24 @@
 				if (selection instanceof TreeSelection) {
 					final Object firstElement = ((TreeSelection) selection).getFirstElement();
 					if (firstElement instanceof EObject) {
-						 Shell parentShell = null;
-							
-							String displayDialogStyle=(Activator.getDefault().getPreferenceStore().getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
-							
-							if(displayDialogStyle !=null && displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)){
-								parentShell=new Shell(SWT.ON_TOP);
-							}else{
-								parentShell=new Shell();
-							}
+						Shell parentShell = null;
 
-						// final String name = ((firstElement instanceof EClass) ? ((EClass) firstElement).getName() :
+						String displayDialogStyle = (Activator.getDefault().getPreferenceStore()
+								.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
+
+						if (displayDialogStyle != null
+								&& displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)) {
+							parentShell = new Shell(SWT.ON_TOP);
+						} else {
+							parentShell = new Shell();
+						}
+
+						// final String name = ((firstElement instanceof EClass) ? ((EClass)
+						// firstElement).getName() :
 						// "");
 						//
-						// parentShell.setText("Details of : " + ((EClass) firstElement).eClass().getName() + " " +
+						// parentShell.setText("Details of : " + ((EClass)
+						// firstElement).eClass().getName() + " " +
 						// name);
 						//
 						//
@@ -153,7 +154,6 @@
 						// taskItem.setOverlayText(name);
 						// taskItem.setText(name);
 
-
 						new SelectedElementContentDialog(parentShell, getIWorkbenchPartSite(), (EObject) firstElement)
 								.open();
 
@@ -186,14 +186,12 @@
 		return new Point(450, 300);
 	}
 
-
 	@Override
 	protected void setShellStyle(final int newShellStyle) {
 		super.setShellStyle(SWT.CLOSE | SWT.MODELESS | SWT.BORDER | SWT.TITLE | SWT.RESIZE);
 		setBlockOnOpen(false);
 	}
 
-
 	public IWorkbenchPartSite getIWorkbenchPartSite() {
 		return this.iWorkbenchPartSite;
 	}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
similarity index 86%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
index 7a9cfcf..33bf14b 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferenceConstants.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.preferences;
+
+package org.eclipse.app4mc.emf.metamodelviewer.preferences;
 
 /**
  * Constant definitions for plug-in preferences
@@ -22,8 +23,7 @@
 	public static final String P_DIALOG_DISPLAY = "P_DIALOG_DISPLAY";
 
 	public static final String V_ON_TOP = "On Top";
-	
-	public static final String V_DEFAUT = "Default";
 
+	public static final String V_DEFAUT = "Default";
 
 }
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferencePage.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
similarity index 66%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
index ae3c590..4fdf827 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/MetaModelViewerPreferencePage.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,24 +12,21 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.preferences;
 
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
+package org.eclipse.app4mc.emf.metamodelviewer.preferences;
+
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
 import org.eclipse.jface.preference.ComboFieldEditor;
 import org.eclipse.jface.preference.FieldEditorPreferencePage;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPreferencePage;
 
- 
-
-public class MetaModelViewerPreferencePage extends FieldEditorPreferencePage
-		implements IWorkbenchPreferencePage {
+public class MetaModelViewerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
 
 	public MetaModelViewerPreferencePage() {
 		super(GRID);
 		setPreferenceStore(Activator.getDefault().getPreferenceStore());
-		setDescription(
-				"Preference page to specify the properties/behaviour of MetaModel viewer");
+		setDescription("Preference page to specify the properties/behaviour of MetaModel viewer");
 	}
 
 	/**
@@ -39,17 +36,12 @@
 	@Override
 	public void createFieldEditors() {
 
- 
+		final String[][] options = {
+				{ MetaModelViewerPreferenceConstants.V_DEFAUT, MetaModelViewerPreferenceConstants.V_DEFAUT },
+				{ MetaModelViewerPreferenceConstants.V_ON_TOP, MetaModelViewerPreferenceConstants.V_ON_TOP } };
 
-		final String[][] options = { { MetaModelViewerPreferenceConstants.V_DEFAUT,
-			MetaModelViewerPreferenceConstants.V_DEFAUT} ,{ MetaModelViewerPreferenceConstants.V_ON_TOP, MetaModelViewerPreferenceConstants.V_ON_TOP }
-				};
-		
-		
-		addField(new ComboFieldEditor(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY, "&Configure the way child dialogs should be displayed", options,
-				getFieldEditorParent()));
-
-		 
+		addField(new ComboFieldEditor(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY,
+				"&Configure the way child dialogs should be displayed", options, getFieldEditorParent()));
 
 	}
 
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/PreferenceInitializer.java
similarity index 75%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/PreferenceInitializer.java
index 08cdcee..2efdec9 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/preferences/PreferenceInitializer.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/preferences/PreferenceInitializer.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,9 +12,10 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.preferences;
 
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
+package org.eclipse.app4mc.emf.metamodelviewer.preferences;
+
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
 import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
 import org.eclipse.jface.preference.IPreferenceStore;
 
@@ -31,7 +32,9 @@
 	@Override
 	public void initializeDefaultPreferences() {
 		final IPreferenceStore store = Activator.getDefault().getPreferenceStore();
-		store.setDefault(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY, store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) != null
-				? store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) : "");
+		store.setDefault(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY,
+				store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY) != null
+						? store.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY)
+						: "");
 	}
 }
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/ElementSearchPatternFilter.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/ElementSearchPatternFilter.java
similarity index 82%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/ElementSearchPatternFilter.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/ElementSearchPatternFilter.java
index 9fd047a..d11f69b 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/ElementSearchPatternFilter.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/ElementSearchPatternFilter.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
 
 import org.eclipse.emf.ecore.EClassifier;
 import org.eclipse.emf.ecore.EStructuralFeature;
@@ -21,7 +22,6 @@
 
 public class ElementSearchPatternFilter extends PatternFilter {
 
-
 	private boolean filterForEClassifiersBoolean;
 
 	private boolean filterForAttributesBoolean;
@@ -38,11 +38,9 @@
 
 		if (element instanceof SuperClassesListBuilder) {
 			return false;
-		}
-		else if (element instanceof SubClassesListBuilder) {
+		} else if (element instanceof SubClassesListBuilder) {
 			return false;
-		}
-		else if (element instanceof EStructuralFeature) {
+		} else if (element instanceof EStructuralFeature) {
 			return false;
 		}
 
@@ -62,21 +60,17 @@
 			}
 			return super.isLeafMatch(viewer, element);
 
-		}
-		else if ((element instanceof EStructuralFeature)) {
+		} else if ((element instanceof EStructuralFeature)) {
 			if (!isFilterForAttributesBoolean()) {
 				return false;
 			}
 			return super.isLeafMatch(viewer, element);
 
-		}
-		else if (element instanceof SuperClassesListBuilder) {
+		} else if (element instanceof SuperClassesListBuilder) {
 			return false;
-		}
-		else if (element instanceof org.eclipse.app4mc.emfutils.metamodelviewer.utils.SubClassesListBuilder) {
+		} else if (element instanceof org.eclipse.app4mc.emf.metamodelviewer.utils.SubClassesListBuilder) {
 			return false;
-		}
-		else if (element instanceof TypeElement) {
+		} else if (element instanceof TypeElement) {
 			return false;
 		}
 		return super.isLeafMatch(viewer, element);
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/PluginUtils.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/PluginUtils.java
similarity index 82%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/PluginUtils.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/PluginUtils.java
index de67922..6d84865 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/PluginUtils.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/PluginUtils.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,12 +12,13 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
 
 import java.io.IOException;
 import java.net.URL;
 
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.jface.resource.ImageDescriptor;
 
@@ -34,11 +35,9 @@
 				fileURL = FileLocator.toFileURL(entry);
 				if (fileURL != null) {
 
-
 					return ImageDescriptor.createFromURL(fileURL);
 				}
-			}
-			catch (final IOException e) {
+			} catch (final IOException e) {
 				e.printStackTrace();
 			}
 
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
similarity index 82%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
index 814999c..e57bad8 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/RegisterECOREfilesAction.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/RegisterECOREfilesAction.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -13,7 +13,7 @@
  ********************************************************************************
  */
 
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
 
 import java.io.File;
 import java.io.IOException;
@@ -26,8 +26,8 @@
 import org.eclipse.emf.common.util.URI;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
 import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
@@ -39,48 +39,47 @@
 
 	@SuppressWarnings({ "unused", "rawtypes", "unchecked" })
 	public static ResourceSet loadECOREs(List<String> ecoreFiles, ComboViewer combo_ecore) throws IOException {
-		
+
 		final Registry master_ePackageRegistry = EPackage.Registry.INSTANCE;
-		
+
 		System.out.println(master_ePackageRegistry.size());
-		
+
 		ResourceSet metaDataResourceSet = new ResourceSetImpl();
 
-		if(metaDataResourceSet instanceof ResourceSetImpl){
+		if (metaDataResourceSet instanceof ResourceSetImpl) {
 			((ResourceSetImpl) metaDataResourceSet).setURIResourceMap(new HashMap<>());
 		}
-		Map<String, Object> extensionToFactoryMap = metaDataResourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap();
+		Map<String, Object> extensionToFactoryMap = metaDataResourceSet.getResourceFactoryRegistry()
+				.getExtensionToFactoryMap();
 
 		extensionToFactoryMap.put("ecore", new EcoreResourceFactoryImpl());
 
 //		extensionToFactoryMap.put("xmi", new XMIResourceFactoryImpl());
-		
+
 		// resourceSet.getURIConverter().getURIMap().putAll(EcorePlugin.computePlatformURIMap(true));
 
 		EcorePackage ecorePackage = EcorePackage.eINSTANCE;
 
 		// register Ecore model in resourceSet registry
 		Map packageRegistry = metaDataResourceSet.getPackageRegistry();
-		
-		  packageRegistry.put("http://www.eclipse.org/emf/2002/Ecore",
-				  EcorePackage.eINSTANCE);
-		
+
+		packageRegistry.put("http://www.eclipse.org/emf/2002/Ecore", EcorePackage.eINSTANCE);
 
 		for (String ecorePath : ecoreFiles) {
 
 			EPackage loadEPackage = loadEPackage(ecorePath, metaDataResourceSet);
 
-			if(packageRegistry.containsKey(loadEPackage.getNsURI())){
+			if (packageRegistry.containsKey(loadEPackage.getNsURI())) {
 				Object object = packageRegistry.get(loadEPackage.getNsURI());
-				
-				if(object instanceof EPackage){
-					((EPackage)object).getESubpackages().add(loadEPackage);
+
+				if (object instanceof EPackage) {
+					((EPackage) object).getESubpackages().add(loadEPackage);
 				}
-			}else{
+			} else {
 				packageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
-				
+
 			}
-			
+
 //			master_ePackageRegistry.put(loadEPackage.getNsURI(), loadEPackage);
 
 		}
@@ -88,27 +87,24 @@
 		EcoreUtil.resolveAll(metaDataResourceSet);
 
 		/*-for sorting */
-		
+
 		ArrayList arrayList = new ArrayList(master_ePackageRegistry.keySet());
 
 		Collections.sort(arrayList);
-		
+
 		arrayList.addAll(0, metaDataResourceSet.getPackageRegistry().keySet());
-		
+
 		master_ePackageRegistry.putAll(metaDataResourceSet.getPackageRegistry());
-		
-		
+
 		combo_ecore.setInput(arrayList.toArray());
-		
-		
+
 		return metaDataResourceSet;
 	}
-	
-	private static EPackage loadEPackage(String path,  ResourceSet metaResourceSet) throws IOException { 
 
+	private static EPackage loadEPackage(String path, ResourceSet metaResourceSet) throws IOException {
 
 //		path = path.contains("file:////") ? path : "file:////" + getCanonicalPathFullPath(path);
-		path =  getCanonicalPathFullPath(path);
+		path = getCanonicalPathFullPath(path);
 
 //		Resource metaResource = metaResourceSet.getResource(URI.createURI(path), true);
 		Resource metaResource = metaResourceSet.getResource(URI.createFileURI(path), true);
@@ -118,9 +114,9 @@
 		EObject eObject = metaResource.getContents().get(0);
 
 		return (EPackage) eObject;
-	
+
 	}
-	
+
 	private static String getCanonicalPathFullPath(String path) throws IOException {
 
 		File file = new File(path);
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SubClassesListBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SubClassesListBuilder.java
similarity index 88%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SubClassesListBuilder.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SubClassesListBuilder.java
index 040bb44..d0a6fbc 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SubClassesListBuilder.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SubClassesListBuilder.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
 
 import java.util.ArrayList;
 import java.util.HashSet;
@@ -51,12 +52,10 @@
 
 				this.allSubClasses.addAll(classList.getAllSubClasses());
 
-
 			}
 
 		}
 
-
 		return this.allSubClasses;
 
 	}
@@ -82,30 +81,29 @@
 //					final EObject eObject = contents.get(0);
 
 					for (EObject eObj : contents) {
-						
+
 						if (eObj instanceof EPackage) {
 							allSubClasses.addAll(getSubClasses(selectedObjClass, (EPackage) eObj));
 						}
-						
+
 					}
 				}
 
 			}
-		}
-		else {
+		} else {
 
 			final EPackage ePackage = selectedObjClass.getEPackage();
-			
-			if(ePackage !=null){
-				EObject rootEPackage=org.eclipse.emf.ecore.util.EcoreUtil.getRootContainer(selectedObjClass);
-				
-				if(rootEPackage instanceof EPackage){
+
+			if (ePackage != null) {
+				EObject rootEPackage = org.eclipse.emf.ecore.util.EcoreUtil.getRootContainer(selectedObjClass);
+
+				if (rootEPackage instanceof EPackage) {
 					return getSubClasses(selectedObjClass, (EPackage) rootEPackage);
-				} 
-			} 
-				
-				return getSubClasses(selectedObjClass, ePackage);
-			
+				}
+			}
+
+			return getSubClasses(selectedObjClass, ePackage);
+
 		}
 
 		return allSubClasses;
@@ -113,17 +111,15 @@
 	}
 
 	private List<EClass> getSubClasses(final EClass selectedObjClass, final EPackage ePackage) {
-		
-		
-		
+
 		final List<EClass> allSubClasses = new ArrayList<EClass>();
 
 		EList<EPackage> eSubpackages = ePackage.getESubpackages();
-		
+
 		for (EPackage eSubPackage : eSubpackages) {
 			allSubClasses.addAll(getSubClasses(selectedObjClass, eSubPackage));
 		}
-		
+
 		final EList<EClassifier> eClassifiers = ePackage.getEClassifiers();
 
 		for (final EClassifier eClassifier : eClassifiers) {
@@ -134,7 +130,6 @@
 					allSubClasses.add((EClass) eClassifier);
 				}
 
-
 			}
 		}
 		return allSubClasses;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SuperClassesListBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SuperClassesListBuilder.java
similarity index 91%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SuperClassesListBuilder.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SuperClassesListBuilder.java
index 9f7991f..8d38bf2 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/SuperClassesListBuilder.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/SuperClassesListBuilder.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -46,7 +47,6 @@
 
 				this.allSuperClasses.addAll(classList.getAllSuperClasses());
 
-
 			}
 		}
 
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/TypeElement.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/TypeElement.java
similarity index 87%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/TypeElement.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/TypeElement.java
index 886f3f9..543e82e 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/utils/TypeElement.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/utils/TypeElement.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.utils;
+
+package org.eclipse.app4mc.emf.metamodelviewer.utils;
 
 import org.eclipse.emf.ecore.EClassifier;
 
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java
new file mode 100644
index 0000000..dea0599
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/MetaModelExplorerView.java
@@ -0,0 +1,448 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *     Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.metamodelviewer.views;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.dialogs.SelectedElementContentDialog;
+import org.eclipse.app4mc.emf.metamodelviewer.preferences.MetaModelViewerPreferenceConstants;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.ElementSearchPatternFilter;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.PluginUtils;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.RegisterECOREfilesAction;
+import org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewContentProvider;
+import org.eclipse.app4mc.emf.metamodelviewer.views.providers.ViewLabelProvider;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EPackage.Registry;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.jface.viewers.DoubleClickEvent;
+import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.TreeSelection;
+import org.eclipse.jface.viewers.TreeViewer;
+import org.eclipse.sphinx.emf.metamodel.IMetaModelDescriptor;
+import org.eclipse.sphinx.emf.metamodel.MetaModelDescriptorRegistry;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.dialogs.FilteredTree;
+import org.eclipse.ui.part.ViewPart;
+
+public class MetaModelExplorerView extends ViewPart {
+	/**
+	 * The ID of the view as specified by the extension.
+	 */
+	public static final String ID = "org.eclipse.app4mc.emf.metamodelviewer.views.MetaModelExplorerView";
+	private static int id_Counter = 1;
+	private TreeViewer viewer;
+	private Action filterClassesAction;
+	private Action registerEcoreFilesAction;
+	private Action filterAttributesAction;
+	private Action cloneViewAction;
+	private boolean filterForEClassifiersBoolean = true;
+	private boolean filterForAttributesBoolean;
+	private ElementSearchPatternFilter patternFilter;
+	private ComboViewer combo_ecore;
+
+	/**
+	 * The constructor.
+	 */
+	public MetaModelExplorerView() {
+	}
+
+	/**
+	 * This is a callback that will allow us to create the viewer and initialize it.
+	 */
+	@Override
+	public void createPartControl(final Composite parent) {
+		parent.setLayout(new GridLayout(2, false));
+
+		final Label label = new Label(parent, 0);
+
+		label.setText("SPHINX Registry");
+
+		label.setLayoutData(new GridData());
+
+		final Combo combo = new Combo(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+
+		final Label label_ecore = new Label(parent, 0);
+
+		label_ecore.setText("ECORE Registry");
+
+		label_ecore.setLayoutData(new GridData());
+
+		combo_ecore = new ComboViewer(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.READ_ONLY);
+
+		final Registry ePackageRegistry = EPackage.Registry.INSTANCE;
+
+		final Set<String> keySet = ePackageRegistry.keySet();
+		// for (final String string : new TreeSet<String>(keySet)) {
+		//
+		// combo_ecore.add(string);
+		// }
+		combo_ecore.setContentProvider(ArrayContentProvider.getInstance());
+		combo_ecore.setLabelProvider(new LabelProvider() {
+			@Override
+			public String getText(Object element) {
+				return super.getText(element);
+			}
+		});
+
+		ArrayList<String> arrayList = new ArrayList<String>(keySet);
+
+		Collections.sort(arrayList);
+
+		combo_ecore.setInput(arrayList.toArray());
+
+		combo_ecore.getCombo().addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(final SelectionEvent e) {
+				combo.deselectAll();
+
+				final String text = combo_ecore.getCombo().getText();
+
+				final EPackage ePackage = ePackageRegistry.getEPackage(text);
+
+				getViewer().setInput(ePackage);
+			}
+		});
+
+		final List<IMetaModelDescriptor> descriptors = MetaModelDescriptorRegistry.INSTANCE
+				.getDescriptors(MetaModelDescriptorRegistry.ANY_MM);
+
+		for (final IMetaModelDescriptor iMetaModelDescriptor : descriptors) {
+			final String identifier = iMetaModelDescriptor.getIdentifier();
+			combo.add(identifier);
+		}
+
+		combo.addSelectionListener(new SelectionAdapter() {
+			@Override
+			public void widgetSelected(final SelectionEvent e) {
+				combo_ecore.getCombo().deselectAll();
+
+				final String text = combo.getText();
+
+				final IMetaModelDescriptor descriptor = MetaModelDescriptorRegistry.INSTANCE.getDescriptor(text);
+
+				getViewer().setInput(descriptor);
+			}
+		});
+
+		this.patternFilter = new ElementSearchPatternFilter(this.filterForEClassifiersBoolean,
+				this.filterForAttributesBoolean);
+
+		final FilteredTree filteredTree = new FilteredTree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER,
+				this.patternFilter, true);
+
+		filteredTree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
+
+		this.viewer = filteredTree.getViewer();
+
+		final GridData gridLayoutData = new GridData();
+		gridLayoutData.horizontalSpan = 2;
+		gridLayoutData.grabExcessHorizontalSpace = true;
+		gridLayoutData.grabExcessVerticalSpace = true;
+		gridLayoutData.horizontalAlignment = GridData.FILL;
+		gridLayoutData.verticalAlignment = GridData.FILL;
+
+		this.viewer.getTree().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 0));
+
+		this.viewer.setContentProvider(new ViewContentProvider());
+
+		this.viewer.setInput(getViewSite());
+
+		this.viewer.setLabelProvider(new ViewLabelProvider());
+
+		getSite().setSelectionProvider(this.viewer);
+
+		makeActions();
+
+		hookContextMenu();
+
+		hookDoubleClickAction();
+
+		contributeToActionBars();
+	}
+
+	public TreeViewer getViewer() {
+		return this.viewer;
+	}
+
+	private void hookContextMenu() {
+		final MenuManager menuMgr = new MenuManager("#PopupMenu") {
+			@Override
+			public IContributionItem[] getItems() {
+				IContributionItem[] menuItems = super.getItems();
+
+				final List<IContributionItem> filteredContributionItems = new LinkedList<IContributionItem>();
+
+				for (final IContributionItem contributionItem : menuItems) {
+					if ((contributionItem != null) && ((contributionItem.getId() != null) && (!(contributionItem.getId()
+							.startsWith("org.eclipse.emf.ecore.editor.CreateDynamicInstance"))))) {
+						filteredContributionItems.add(contributionItem);
+					}
+				}
+
+				menuItems = new IContributionItem[filteredContributionItems.size()];
+
+				return filteredContributionItems.toArray(menuItems);
+			}
+		};
+
+		menuMgr.setRemoveAllWhenShown(true);
+		menuMgr.addMenuListener(new IMenuListener() {
+			@Override
+			public void menuAboutToShow(final IMenuManager manager) {
+				MetaModelExplorerView.this.fillContextMenu(manager);
+			}
+		});
+
+		final Menu menu = menuMgr.createContextMenu(this.viewer.getControl());
+		this.viewer.getControl().setMenu(menu);
+		getSite().registerContextMenu(menuMgr, this.viewer);
+	}
+
+	private void contributeToActionBars() {
+		final IActionBars bars = getViewSite().getActionBars();
+		fillLocalPullDown(bars.getMenuManager());
+		fillLocalToolBar(bars.getToolBarManager());
+	}
+
+	private void fillLocalPullDown(final IMenuManager manager) {
+		manager.add(this.filterClassesAction);
+		manager.add(new Separator());
+		manager.add(this.filterAttributesAction);
+		manager.add(new Separator());
+		manager.add(this.cloneViewAction);
+	}
+
+	void fillContextMenu(final IMenuManager manager) {
+		// manager.add(this.filterClassesAction);
+		// manager.add(this.filterAttributesAction);
+		// manager.add(new Separator());
+		// this.drillDownAdapter.addNavigationActions(manager);
+		// Other plug-ins can contribute there actions here
+		// manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+	}
+
+	private void fillLocalToolBar(final IToolBarManager manager) {
+		manager.add(this.filterClassesAction);
+		manager.add(this.filterAttributesAction);
+		manager.add(new Separator());
+
+		manager.add(this.registerEcoreFilesAction);
+	}
+
+	private void makeActions() {
+		this.filterClassesAction = new Action("Filter for EClassifers", IAction.AS_CHECK_BOX) {
+			@Override
+			public void run() {
+				if (isChecked()) {
+					setFilterForEClassifiersBoolean(true);
+				} else {
+					setFilterForEClassifiersBoolean(false);
+				}
+			}
+		};
+
+		this.filterClassesAction.setEnabled(true);
+
+		this.filterClassesAction.setToolTipText("Filter for EClassifiers");
+		this.filterClassesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/class_obj.png"));
+
+		this.filterAttributesAction = new Action("Filter for Attributes", IAction.AS_CHECK_BOX) {
+			@Override
+			public void run() {
+				if (isChecked()) {
+					setFilterForAttributesBoolean(true);
+				} else {
+					setFilterForAttributesBoolean(false);
+				}
+			}
+		};
+		this.filterAttributesAction.setToolTipText("Filter for Attributes");
+		this.filterAttributesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/prop_ps.gif"));
+
+		this.cloneViewAction = new Action("Clone View", IAction.AS_CHECK_BOX) {
+			@Override
+			public void run() {
+				try {
+					getViewSite().getPage().showView(ID, id_Counter++ + "", IWorkbenchPage.VIEW_VISIBLE);
+				} catch (PartInitException e) {
+					e.printStackTrace();
+				}
+			}
+		};
+		this.cloneViewAction.setToolTipText("Clone View");
+		this.cloneViewAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/prop_ps.gif"));
+
+		this.registerEcoreFilesAction = new Action("Register ECORE files") {
+			@Override
+			public void run() {
+				// TODO: add implementation for CSV report generation
+				Object input = viewer.getInput();
+
+				FileDialog dialog = new FileDialog(Display.getDefault().getActiveShell(), SWT.OPEN | SWT.MULTI);
+
+				dialog.setFilterExtensions(new String[] { "*.ecore" });
+
+				dialog.open();
+
+				if ((dialog.getFileName() == null) || (dialog.getFileNames() == null)) {
+					return;
+				}
+
+				List<String> files = new ArrayList<String>();
+
+				for (String fileName : dialog.getFileNames()) {
+					String filePath = dialog.getFilterPath() + File.separator + fileName;
+
+					files.add(filePath);
+				}
+
+				try {
+					RegisterECOREfilesAction.loadECOREs(files, combo_ecore);
+				} catch (Exception e) {
+					Display.getDefault().asyncExec(new Runnable() {
+						@Override
+						public void run() {
+							MessageDialog.openError(Display.getDefault().getActiveShell(), "Error", e.getMessage());
+						}
+					});
+				}
+			}
+		};
+		this.registerEcoreFilesAction.setToolTipText("Register ECORE files");
+		this.registerEcoreFilesAction.setImageDescriptor(PluginUtils.getImageDescriptor("icons/register_ecores.png"));
+	}
+
+	private void hookDoubleClickAction() {
+		this.viewer.addDoubleClickListener(new IDoubleClickListener() {
+			@Override
+			public void doubleClick(final DoubleClickEvent event) {
+				final ISelection selection = event.getSelection();
+
+				if (selection instanceof TreeSelection) {
+					final Object firstElement = ((TreeSelection) selection).getFirstElement();
+
+					if (firstElement instanceof EObject) {
+						Shell parentShell = null;
+
+						String displayDialogStyle = (Activator.getDefault().getPreferenceStore()
+								.getString(MetaModelViewerPreferenceConstants.P_DIALOG_DISPLAY));
+
+						if ((displayDialogStyle != null)
+								&& displayDialogStyle.equals(MetaModelViewerPreferenceConstants.V_ON_TOP)) {
+							parentShell = new Shell(SWT.ON_TOP);
+						} else {
+							parentShell = new Shell();
+						}
+
+						// final String name = ((firstElement instanceof EClass) ? ((EClass)
+						// firstElement).getName() :
+						// "");
+						//
+						// parentShell.setText("Details of : " + ((EClass)
+						// firstElement).eClass().getName() + " " +
+						// name);
+						//
+						//
+						// final TaskBar systemTaskBar = parentShell.getDisplay().getSystemTaskBar();
+						// final TaskItem taskItem = systemTaskBar.getItem(parentShell);
+						//
+						// taskItem.setData(parentShell);
+						// taskItem.setOverlayText(name);
+						// taskItem.setText(name);
+						new SelectedElementContentDialog(parentShell, getSite(), (EObject) firstElement).open();
+					}
+				}
+			}
+		});
+	}
+
+	/**
+	 * Passing the focus request to the viewer's control.
+	 */
+	@Override
+	public void setFocus() {
+		this.viewer.getControl().setFocus();
+	}
+
+	public Action getFilterClassesAction() {
+		return this.filterClassesAction;
+	}
+
+	public Action getFilterAttributesAction() {
+		return this.filterAttributesAction;
+	}
+
+	public boolean isFilterForEClassifiersBoolean() {
+		return this.filterForEClassifiersBoolean;
+	}
+
+	public boolean isFilterForAttributesBoolean() {
+		return this.filterForAttributesBoolean;
+	}
+
+	public void setFilterClassesAction(final Action filterClassesAction) {
+		this.filterClassesAction = filterClassesAction;
+	}
+
+	public void setFilterAttributesAction(final Action filterAttributesAction) {
+		this.filterAttributesAction = filterAttributesAction;
+	}
+
+	public void setFilterForEClassifiersBoolean(final boolean filterForEClassifiersBoolean) {
+		this.filterForEClassifiersBoolean = filterForEClassifiersBoolean;
+
+		this.patternFilter.setFilterForEClassifiersBoolean(filterForEClassifiersBoolean);
+	}
+
+	public void setFilterForAttributesBoolean(final boolean filterForAttributesBoolean) {
+		this.filterForAttributesBoolean = filterForAttributesBoolean;
+
+		this.patternFilter.setFilterForAttributesBoolean(filterForAttributesBoolean);
+	}
+}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewContentProvider.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewContentProvider.java
similarity index 85%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewContentProvider.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewContentProvider.java
index 22e154f..aa2519d 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewContentProvider.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewContentProvider.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.views.providers;
+
+package org.eclipse.app4mc.emf.metamodelviewer.views.providers;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -22,9 +23,9 @@
 import java.util.Map.Entry;
 import java.util.Set;
 
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SubClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SuperClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.TypeElement;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SubClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SuperClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.TypeElement;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EClassifier;
@@ -48,8 +49,7 @@
 			final Collection<EPackage> ePackages = ((IMetaModelDescriptor) parent).getEPackages();
 
 			return ePackages.toArray();
-		}
-		else if (parent instanceof EPackage) {
+		} else if (parent instanceof EPackage) {
 
 			final EList<EPackage> eSubpackages = ((EPackage) parent).getESubpackages();
 			final EList<EClassifier> eClassifiers = ((EPackage) parent).getEClassifiers();
@@ -58,7 +58,6 @@
 
 			arrayList1.addAll(eSubpackages);
 
-
 			Collections.sort(arrayList1, this.comparator);
 
 			final ArrayList<EClassifier> arrayList2 = new ArrayList<EClassifier>();
@@ -74,8 +73,7 @@
 
 			return combinedList.toArray();
 
-		}
-		else if (parent instanceof Entry) {
+		} else if (parent instanceof Entry) {
 			return new Object[] { ((Entry<?, ?>) parent).getValue() };
 		}
 
@@ -87,11 +85,9 @@
 
 		if (child instanceof EPackage) {
 			return ((EPackage) child).eContainer();
-		}
-		else if (child instanceof EClass) {
+		} else if (child instanceof EClass) {
 			return ((EClass) child).eContainer();
-		}
-		else if (child instanceof EStructuralFeature) {
+		} else if (child instanceof EStructuralFeature) {
 			return ((EStructuralFeature) child).eContainer();
 		}
 
@@ -110,7 +106,6 @@
 
 			arrayList1.addAll(eSubpackages);
 
-
 			Collections.sort(arrayList1, this.comparator);
 
 			final ArrayList<EClassifier> arrayList2 = new ArrayList<EClassifier>();
@@ -126,8 +121,7 @@
 
 			return combinedList.toArray();
 
-		}
-		else if (parent instanceof EClass) {
+		} else if (parent instanceof EClass) {
 
 			final EList<EStructuralFeature> eAllStructuralFeatures = ((EClass) parent).getEAllStructuralFeatures();
 
@@ -135,7 +129,6 @@
 
 			list.addAll(eAllStructuralFeatures);
 
-
 			Collections.sort(list, this.comparator);
 
 			int index = 0;
@@ -154,8 +147,7 @@
 			}
 
 			return list.toArray();
-		}
-		else if (parent instanceof EDataType) {
+		} else if (parent instanceof EDataType) {
 
 			if (parent instanceof EEnum) {
 
@@ -179,8 +171,7 @@
 			Collections.sort(list, this.comparator);
 
 			return list.toArray();
-		}
-		else if (parent instanceof EEnum) {
+		} else if (parent instanceof EEnum) {
 
 			final EList<EEnumLiteral> eLiterals = ((EEnum) parent).getELiterals();
 
@@ -191,24 +182,20 @@
 			Collections.sort(list, this.comparator);
 
 			return list.toArray();
-		}
-		else if (parent instanceof SuperClassesListBuilder) {
+		} else if (parent instanceof SuperClassesListBuilder) {
 			final Set<EClass> allSuperClasses = ((SuperClassesListBuilder) parent).getAllSuperClasses();
 			final ArrayList<ENamedElement> arrayList = new ArrayList<ENamedElement>(allSuperClasses);
 			Collections.sort(arrayList, this.comparator);
 			return arrayList.toArray();
-		}
-		else if (parent instanceof SubClassesListBuilder) {
+		} else if (parent instanceof SubClassesListBuilder) {
 			final Set<EClass> allSubClasses = ((SubClassesListBuilder) parent).getAllSubClasses();
 			final ArrayList<ENamedElement> arrayList = new ArrayList<ENamedElement>(allSubClasses);
 			Collections.sort(arrayList, this.comparator);
 			return arrayList.toArray();
-		}
-		else if (parent instanceof EStructuralFeature) {
+		} else if (parent instanceof EStructuralFeature) {
 			final EClassifier eType = ((EStructuralFeature) parent).getEType();
 			return new Object[] { new TypeElement(eType) };
-		}
-		else if (parent instanceof TypeElement) {
+		} else if (parent instanceof TypeElement) {
 			final EClassifier eType = ((TypeElement) parent).getClassifier();
 			return new Object[] { eType };
 		}
@@ -219,18 +206,15 @@
 	public boolean hasChildren(final Object parent) {
 		if (parent instanceof EPackage) {
 			return true;
-		}
-		else if (parent instanceof EClass) {
+		} else if (parent instanceof EClass) {
 			return true;
-		}
-		else if (parent instanceof EDataType) {
+		} else if (parent instanceof EDataType) {
 
 			if (parent instanceof EEnum) {
 				return ((EEnum) parent).getELiterals().size() > 0;
 			}
 			return ((EDataType) parent).getETypeParameters().size() > 0;
-		}
-		else if (parent instanceof EEnum) {
+		} else if (parent instanceof EEnum) {
 			return ((EEnum) parent).getELiterals().size() > 0;
 		}
 
@@ -240,14 +224,11 @@
 
 		else if (parent instanceof SuperClassesListBuilder) {
 			return ((SuperClassesListBuilder) parent).getAllSuperClasses().size() > 0;
-		}
-		else if (parent instanceof SubClassesListBuilder) {
+		} else if (parent instanceof SubClassesListBuilder) {
 			return ((SubClassesListBuilder) parent).getAllSubClasses().size() > 0;
-		}
-		else if (parent instanceof EEnumLiteral) {
+		} else if (parent instanceof EEnumLiteral) {
 			return false;
-		}
-		else if (parent instanceof TypeElement) {
+		} else if (parent instanceof TypeElement) {
 			return true;
 		}
 		return true;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewLabelProvider.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewLabelProvider.java
similarity index 74%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewLabelProvider.java
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewLabelProvider.java
index 2ce42f0..907a5cd 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/src/org/eclipse/app4mc/emfutils/metamodelviewer/views/providers/ViewLabelProvider.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.metamodelviewer/src/org/eclipse/app4mc/emf/metamodelviewer/views/providers/ViewLabelProvider.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,15 +12,16 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.metamodelviewer.views.providers;
+
+package org.eclipse.app4mc.emf.metamodelviewer.views.providers;
 
 import java.io.IOException;
 import java.net.URL;
 
-import org.eclipse.app4mc.emfutils.metamodelviewer.base.Activator;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SubClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.SuperClassesListBuilder;
-import org.eclipse.app4mc.emfutils.metamodelviewer.utils.TypeElement;
+import org.eclipse.app4mc.emf.metamodelviewer.base.Activator;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SubClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.SuperClassesListBuilder;
+import org.eclipse.app4mc.emf.metamodelviewer.utils.TypeElement;
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.emf.ecore.EAttribute;
 import org.eclipse.emf.ecore.EClass;
@@ -39,12 +40,11 @@
 
 public class ViewLabelProvider extends LabelProvider {
 
-
 	private final Image classImage;
 	private final Image enumImage;
 	private final Image containmentImage;
 	private final Image superClassListImage;
-	private final Image SubClassesListBuilderImage;
+	private final Image subClassListImage;
 	private final Image attributeImage;
 	private final Image attribute_referenceImage;
 	private final Image abstractClassImage;
@@ -57,7 +57,7 @@
 		this.enumImage = getImage("icons/enum_obj.png");
 		this.containmentImage = getImage("icons/attribute_containment.png");
 		this.superClassListImage = getImage("icons/super_co.gif");
-		this.SubClassesListBuilderImage = getImage("icons/downward_co.gif");
+		this.subClassListImage = getImage("icons/downward_co.gif");
 		this.attributeImage = getImage("icons/attribute.png");
 		this.attribute_referenceImage = getImage("icons/attribute_reference.png");
 		this.abstractClassImage = getImage("icons/abstract_class_obj.png");
@@ -65,7 +65,6 @@
 		this.eTypeImage = getImage("icons/type_obj.gif");
 	}
 
-
 	private Image getImage(final String location) {
 
 		final URL entry = Activator.getDefault().getBundle().getEntry(location);
@@ -78,8 +77,7 @@
 				if (fileURL != null) {
 					return new Image(Display.getDefault(), new ImageData(fileURL.getFile()));
 				}
-			}
-			catch (final IOException e) {
+			} catch (final IOException e) {
 				e.printStackTrace();
 			}
 
@@ -87,26 +85,20 @@
 		return null;
 	}
 
-
 	@Override
 	public String getText(final Object child) {
 
 		if (child instanceof EPackage) {
 			return ((EPackage) child).getName();
-		}
-		else if (child instanceof EClass) {
+		} else if (child instanceof EClass) {
 			return ((EClass) child).getName();
-		}
-		else if (child instanceof EDataType) {
+		} else if (child instanceof EDataType) {
 			return ((EDataType) child).getName();
-		}
-		else if (child instanceof EEnum) {
+		} else if (child instanceof EEnum) {
 			return "Enum : " + ((EEnum) child).getName();
-		}
-		else if (child instanceof EEnumLiteral) {
+		} else if (child instanceof EEnumLiteral) {
 			return ((EEnumLiteral) child).getName();
-		}
-		else if (child instanceof EStructuralFeature) {
+		} else if (child instanceof EStructuralFeature) {
 			final EStructuralFeature eStFeature = (EStructuralFeature) child;
 
 			final int lowerBound = eStFeature.getLowerBound();
@@ -119,14 +111,11 @@
 			final String multiplicity = "[" + lowerBoundString + " " + upperBoundString + "]";
 
 			return eStFeature.getName() + "  " + multiplicity + " " + eStFeature.getEType().getName();
-		}
-		else if (child instanceof SuperClassesListBuilder) {
-			return "Super Classes";
-		}
-		else if (child instanceof SubClassesListBuilder) {
-			return "All-Sub Classes";
-		}
-		else if (child instanceof TypeElement) {
+		} else if (child instanceof SuperClassesListBuilder) {
+			return "All Super Classes (flat)";
+		} else if (child instanceof SubClassesListBuilder) {
+			return "All Sub Classes (flat)";
+		} else if (child instanceof TypeElement) {
 			return "<--EType-->";
 		}
 		return child.toString();
@@ -137,28 +126,24 @@
 		String imageKey = ISharedImages.IMG_OBJ_ELEMENT;
 		if (obj instanceof EPackage) {
 			imageKey = ISharedImages.IMG_OBJ_FOLDER;
-		}
-		else if (obj instanceof EStructuralFeature && obj instanceof EReference) {
+		} else if (obj instanceof EStructuralFeature && obj instanceof EReference) {
 
 			if (((EReference) obj).isContainment()) {
 				return this.containmentImage;
 			}
 
 			return this.attribute_referenceImage;
-		}
-		else if (obj instanceof EAttribute) {
+		} else if (obj instanceof EAttribute) {
 			return this.attributeImage;
 
-		}
-		else if (obj instanceof EDataType) {
+		} else if (obj instanceof EDataType) {
 			imageKey = ISharedImages.IMG_OBJ_ELEMENT;
 
 			if (obj instanceof EEnum) {
 				return this.enumImage;
 			}
 
-		}
-		else if (obj instanceof EClass) {
+		} else if (obj instanceof EClass) {
 			if (((EClass) obj).isAbstract() && ((EClass) obj).isInterface()) {
 				return this.interfaceImage;
 			}
@@ -167,18 +152,14 @@
 			}
 
 			return this.classImage;
-		}
-		else if (obj instanceof EEnum) {
+		} else if (obj instanceof EEnum) {
 			return this.enumImage;
-		}
-		else if (obj instanceof SuperClassesListBuilder) {
+		} else if (obj instanceof SuperClassesListBuilder) {
 			return this.superClassListImage;
-		}
-		else if (obj instanceof SubClassesListBuilder) {
+		} else if (obj instanceof SubClassesListBuilder) {
 
-			return this.SubClassesListBuilderImage;
-		}
-		else if (obj instanceof TypeElement) {
+			return this.subClassListImage;
+		} else if (obj instanceof TypeElement) {
 
 			return this.eTypeImage;
 		}
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.classpath
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.classpath
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.classpath
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.gitignore b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.gitignore
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.gitignore
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.gitignore
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.project
similarity index 92%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.project
index 5f0bcdd..c38f4fa 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/.project
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.project
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <projectDescription>
-	<name>org.eclipse.app4mc.emfutils.content.extractor</name>
+	<name>org.eclipse.app4mc.emf.viewer.plantuml</name>
 	<comment></comment>
 	<projects>
 	</projects>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.settings/org.eclipse.jdt.core.prefs
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/.settings/org.eclipse.jdt.core.prefs
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/.settings/org.eclipse.jdt.core.prefs
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/META-INF/MANIFEST.MF b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..63a221b
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/META-INF/MANIFEST.MF
@@ -0,0 +1,37 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: APP4MC EMF Viewer (PlantUML)
+Bundle-SymbolicName: org.eclipse.app4mc.emf.viewer.plantuml;singleton:=true
+Bundle-Version: 0.9.8.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.app4mc.emf.viewer.plantuml.Activator
+Bundle-Vendor: Eclipse APP4MC
+Require-Bundle: com.google.guava,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtend.lib,
+ org.eclipse.xtend.lib.macro,
+ org.eclipse.ui,
+ org.eclipse.ui.browser,
+ org.eclipse.sphinx.emf,
+ org.eclipse.sphinx.emf.editors,
+ org.eclipse.sphinx.emf.editors.forms,
+ org.eclipse.e4.ui.model.workbench,
+ org.eclipse.e4.core.di,
+ org.eclipse.e4.core.contexts,
+ org.eclipse.e4.core.di.extensions,
+ org.eclipse.e4.ui.di,
+ org.eclipse.e4.ui.services,
+ org.eclipse.e4.ui.workbench,
+ org.eclipse.e4.core.services
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-ActivationPolicy: lazy
+Import-Package: javax.annotation;version="1.2.0",
+ javax.inject;version="1.0.0",
+ net.sourceforge.plantuml;version="1.2019.0",
+ net.sourceforge.plantuml.core;version="1.2019.0",
+ net.sourceforge.plantuml.eclipse.utils,
+ org.slf4j;version="1.7.2"
+Automatic-Module-Name: org.eclipse.app4mc.emf.viewer.plantuml
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/about.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/about.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/about.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/about.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/build.properties b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/build.properties
new file mode 100644
index 0000000..4f03bd5
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/build.properties
@@ -0,0 +1,11 @@
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               icons/,\
+               epl-2.0.html,\
+               about.html,\
+               fragment.e4xmi
+src.includes = about.html,\
+               epl-2.0.html
+source.. = src/
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/epl-2.0.html b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/epl-2.0.html
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/epl-2.0.html
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/epl-2.0.html
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/fragment.e4xmi b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/fragment.e4xmi
new file mode 100644
index 0000000..eb733e8
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/fragment.e4xmi
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="ASCII"?>
+<fragment:ModelFragments xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/descriptor/basic" xmlns:commands="http://www.eclipse.org/ui/2010/UIModel/application/commands" xmlns:fragment="http://www.eclipse.org/ui/2010/UIModel/fragment" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmlns:ui="http://www.eclipse.org/ui/2010/UIModel/application/ui" xmi:id="_24JxkGmpEeqly_jY3FLnyw">
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_4M1skGmpEeqly_jY3FLnyw" featurename="descriptors" parentElementId="xpath:/">
+    <elements xsi:type="basic:PartDescriptor" xmi:id="_7EwU4GmpEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView" label="Diagram View" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif" category="APP4MC" closeable="true" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView">
+      <toolbar xmi:id="_DIC14GmqEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.toolbar.0">
+        <children xsi:type="menu:DirectToolItem" xmi:id="_jgBp0GmqEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.directtoolitem.select" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png" tooltip="Link the selection in the editor with the current diagram type" type="Check" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.LinkWithEditorHandler"/>
+      </toolbar>
+    </elements>
+  </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_gMvh4GmvEeqly_jY3FLnyw" featurename="commands" parentElementId="xpath:/">
+    <elements xsi:type="commands:Command" xmi:id="_hnm9YGmvEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclasshierarchy" commandName="Extract EClass Hierarchy" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Command" xmi:id="_1iuA8GmvEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteobjectreferences" commandName="Extract EObject References" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Command" xmi:id="_P8RuoGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclassallreferences" commandName="Extract EClass All References" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Command" xmi:id="_SVoLoGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclasshierarchyandtheircontents" commandName="Extract EClass Hierarchy And Their Contents" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Command" xmi:id="_W4xmsGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.extracteclassumlcontents" commandName="Extract EClass UML Contents" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Command" xmi:id="_Zw9UwGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.fromreference-extracteclassumlcontents" commandName="From reference -> Extract EClass UML Contents" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Command" xmi:id="_dIkJwGmwEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.command.copycontentsandgeneratecsv" commandName="Copy Contents and Generate CSV" category="_qKzGcGmvEeqly_jY3FLnyw"/>
+  </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_nfvOYGmvEeqly_jY3FLnyw" featurename="categories" parentElementId="xpath:/">
+    <elements xsi:type="commands:Category" xmi:id="_qKzGcGmvEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.category" name="Extract Eclass References"/>
+  </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_bQFvwGmxEeqly_jY3FLnyw" featurename="handlers" parentElementId="xpath:/">
+    <elements xsi:type="commands:Handler" xmi:id="_ceh40GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.0" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassHierarchyHandler" command="_hnm9YGmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Handler" xmi:id="_kV_kUGmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.1" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EObjectRefsHandler" command="_1iuA8GmvEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Handler" xmi:id="_qg0H0GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.2" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassAllReferencesHandler" command="_P8RuoGmwEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Handler" xmi:id="_uBWPUGmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.3" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsAndHierarchyHandler" command="_SVoLoGmwEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Handler" xmi:id="_ylP4UGmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.4" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsHandler" command="_W4xmsGmwEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Handler" xmi:id="_17314GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.5" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.EClassContentsFromReferenceHandler" command="_Zw9UwGmwEeqly_jY3FLnyw"/>
+    <elements xsi:type="commands:Handler" xmi:id="_43st0GmxEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handler.6" contributionURI="bundleclass://org.eclipse.app4mc.emf.viewer.plantuml/org.eclipse.app4mc.emf.viewer.plantuml.handlers.CopyContentsHandler" command="_dIkJwGmwEeqly_jY3FLnyw"/>
+  </fragments>
+  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_U-pKYGmyEeqly_jY3FLnyw" featurename="menuContributions" parentElementId="xpath:/">
+    <elements xsi:type="menu:MenuContribution" xmi:id="_WQga4GmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.menucontribution.0" positionInParent="after=additions" parentId="popup">
+      <children xsi:type="menu:Menu" xmi:id="_ddrMMGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.menu" label="APP4MC EMF Utils" mnemonics="">
+        <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_n6-cEGmzEeqly_jY3FLnyw" coreExpressionId="org.eclipse.app4mc.emf.viewer.plantuml.definition.ecore"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_hJ60cGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasshierarchy" label="EClass Hierarchy" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif" mnemonics="" command="_hnm9YGmvEeqly_jY3FLnyw"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_n74QcGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eobjectrefs" label="EObject Refs" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif" command="_1iuA8GmvEeqly_jY3FLnyw"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_tYaKkGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclassallreferences" label="EClass All References" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/tag_blue_add.png" command="_P8RuoGmwEeqly_jY3FLnyw"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_0rNCwGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasscontentshierarchy" label="EClass Contents + Hierarchy" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/elements_obj.gif" command="_SVoLoGmwEeqly_jY3FLnyw"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_8Xoi8GmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasscontents" label="EClass Contents" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/prop_ps.gif" command="_W4xmsGmwEeqly_jY3FLnyw"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="__g6BAGmyEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.eclasscontentsfromreference" label="EClass Contents from Reference" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/drive_go.png" command="_Zw9UwGmwEeqly_jY3FLnyw"/>
+        <children xsi:type="menu:HandledMenuItem" xmi:id="_HvDuMGmzEeqly_jY3FLnyw" elementId="org.eclipse.app4mc.emf.viewer.plantuml.handledmenuitem.copycontentscommand" label="Copy Contents Command" iconURI="platform:/plugin/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif" command="_dIkJwGmwEeqly_jY3FLnyw"/>
+      </children>
+    </elements>
+  </fragments>
+</fragment:ModelFragments>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/drive_go.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/drive_go.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/drive_go.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/drive_go.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/elements_obj.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/elements_obj.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/elements_obj.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/elements_obj.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/filenav_nav.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/filenav_nav.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/filenav_nav.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/filenav_nav.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/keygroups_obj.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/keygroups_obj.gif
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/keygroups_obj.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/prop_ps.gif
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/prop_ps.gif
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/prop_ps.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/sample.gif
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/sample.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/super_co.gif
similarity index 100%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.metamodelviewer/icons/super_co.gif
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/super_co.gif
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png
new file mode 100644
index 0000000..3e630fc
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/synced.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/tag_blue_add.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/tag_blue_add.png
similarity index 100%
rename from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/icons/tag_blue_add.png
rename to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/tag_blue_add.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/targetinternal_obj.png b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/targetinternal_obj.png
new file mode 100644
index 0000000..9c483c1
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/icons/targetinternal_obj.png
Binary files differ
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/plugin.xml b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/plugin.xml
new file mode 100644
index 0000000..4c28402
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/plugin.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<plugin>
+
+   <extension
+         point="org.eclipse.ui.preferencePages">
+      <page
+            class="org.eclipse.app4mc.emf.viewer.plantuml.preferences.AmaltheaGraphicalRepresentationPreferencePage"
+            id="org.eclipse.app4mc.emf.viewer.plantuml.preferences.AmaltheaPreferencePage"
+            name="AMALTHEA Graphical Representation">
+      </page>
+   </extension>
+   <extension
+         point="org.eclipse.core.runtime.preferences">
+      <initializer
+            class="org.eclipse.app4mc.emf.viewer.plantuml.preferences.PreferenceInitializer">
+      </initializer>
+   </extension>
+   <extension
+         point="org.eclipse.ui.perspectiveExtensions">
+      <perspectiveExtension
+            targetID="org.eclipse.jdt.ui.JavaPerspective">
+         <view
+               id="org.eclipse.app4mc.emf.viewer.plantuml.views.DiagramView"
+               ratio="0.5"
+               relationship="right"
+               relative="org.eclipse.ui.views.ProblemView">
+         </view>
+      </perspectiveExtension>
+   </extension>
+   <extension
+         id="org.eclipse.app4mc.emf.viewer.plantuml.fragment"
+         point="org.eclipse.e4.workbench.model">
+      <fragment
+            uri="fragment.e4xmi"
+            apply="always">
+      </fragment>
+   </extension>
+   <extension
+         point="org.eclipse.core.expressions.definitions">
+      <definition
+            id="org.eclipse.app4mc.emf.viewer.plantuml.definition.ecore">
+           <with
+                 variable="activeMenuSelection">
+              <iterate>
+                 <instanceof
+                       value="org.eclipse.emf.ecore.EObject">
+                 </instanceof>
+              </iterate>
+           </with>
+      </definition>
+   </extension>
+
+</plugin>
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/Activator.java
similarity index 86%
copy from eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
copy to eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/Activator.java
index c86b924..54ff0f8 100644
--- a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emfutils.content.extractor/src/org/eclipse/app4mc/emfutils/content/extractor/Activator.java
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/Activator.java
@@ -1,6 +1,6 @@
- /**
+/**
  ********************************************************************************
- * Copyright (c) 2017 - 2018 Robert Bosch GmbH.
+ * Copyright (c) 2017-2020 Robert Bosch GmbH.
  * 
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -12,7 +12,8 @@
  *     Robert Bosch GmbH - initial API and implementation
  ********************************************************************************
  */
-package org.eclipse.app4mc.emfutils.content.extractor;
+
+package org.eclipse.app4mc.emf.viewer.plantuml;
 
 import org.eclipse.ui.plugin.AbstractUIPlugin;
 import org.osgi.framework.BundleContext;
@@ -23,7 +24,7 @@
 public class Activator extends AbstractUIPlugin {
 
 	// The plug-in ID
-	public static final String PLUGIN_ID = "org.eclipse.app4mc.emfutils.content.extractor"; //$NON-NLS-1$
+	public static final String PLUGIN_ID = "org.eclipse.app4mc.emf.viewer.plantuml"; //$NON-NLS-1$
 
 	// The shared instance
 	private static Activator plugin;
diff --git a/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/AbstractPlantUMLBuilder.java b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/AbstractPlantUMLBuilder.java
new file mode 100644
index 0000000..4ed3691
--- /dev/null
+++ b/eclipse-tools/emf-graphical-viewer/plugins/org.eclipse.app4mc.emf.viewer.plantuml/src/org/eclipse/app4mc/emf/viewer/plantuml/builders/AbstractPlantUMLBuilder.java
@@ -0,0 +1,317 @@
+/**
+ ********************************************************************************
+ * Copyright (c) 2020 Robert Bosch GmbH.
+ * 
+ * This program and the accompanying materials are made
+ * available under the terms of the Eclipse Public License 2.0
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *     Robert Bosch GmbH - initial API and implementation
+ ********************************************************************************
+ */
+
+package org.eclipse.app4mc.emf.viewer.plantuml.builders;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EEnumLiteral;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;