Merge "[956] Support for failure propagation analysis" into develop
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/.project b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/.project
new file mode 100644
index 0000000..019b081
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/.project
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.fla.FPTC2FLABehavior</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2m.qvt.oml.project.QVTOBuilder</name>
+			<arguments>
+				<dictionary>
+					<key>src_container</key>
+					<value>transforms</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2m.qvt.oml.project.QVTONature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..0c457d2
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: FPTC2FLABehavior Plug-in
+Bundle-SymbolicName: org.polarsys.chess.fla.FPTC2FLABehavior;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: 
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.m2m.qvt.oml,
+ org.eclipse.m2m.qvt.oml.project,
+ org.eclipse.m2m.qvt.oml.runtime
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/about.html b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/about.html
@@ -0,0 +1,28 @@
+<!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 14, 2008</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 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/build.properties b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/build.properties
new file mode 100644
index 0000000..5cb777a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/build.properties
@@ -0,0 +1,3 @@
+bin.includes = META-INF/,\
+               transforms/,\
+               plugin.xml
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/plugin.xml b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/plugin.xml
new file mode 100644
index 0000000..c9a0837
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.m2m.qvt.oml.runtime.qvtTransformation">
+      <transformation
+            file="transforms/FPTC2FLABehavior.qvto"
+            id="org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior">
+      </transformation>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior.qvto b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior.qvto
new file mode 100644
index 0000000..d72b4d7
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.FPTC2FLABehavior/transforms/FPTC2FLABehavior.qvto
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+
+transformation FPTC2FLABehavior(inout model : Chess);
+
+property FLA_BEHAVIOUR_SPECIFICATION = "CHESS::Dependability::FailurePropagation::FLABehavior";
+
+main() {
+	model.objectsOfType(FailurePropagation::FPTC).map fptc2flabehavior();
+}
+
+mapping FailurePropagation::FPTC::fptc2flabehavior() {
+	var element : Element;
+	if (self.base_Component <> null) {
+		element := self.base_Component;
+	} else if (self.base_Property <> null) {
+		element := self.base_Property;
+	} else if (self.base_Connector <> null) {
+		element := self.base_Connector;
+	} else if (self.base_Comment <> null) {
+		element := self.base_Comment.owner;
+	};
+	var stereotype := element.getApplicableStereotype(FLA_BEHAVIOUR_SPECIFICATION);
+	var flabehavior := element.applyStereotype(stereotype).oclAsType(FLABehavior);
+	flabehavior.fptc := self.fptc;
+	model.removeElement(self);
+}
diff --git a/plugins/org.polarsys.chess.fla.feature/.project b/plugins/org.polarsys.chess.fla.feature/.project
new file mode 100644
index 0000000..41e829c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.fla.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/plugins/org.polarsys.chess.fla.feature/about.html b/plugins/org.polarsys.chess.fla.feature/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/about.html
@@ -0,0 +1,28 @@
+<!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 14, 2008</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 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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/plugins/org.polarsys.chess.fla.feature/build.properties b/plugins/org.polarsys.chess.fla.feature/build.properties
new file mode 100644
index 0000000..64f93a9
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/build.properties
@@ -0,0 +1 @@
+bin.includes = feature.xml
diff --git a/plugins/org.polarsys.chess.fla.feature/epl-v10.html b/plugins/org.polarsys.chess.fla.feature/epl-v10.html
new file mode 100644
index 0000000..cb1073a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/epl-v10.html
@@ -0,0 +1,304 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
+<html xmlns:o="urn:schemas-microsoft-com:office:office"
+xmlns:w="urn:schemas-microsoft-com:office:word"
+xmlns="http://www.w3.org/TR/REC-html40">
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<link rel=File-List
+href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
+<title>Eclipse Public License - Version 1.0</title>
+<style>
+<!--
+ /* Font Definitions */
+@font-face
+	{
+	panose-1:2 11 6 4 3 5 4 4 2 4;
+	mso-font-charset:0;
+	mso-font-pitch:variable;
+	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
+ /* Style Definitions */
+p.MsoNormal, li.MsoNormal, div.MsoNormal
+	{mso-style-parent:"";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	}
+p
+	{margin-right:0in;
+	mso-margin-top-alt:auto;
+	mso-margin-bottom-alt:auto;
+	margin-left:0in;
+	mso-pagination:widow-orphan;
+	font-size:12.0pt;
+	}
+p.BalloonText, li.BalloonText, div.BalloonText
+	{mso-style-name:"Balloon Text";
+	margin:0in;
+	margin-bottom:.0001pt;
+	mso-pagination:widow-orphan;
+	font-size:8.0pt;
+	
+	}
+@page Section1
+	{size:8.5in 11.0in;
+	margin:1.0in 1.25in 1.0in 1.25in;
+	mso-header-margin:.5in;
+	mso-footer-margin:.5in;
+	mso-paper-source:0;}
+div.Section1
+	{page:Section1;}
+-->
+</style>
+</head>
+
+<body lang="EN-US" style='tab-interval:.5in'>
+
+<div class=Section1>
+
+<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
+</p>
+
+<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
+THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
+REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
+OF THIS AGREEMENT.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+in the case of the initial Contributor, the initial code and documentation
+distributed under this Agreement, and<br clear=left>
+b) in the case of each subsequent Contributor:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+changes to the Program, and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+additions to the Program;</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
+such changes and/or additions to the Program originate from and are distributed
+by that particular Contributor. A Contribution 'originates' from a Contributor
+if it was added to the Program by such Contributor itself or anyone acting on
+such Contributor's behalf. Contributions do not include additions to the
+Program which: (i) are separate modules of software distributed in conjunction
+with the Program under their own license agreement, and (ii) are not derivative
+works of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
+entity that distributes the Program.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; 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. </span></p>
+
+<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
+distributed in accordance with this Agreement.</span> </p>
+
+<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
+receives the Program under this Agreement, including all Contributors.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+Subject to the terms of this Agreement, each Contributor hereby grants Recipient
+a non-exclusive, worldwide, royalty-free copyright license to<span
+style='color:red'> </span>reproduce, prepare derivative works of, publicly
+display, publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and object code
+form.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide,<span style='color:green'> </span>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 and object code 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. </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>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's responsibility to acquire that license before
+distributing the Program.</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>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. </span></p>
+
+<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
+
+<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
+Program in object code form under its own license agreement, provided that:</span>
+</p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it complies with the terms and conditions of this Agreement; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
+its license agreement:</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
+effectively disclaims on behalf of all 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; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
+effectively excludes on behalf of all Contributors all liability for damages,
+including direct, indirect, special, incidental and consequential damages, such
+as lost profits; </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
+states that any provisions which differ from this Agreement are offered by that
+Contributor alone and not by any other party; and</span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
+states that source code for the Program is available from such Contributor, and
+informs licensees how to obtain it in a reasonable manner on or through a
+medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
+
+<p><span style='font-size:10.0pt'>When the Program is made available in source
+code form:</span> </p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
+it must be made available under this Agreement; and </span></p>
+
+<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
+copy of this Agreement must be included with each copy of the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
+copyright notices contained within the Program. </span></p>
+
+<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
+originator of its Contribution, if any, in a manner that reasonably allows
+subsequent Recipients to identify the originator of the Contribution. </span></p>
+
+<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
+
+<p><span style='font-size:10.0pt'>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 (&quot;Commercial
+Contributor&quot;) hereby agrees to defend and indemnify every other
+Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
+costs (collectively &quot;Losses&quot;) 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.</span> </p>
+
+<p><span style='font-size:10.0pt'>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'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.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; 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. </span></p>
+
+<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
+
+<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
+AGREEMENT, 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.</span> </p>
+
+<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
+
+<p><span style='font-size:10.0pt'>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.</span> </p>
+
+<p><span style='font-size:10.0pt'>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's patent(s), then such
+Recipient's rights granted under Section 2(b) shall terminate as of the date
+such litigation is filed. </span></p>
+
+<p><span style='font-size:10.0pt'>All Recipient'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's
+rights under this Agreement terminate, Recipient agrees to cease use and
+distribution of the Program as soon as reasonably practicable. However,
+Recipient's obligations under this Agreement and any licenses granted by
+Recipient relating to the Program shall continue and survive. </span></p>
+
+<p><span style='font-size:10.0pt'>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. 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.</span> </p>
+
+<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
+State of New York and the intellectual property laws of the United States of
+America. No party to this Agreement will bring a legal action under this
+Agreement more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.</span> </p>
+
+<p class=MsoNormal></p>
+
+</div>
+
+</body>
+
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.feature/feature.xml b/plugins/org.polarsys.chess.fla.feature/feature.xml
new file mode 100644
index 0000000..cf91554
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/feature.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<feature
+      id="org.polarsys.chess.fla.feature"
+      label="CHESS FLA feature (Incubation)"
+      version="0.9.0.qualifier">
+
+   <description>
+      Failure Logic Analysis CHESS plugins.
+   </description>
+
+   <copyright>
+      Copyright (c) 2015 MDH
+   </copyright>
+
+   <license url="http://www.eclipse.org/legal/epl-v10.htm">
+      All rights reserved.   This program and the accompanying materials
+are made available under the terms of the Eclipse Public License
+v1.0 which accompanies this distribution, and is available at
+http://www.eclipse.org/legal/epl-v10.html
+   </license>
+
+   <plugin
+         id="org.polarsys.chess.fla"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.polarsys.chess.fla.flamm"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.polarsys.chess.fla.flaxml"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.polarsys.chess.fla.transformations"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.polarsys.chess.fla.FPTC2FLABehavior"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"/>
+
+</feature>
diff --git a/plugins/org.polarsys.chess.fla.feature/license.html b/plugins/org.polarsys.chess.fla.feature/license.html
new file mode 100644
index 0000000..225824a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.feature/license.html
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!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>Eclipse Foundation Software User Agreement</title>
+</head>
+
+<body lang="EN-US">
+<h2>Eclipse Foundation Software User Agreement</h2>
+<p>April 9, 2014</p>
+
+<h3>Usage Of Content</h3>
+
+<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
+
+<h3>Applicable Licenses</h3>
+
+<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation is provided to you under the terms and conditions of the Eclipse Public License Version 1.0
+   (&quot;EPL&quot;).  A copy of the EPL is provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
+   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
+
+<ul>
+       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
+       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
+       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+      and/or Fragments associated with that Feature.</li>
+       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
+</ul>
+
+<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
+Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
+including, but not limited to the following locations:</p>
+
+<ul>
+       <li>The top-level (root) directory</li>
+       <li>Plug-in and Fragment directories</li>
+       <li>Inside Plug-ins and Fragments packaged as JARs</li>
+       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
+       <li>Feature directories</li>
+</ul>
+
+<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
+installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
+inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
+that directory.</p>
+
+<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
+OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
+
+<ul>
+       <li>Eclipse Distribution License Version 1.0 (available at <a href="http://www.eclipse.org/licenses/edl-v10.html">http://www.eclipse.org/licenses/edl-v1.0.html</a>)</li>
+       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
+       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
+       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
+       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
+</ul>
+
+<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
+
+
+<h3>Use of Provisioning Technology</h3>
+
+<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
+       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
+   (&quot;Specification&quot;).</p>
+
+<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
+
+<ol>
+       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+       product.</li>
+       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+       accessed and copied to the Target Machine.</li>
+       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
+</ol>
+
+<h3>Cryptography</h3>
+
+<p>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.</p>
+
+<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
+</body>
+</html>
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.flamm/.classpath b/plugins/org.polarsys.chess.fla.flamm/.classpath
new file mode 100644
index 0000000..121e527
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla.flamm/.project b/plugins/org.polarsys.chess.fla.flamm/.project
new file mode 100644
index 0000000..77a811b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.fla.flamm</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/plugins/org.polarsys.chess.fla.flamm/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.flamm/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f1dc7db
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.polarsys.chess.fla.flamm;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.polarsys.chess.fla.flamm,
+ org.polarsys.chess.fla.flamm.FailureTypes,
+ org.polarsys.chess.fla.flamm.analysis,
+ org.polarsys.chess.fla.flamm.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Import-Package: com.google.common.collect
diff --git a/plugins/org.polarsys.chess.fla.flamm/about.html b/plugins/org.polarsys.chess.fla.flamm/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/about.html
@@ -0,0 +1,28 @@
+<!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 14, 2008</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 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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/plugins/org.polarsys.chess.fla.flamm/build.properties b/plugins/org.polarsys.chess.fla.flamm/build.properties
new file mode 100644
index 0000000..c1261d8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+#                  CHESS core plugin
+#
+#               Copyright (C) 2011-2015
+#            Mälardalen University, Sweden
+#
+#
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License
+#  v1.0 which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm class diagram.png b/plugins/org.polarsys.chess.fla.flamm/model/flamm class diagram.png
new file mode 100644
index 0000000..4a381b1
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm class diagram.png
Binary files differ
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm.aird b/plugins/org.polarsys.chess.fla.flamm/model/flamm.aird
new file mode 100644
index 0000000..3de58d4
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm.aird
@@ -0,0 +1,1476 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_a7Q3MARHEeWdu7LwZb7HXA" selectedViews="_b52mYARHEeWdu7LwZb7HXA" version="8.1.1">
+  <models xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+  <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+  <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_b52mYARHEeWdu7LwZb7HXA" initialized="true">
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_cDcAMARHEeWdu7LwZb7HXA" name="flamm class diagram">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_cEWmMARHEeWdu7LwZb7HXA" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_cEWmMQRHEeWdu7LwZb7HXA" type="Sirius" element="_cDcAMARHEeWdu7LwZb7HXA" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_iI4UcARHEeWdu7LwZb7HXA" type="2003" element="_iFuSwARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iI6JoARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iI-bEARHEeWdu7LwZb7HXA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iI-bEQRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iI-bEgRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iI4UcQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8" italic="true"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iI4UcgRHEeWdu7LwZb7HXA" x="216" y="135" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_iI_pMARHEeWdu7LwZb7HXA" type="2003" element="_iF88QARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJAQQARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iJA3UARHEeWdu7LwZb7HXA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iJA3UQRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iJA3UgRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iI_pMQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iI_pMgRHEeWdu7LwZb7HXA" x="144" y="216" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_iJA3UwRHEeWdu7LwZb7HXA" type="2003" element="_iF-xcARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJBeYARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iJCsgARHEeWdu7LwZb7HXA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_iJNroARHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iGxboARHEeWdu7LwZb7HXA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_iJNroQRHEeWdu7LwZb7HXA"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_iJNrogRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG4wYARHEeWdu7LwZb7HXA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_iJOSsARHEeWdu7LwZb7HXA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iJCsgQRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iJCsggRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iJA3VARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJA3VQRHEeWdu7LwZb7HXA" x="315" y="54" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_iJD6oARHEeWdu7LwZb7HXA" type="2003" element="_iGAmoARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJFIwARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iJFIwQRHEeWdu7LwZb7HXA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_iJOSsQRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG5-gARHEeWdu7LwZb7HXA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_iJOSsgRHEeWdu7LwZb7HXA"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_iJO5wARHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG7MoARHEeWdu7LwZb7HXA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_iJO5wQRHEeWdu7LwZb7HXA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iJFIwgRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iJFIwwRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iJD6oQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJD6ogRHEeWdu7LwZb7HXA" x="423" y="135" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_iJFv0ARHEeWdu7LwZb7HXA" type="2003" element="_iGDC4ARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJGW4ARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iJG98ARHEeWdu7LwZb7HXA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_iJO5wgRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG7zsARHEeWdu7LwZb7HXA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_iJO5wwRHEeWdu7LwZb7HXA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iJG98QRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iJG98gRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iJFv0QRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJFv0gRHEeWdu7LwZb7HXA" x="270" y="297" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_iJHlAARHEeWdu7LwZb7HXA" type="2003" element="_iGGtQARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJIzIARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iJIzIQRHEeWdu7LwZb7HXA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iJIzIgRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iJIzIwRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iJHlAQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJHlAgRHEeWdu7LwZb7HXA" x="270" y="216" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_iJJaMARHEeWdu7LwZb7HXA" type="2003" element="_iGIicARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJKBQARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iJKoUARHEeWdu7LwZb7HXA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iJKoUQRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iJKoUgRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iJJaMQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJJaMgRHEeWdu7LwZb7HXA" x="423" y="297" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_iJKoUwRHEeWdu7LwZb7HXA" type="2003" element="_iGLlwARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJLPYARHEeWdu7LwZb7HXA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_iJL2cARHEeWdu7LwZb7HXA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_iJPg0ARHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG9o4ARHEeWdu7LwZb7HXA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_iJPg0QRHEeWdu7LwZb7HXA"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_iJPg0gRHEeWdu7LwZb7HXA" visible="false" type="3010" element="_iG-3BARHEeWdu7LwZb7HXA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_iJPg0wRHEeWdu7LwZb7HXA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_iJL2cQRHEeWdu7LwZb7HXA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_iJL2cgRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_iJKoVARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJKoVQRHEeWdu7LwZb7HXA" x="450" y="216" width="120" height="30"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_DXM48BAZEeW3er92bhotdw" type="2003" element="_DVCVwBAZEeW3er92bhotdw">
+            <children xmi:type="notation:Node" xmi:id="_DXkFUBAZEeW3er92bhotdw" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_DXksYBAZEeW3er92bhotdw" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_DXksYRAZEeW3er92bhotdw"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_DXksYhAZEeW3er92bhotdw"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_DXM48RAZEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXM48hAZEeW3er92bhotdw" x="108" y="378" height="38"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_-bPCQBDpEeW3er92bhotdw" type="2003" element="_-ajFwBDpEeW3er92bhotdw">
+            <children xmi:type="notation:Node" xmi:id="_-baocBDpEeW3er92bhotdw" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_-baocRDpEeW3er92bhotdw" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_-be54BDpEeW3er92bhotdw" type="3010" element="_-a8HUBDpEeW3er92bhotdw">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_-be54RDpEeW3er92bhotdw"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_-bfg8BDpEeW3er92bhotdw" type="3010" element="_-a9VcBDpEeW3er92bhotdw">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_-bfg8RDpEeW3er92bhotdw"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_-bbPgBDpEeW3er92bhotdw"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_-bbPgRDpEeW3er92bhotdw"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_-bPCQRDpEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8" italic="true"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bPCQhDpEeW3er92bhotdw" x="108" y="36" width="146" height="65"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_cEWmMgRHEeWdu7LwZb7HXA"/>
+          <edges xmi:type="notation:Edge" xmi:id="_iJbHAARHEeWdu7LwZb7HXA" type="4001" element="_iHYfoARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJc8MARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJc8MQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJeKUARHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJeKUQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJexYARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJexYQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJbHAQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJbHAgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJbHAwRHEeWdu7LwZb7HXA" points="[59, -4, -139, -4]$[139, -4, -59, -4]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJq-oARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJq-oQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJrlsARHEeWdu7LwZb7HXA" type="4001" element="_iHemQARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJsMwARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJsMwQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJsMwgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJsMwwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJsz0ARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJsz0QRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJrlsQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJrlsgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJrlswRHEeWdu7LwZb7HXA" points="[59, 23, -139, 23]$[139, 23, -59, 23]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJsz0gRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJsz0wRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJsz1ARHEeWdu7LwZb7HXA" type="4001" element="_iHf0YARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJta4ARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJta4QRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJuB8ARHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJuB8QRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJuB8gRHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJuB8wRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJsz1QRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJsz1gRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJsz1wRHEeWdu7LwZb7HXA" points="[40, -19, 40, -19]$[40, -37, 40, -37]$[85, -37, 85, -37]$[85, -1, 85, -1]$[59, -1, 59, -1]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJupAARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJupAQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJupAgRHEeWdu7LwZb7HXA" type="4001" element="_iHhCgARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJvQEARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJvQEQRHEeWdu7LwZb7HXA" x="-5" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJvQEgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJvQEwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJv3IARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJv3IQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJupAwRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJupBARHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJupBQRHEeWdu7LwZb7HXA" points="[-26, 16, -23, -61]$[-26, 58, -23, -19]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJv3IgRHEeWdu7LwZb7HXA" id="(0.7583333333333333,0.6097560975609756)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJv3IwRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJweMARHEeWdu7LwZb7HXA" visible="false" type="4001" element="_iHiQoARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJxFQARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJxFQQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJxFQgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJxFQwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJxsUARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJxsUQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJweMQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJweMgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJweMwRHEeWdu7LwZb7HXA" points="[-8, 12, -95, -70]$[-8, 27, -95, -55]$[82, 27, -5, -55]$[82, 63, -5, -19]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJxsUgRHEeWdu7LwZb7HXA" id="(0.9833333333333333,0.7073170731707317)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJxsUwRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJyTYARHEeWdu7LwZb7HXA" visible="false" type="4001" element="_iHjexgRHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iI4UcARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJy6cARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJy6cQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJzhgARHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJzhgQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJzhggRHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJzhgwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJyTYQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJyTYgRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJyTYwRHEeWdu7LwZb7HXA" points="[-59, -31, 139, -31]$[-139, -31, 59, -31]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ0IkARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ0IkQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJ0voARHEeWdu7LwZb7HXA" type="4001" element="_iHlT8ARHEeWdu7LwZb7HXA" source="_iJFv0ARHEeWdu7LwZb7HXA" target="_iJJaMARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJ1WsARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ1WsQRHEeWdu7LwZb7HXA" x="11" y="25"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ19wARHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ19wQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ19wgRHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ19wwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ0voQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJ0vogRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ0vowRHEeWdu7LwZb7HXA" points="[59, 8, -57, -6]$[94, 8, -22, -6]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ2k0ARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ2k0QRHEeWdu7LwZb7HXA" id="(0.19166666666666668,0.8536585365853658)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJ3L4ARHEeWdu7LwZb7HXA" type="4001" element="_iHmiEARHEeWdu7LwZb7HXA" source="_iJFv0ARHEeWdu7LwZb7HXA" target="_iJJaMARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJ3y8ARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ3y8QRHEeWdu7LwZb7HXA" x="27" y="-13"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ3y8gRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ3y8wRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ4aAARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ4aAQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ3L4QRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJ3L4gRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ3L4wRHEeWdu7LwZb7HXA" points="[59, -10, -121, -10]$[121, -10, -59, -10]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ4aAgRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ5BEARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJ5BEQRHEeWdu7LwZb7HXA" type="4001" element="_iHnwNgRHEeWdu7LwZb7HXA" source="_iJHlAARHEeWdu7LwZb7HXA" target="_iJFv0ARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJ5oIARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ5oIQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ5oIgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ5oIwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ6PMARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ6PMQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ5BEgRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJ5BEwRHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ5BFARHEeWdu7LwZb7HXA" points="[-6, 20, -6, -61]$[-6, 62, -6, -19]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ62QARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ62QQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJ62QgRHEeWdu7LwZb7HXA" type="4001" element="_iHo-VgRHEeWdu7LwZb7HXA" source="_iJJaMARHEeWdu7LwZb7HXA" target="_iJD6oARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJ7dUARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ7dUQRHEeWdu7LwZb7HXA" x="-3" y="-17"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ7dUgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ7dUwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ7dVARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ7dVQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ62QwRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJ62RARHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ62RQRHEeWdu7LwZb7HXA" points="[-1, 0, -23, 126]$[-1, -123, -23, 3]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ8EYARHEeWdu7LwZb7HXA" id="(0.16666666666666666,0.0)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ8EYQRHEeWdu7LwZb7HXA" id="(0.35,0.926829268292683)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJ8EYgRHEeWdu7LwZb7HXA" type="4001" element="_iHqzgARHEeWdu7LwZb7HXA" source="_iJJaMARHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJ8rcARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ8rcQRHEeWdu7LwZb7HXA" x="2" y="26"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ8rcgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ8rcwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ9SgARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ9SgQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ8EYwRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJ8EZARHEeWdu7LwZb7HXA" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ8EZQRHEeWdu7LwZb7HXA" points="[4, -19, -23, 62]$[4, -61, -23, 20]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ9SggRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ9SgwRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJ95kARHEeWdu7LwZb7HXA" type="4001" element="_iHsosARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iJA3UwRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJ95lARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ95lQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ-goARHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ-goQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ-gogRHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ-gowRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ95kQRHEeWdu7LwZb7HXA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJ95kgRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ95kwRHEeWdu7LwZb7HXA" points="[0, 0, -104, 62]$[0, -19, -104, 43]$[108, -19, 4, 43]$[108, -42, 4, 20]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ_HsARHEeWdu7LwZb7HXA" id="(0.4583333333333333,0.024390243902439025)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iJ_HsQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iJ_HsgRHEeWdu7LwZb7HXA" type="4001" element="_iHt20ARHEeWdu7LwZb7HXA" source="_iI_pMARHEeWdu7LwZb7HXA" target="_iI4UcARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iJ_uwARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ_uwQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iJ_uwgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iJ_uwwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iKAV0ARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKAV0QRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iJ_HswRHEeWdu7LwZb7HXA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iJ_HtARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iJ_HtQRHEeWdu7LwZb7HXA" points="[0, -19, -72, 71]$[0, -46, -72, 44]$[67, -46, -5, 44]$[67, -70, -5, 20]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKAV0gRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKAV0wRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iKA84ARHEeWdu7LwZb7HXA" type="4001" element="_iHvE8ARHEeWdu7LwZb7HXA" source="_iJD6oARHEeWdu7LwZb7HXA" target="_iJA3UwRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iKA85ARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKA85QRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iKBj8ARHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKBj8QRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iKBj8gRHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKBj8wRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iKA84QRHEeWdu7LwZb7HXA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iKA84gRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iKA84wRHEeWdu7LwZb7HXA" points="[0, -19, 75, 44]$[0, -38, 75, 25]$[-104, -38, -29, 25]$[-104, -61, -29, 2]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKCLAARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKCLAQRHEeWdu7LwZb7HXA" id="(0.7833333333333333,0.95)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iKCLAgRHEeWdu7LwZb7HXA" type="4001" element="_iHwTEARHEeWdu7LwZb7HXA" source="_iJHlAARHEeWdu7LwZb7HXA" target="_iI4UcARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iKCyEARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKCyEQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iKCyEgRHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKCyEwRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iKCyFARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKCyFQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iKCLAwRHEeWdu7LwZb7HXA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iKCLBARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iKCLBQRHEeWdu7LwZb7HXA" points="[-1, -19, 53, 62]$[-1, -38, 53, 43]$[-59, -38, -5, 43]$[-59, -61, -5, 20]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKDZIARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKDZIQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_iKEnQARHEeWdu7LwZb7HXA" type="4001" element="_iHxhMARHEeWdu7LwZb7HXA" source="_iI4UcARHEeWdu7LwZb7HXA" target="_iI_pMARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_iKGccARHEeWdu7LwZb7HXA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKGccQRHEeWdu7LwZb7HXA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iKHDgARHEeWdu7LwZb7HXA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKHDgQRHEeWdu7LwZb7HXA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_iKHqkARHEeWdu7LwZb7HXA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKHqkQRHEeWdu7LwZb7HXA" x="-5" y="12"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_iKEnQQRHEeWdu7LwZb7HXA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_iKEnQgRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iKEnQwRHEeWdu7LwZb7HXA" points="[-59, -1, 13, -91]$[-104, -1, -32, -91]$[-104, 71, -32, -19]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKIRoARHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iKIRoQRHEeWdu7LwZb7HXA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_DXo90BAZEeW3er92bhotdw" type="4001" element="_DW4v4BAZEeW3er92bhotdw" source="_iI_pMARHEeWdu7LwZb7HXA" target="_DXM48BAZEeW3er92bhotdw">
+            <children xmi:type="notation:Node" xmi:id="_DXsBIBAZEeW3er92bhotdw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXsBIRAZEeW3er92bhotdw" x="4" y="4"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_DXt2UBAZEeW3er92bhotdw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXt2URAZEeW3er92bhotdw" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_DXvEcBAZEeW3er92bhotdw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DXvEcRAZEeW3er92bhotdw" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_DXo90RAZEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_DXo90hAZEeW3er92bhotdw" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DXo90xAZEeW3er92bhotdw" points="[12, 20, -177, -142]$[12, 161, -177, -1]$[130, 161, -59, -1]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX1yIBAZEeW3er92bhotdw" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX2ZMBAZEeW3er92bhotdw" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_DX5cgBAZEeW3er92bhotdw" type="4001" element="_DW9BVhAZEeW3er92bhotdw" source="_DXM48BAZEeW3er92bhotdw" target="_iJFv0ARHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_DX5chBAZEeW3er92bhotdw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DX5chRAZEeW3er92bhotdw" x="-20" y="8"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_DX6DkBAZEeW3er92bhotdw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DX6DkRAZEeW3er92bhotdw" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_DX6DkhAZEeW3er92bhotdw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DX6DkxAZEeW3er92bhotdw" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_DX5cgRAZEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_DX5cghAZEeW3er92bhotdw" fontColor="7490599" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DX5cgxAZEeW3er92bhotdw" points="[35, -19, -88, 48]$[35, -37, -88, 30]$[120, -37, -3, 30]$[120, -61, -3, 6]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX6DlBAZEeW3er92bhotdw" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DX6DlRAZEeW3er92bhotdw" id="(0.475,0.8536585365853658)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_GoqnsBAvEeW3er92bhotdw" type="4001" element="_GnKL0BAvEeW3er92bhotdw" source="_iJD6oARHEeWdu7LwZb7HXA" target="_DXM48BAZEeW3er92bhotdw">
+            <children xmi:type="notation:Node" xmi:id="_Gor10BAvEeW3er92bhotdw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gor10RAvEeW3er92bhotdw" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Gor10hAvEeW3er92bhotdw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gor10xAvEeW3er92bhotdw" x="-32" y="23"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_Gosc4BAvEeW3er92bhotdw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gosc4RAvEeW3er92bhotdw" x="1" y="4"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_GoqnsRAvEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_GoqnshAvEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GoqnsxAvEeW3er92bhotdw" points="[59, 7, 374, -236]$[102, 7, 417, -236]$[102, 242, 417, -1]$[-256, 242, 59, -1]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GotD8BAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GotD8RAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_JbGTEBAvEeW3er92bhotdw" type="4001" element="_JaOwYBAvEeW3er92bhotdw" source="_iJD6oARHEeWdu7LwZb7HXA" target="_DXM48BAZEeW3er92bhotdw">
+            <children xmi:type="notation:Node" xmi:id="_JbHhMBAvEeW3er92bhotdw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JbHhMRAvEeW3er92bhotdw" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_JbHhMhAvEeW3er92bhotdw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JbHhMxAvEeW3er92bhotdw" x="-48" y="2"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_JbIIQBAvEeW3er92bhotdw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JbIIQRAvEeW3er92bhotdw" x="6" y="-6"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_JbGTERAvEeW3er92bhotdw" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_JbGTEhAvEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JbGTExAvEeW3er92bhotdw" points="[59, 1, 374, -242]$[111, 1, 426, -242]$[111, 250, 426, 7]$[-256, 250, 59, 7]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JbIvUBAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JbIvURAvEeW3er92bhotdw" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_-bh9MBDpEeW3er92bhotdw" type="4001" element="_-bEqMBDpEeW3er92bhotdw" source="_iI4UcARHEeWdu7LwZb7HXA" target="_-bPCQBDpEeW3er92bhotdw">
+            <children xmi:type="notation:Node" xmi:id="_-bh9NBDpEeW3er92bhotdw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bh9NRDpEeW3er92bhotdw" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_-bh9NhDpEeW3er92bhotdw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bh9NxDpEeW3er92bhotdw" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_-bikQBDpEeW3er92bhotdw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bikQRDpEeW3er92bhotdw" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_-bh9MRDpEeW3er92bhotdw" routing="Rectilinear"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_-bh9MhDpEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-bh9MxDpEeW3er92bhotdw" points="[23, -23, 58, 40]$[23, -33, 58, 30]$[-45, -33, -10, 30]$[-45, -59, -10, 4]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-bjyYBDpEeW3er92bhotdw" id="(0.08333333333333333,0.6097560975609756)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-bjyYRDpEeW3er92bhotdw" id="(0.5753424657534246,0.9384615384615385)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_-bjyYhDpEeW3er92bhotdw" type="4001" element="_-bHthhDpEeW3er92bhotdw" source="_DXM48BAZEeW3er92bhotdw" target="_-bPCQBDpEeW3er92bhotdw">
+            <children xmi:type="notation:Node" xmi:id="_-bkZcBDpEeW3er92bhotdw" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bkZcRDpEeW3er92bhotdw" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_-bkZchDpEeW3er92bhotdw" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bkZcxDpEeW3er92bhotdw" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_-bkZdBDpEeW3er92bhotdw" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bkZdRDpEeW3er92bhotdw" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_-bjyYxDpEeW3er92bhotdw" routing="Rectilinear"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_-bjyZBDpEeW3er92bhotdw" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-bjyZRDpEeW3er92bhotdw" points="[6, -5, -30, 283]$[6, -258, -30, 30]$[61, -258, 25, 30]$[61, -284, 25, 4]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-blAgBDpEeW3er92bhotdw" id="(0.1,0.14634146341463414)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lr164BDqEeW3er92bhotdw" id="(0.3287671232876712,0.9384615384615385)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_rh5CADtMEeWdhpt7FCQG8A" type="4001" element="_rhFJsDtMEeWdhpt7FCQG8A" source="_iJKoUwRHEeWdu7LwZb7HXA" target="_iJKoUwRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_riuvgDtMEeWdhpt7FCQG8A" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_riuvgTtMEeWdhpt7FCQG8A" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ri0PEDtMEeWdhpt7FCQG8A" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ri0PETtMEeWdhpt7FCQG8A" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ri1dMDtMEeWdhpt7FCQG8A" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ri2EQDtMEeWdhpt7FCQG8A" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_rh5pEDtMEeWdhpt7FCQG8A" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_rh5pETtMEeWdhpt7FCQG8A" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rh5pEjtMEeWdhpt7FCQG8A" points="[450, 216, 450, 216]$[450, 216, 450, 216]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rjK0YDtMEeWdhpt7FCQG8A" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rjK0YTtMEeWdhpt7FCQG8A" id="(0.5,0.5)"/>
+          </edges>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_iGypwARHEeWdu7LwZb7HXA" source="DANNOTATION_CUSTOMIZATION_KEY">
+        <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_iGz34ARHEeWdu7LwZb7HXA">
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A5k8hDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A6zEhDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A8BMhDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_6A9PUhDpEeW3er92bhotdw" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BBgwhDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BBgwxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BBgxBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BCH0hDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BCH0xDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BCH1BDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BDV8BDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BDV8RDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BDV8hDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BFLIBDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BFLIRDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BFLIhDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BFyMhDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BFyMxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BFyNBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BGZQhDpEeW3er92bhotdw" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BGZQxDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BGZRBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BI1ghDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BI1gxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BI1hBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BKDohDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BKDoxDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BKDpBDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BKqshDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BLRwBDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BLRwRDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BL40hDpEeW3er92bhotdw" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BL40xDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BL41BDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BMf4hDpEeW3er92bhotdw" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_6BMf4xDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BMf5BDpEeW3er92bhotdw" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BcXghDpEeW3er92bhotdw" sourceArrow="InputArrow" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_6BcXgxDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:renderEOpposite">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </beginLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BcXhBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BdlohDpEeW3er92bhotdw" sourceArrow="InputArrow" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_6BdloxDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:renderEOpposite">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </beginLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BdlpBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_6BgB4hDpEeW3er92bhotdw" sourceArrow="InputArrow" targetArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <beginLabelStyleDescription xmi:type="style:BeginLabelStyleDescription" xmi:id="_6BgB4xDpEeW3er92bhotdw" showIcon="false" labelExpression="service:renderEOpposite">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </beginLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_6BgB5BDpEeW3er92bhotdw" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_iG1GAARHEeWdu7LwZb7HXA">
+            <key xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A5k8BDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/id"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A5k8RDpEeW3er92bhotdw" key="_iGxboARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A5k8xDpEeW3er92bhotdw" value="_6A5k8hDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A6zEBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/name"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A6zERDpEeW3er92bhotdw" key="_iG4wYARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A6zExDpEeW3er92bhotdw" value="_6A6zEhDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A8BMBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EAttribute" href="flamm.ecore#//Rule/specificity"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A8BMRDpEeW3er92bhotdw" key="_iG7zsARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A8BMxDpEeW3er92bhotdw" value="_6A8BMhDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EClass" href="flamm.ecore#//Rule"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6A9PUBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/type"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6A9PURDpEeW3er92bhotdw" key="_iG9o4ARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6A9PUxDpEeW3er92bhotdw" value="_6A9PUhDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EClass" href="flamm.ecore#//Failure"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_iHZtwARHEeWdu7LwZb7HXA">
+            <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BBgwBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Component/inputPorts"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BBgwRDpEeW3er92bhotdw" key="_iHYfoARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BBgxRDpEeW3er92bhotdw" value="_6BBgwhDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BCH0BDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Component/outputPorts"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BCH0RDpEeW3er92bhotdw" key="_iHemQARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BCH1RDpEeW3er92bhotdw" value="_6BCH0hDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BCu5hDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/connections"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BCu5xDpEeW3er92bhotdw" key="_DW4v4BAZEeW3er92bhotdw">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BDV8xDpEeW3er92bhotdw" value="_6BDV8BDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BEkEBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/failures"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BEkERDpEeW3er92bhotdw" key="_iHhCgARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BFLIxDpEeW3er92bhotdw" value="_6BFLIBDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BFyMBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/newFailures"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BFyMRDpEeW3er92bhotdw" key="_iHiQoARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BFyNRDpEeW3er92bhotdw" value="_6BFyMhDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BGZQBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/owner"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BGZQRDpEeW3er92bhotdw" key="_iHjexgRHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BGZRRDpEeW3er92bhotdw" value="_6BGZQhDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BI1gBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Rule/inputExpression"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BI1gRDpEeW3er92bhotdw" key="_iHlT8ARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BI1hRDpEeW3er92bhotdw" value="_6BI1ghDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BKDoBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Rule/outputExpression"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BKDoRDpEeW3er92bhotdw" key="_iHmiEARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BKDpRDpEeW3er92bhotdw" value="_6BKDohDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BKqsBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//SimpleComponent/rules"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BKqsRDpEeW3er92bhotdw" key="_iHnwNgRHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BLRwhDpEeW3er92bhotdw" value="_6BKqshDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BL40BDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Expression/port"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BL40RDpEeW3er92bhotdw" key="_iHo-VgRHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BL41RDpEeW3er92bhotdw" value="_6BL40hDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BMf4BDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Expression/failures"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BMf4RDpEeW3er92bhotdw" key="_iHqzgARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BMf5RDpEeW3er92bhotdw" value="_6BMf4hDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_iHyvUARHEeWdu7LwZb7HXA">
+            <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BcXgBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/outgoingConnections"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BcXgRDpEeW3er92bhotdw" key="_GnKL0BAvEeW3er92bhotdw">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BcXhRDpEeW3er92bhotdw" value="_6BcXghDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BdloBDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Port/incomingConnections"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BdloRDpEeW3er92bhotdw" key="_JaOwYBAvEeW3er92bhotdw">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BdlpRDpEeW3er92bhotdw" value="_6BdlohDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_6BgB4BDpEeW3er92bhotdw">
+              <key xmi:type="ecore:EReference" href="flamm.ecore#//Component/parent"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_6BgB4RDpEeW3er92bhotdw" key="_iHxhMARHEeWdu7LwZb7HXA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_6BgB5RDpEeW3er92bhotdw" value="_6BgB4hDpEeW3er92bhotdw">
+                  <key xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iFuSwARHEeWdu7LwZb7HXA" name="Component" tooltipText="" outgoingEdges="_iHYfoARHEeWdu7LwZb7HXA _iHemQARHEeWdu7LwZb7HXA _iHsosARHEeWdu7LwZb7HXA _iHxhMARHEeWdu7LwZb7HXA _-bEqMBDpEeW3er92bhotdw" incomingEdges="_iHjexgRHEeWdu7LwZb7HXA _iHt20ARHEeWdu7LwZb7HXA _iHwTEARHEeWdu7LwZb7HXA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iF548ARHEeWdu7LwZb7HXA" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iF548QRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iF548gRHEeWdu7LwZb7HXA" red="125" green="125" blue="125"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF548wRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF549ARHEeWdu7LwZb7HXA" red="228" green="228" blue="228"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iF88QARHEeWdu7LwZb7HXA" name="CompositeComponent" tooltipText="" outgoingEdges="_iHt20ARHEeWdu7LwZb7HXA _DW4v4BAZEeW3er92bhotdw" incomingEdges="_iHxhMARHEeWdu7LwZb7HXA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//CompositeComponent"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//CompositeComponent"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iF9jUARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jUQRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jUgRHEeWdu7LwZb7HXA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jUwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF9jVARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iF-xcARHEeWdu7LwZb7HXA" name="NamedElement" tooltipText="" incomingEdges="_iHsosARHEeWdu7LwZb7HXA _iHvE8ARHEeWdu7LwZb7HXA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//NamedElement"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iF_YgARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YgQRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YggRHEeWdu7LwZb7HXA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YgwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iF_YhARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iGxboARHEeWdu7LwZb7HXA" name="id : EString" visible="false" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/id"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/id"/>
+          <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_yjvkYARHEeWdu7LwZb7HXA"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A6MABDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A5k8hDpEeW3er92bhotdw">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6MARDpEeW3er92bhotdw"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6MAhDpEeW3er92bhotdw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_6A6MAxDpEeW3er92bhotdw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG4wYARHEeWdu7LwZb7HXA" name="name : EString" visible="false" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/name"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//NamedElement/name"/>
+          <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_yjvkYQRHEeWdu7LwZb7HXA"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A6zFBDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A6zEhDpEeW3er92bhotdw">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6zFRDpEeW3er92bhotdw"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A6zFhDpEeW3er92bhotdw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_6A6zFxDpEeW3er92bhotdw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGAmoARHEeWdu7LwZb7HXA" name="Port" tooltipText="" outgoingEdges="_iHf0YARHEeWdu7LwZb7HXA _iHhCgARHEeWdu7LwZb7HXA _iHiQoARHEeWdu7LwZb7HXA _iHjexgRHEeWdu7LwZb7HXA _iHvE8ARHEeWdu7LwZb7HXA _GnKL0BAvEeW3er92bhotdw _JaOwYBAvEeW3er92bhotdw" incomingEdges="_iHYfoARHEeWdu7LwZb7HXA _iHemQARHEeWdu7LwZb7HXA _iHf0YARHEeWdu7LwZb7HXA _iHo-VgRHEeWdu7LwZb7HXA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Port"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Port"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGB0wARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0wQRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0wgRHEeWdu7LwZb7HXA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0wwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGB0xARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG5-gARHEeWdu7LwZb7HXA" name="propagateFailures()" visible="false" tooltipText="propagateFailures()">
+          <target xmi:type="ecore:EOperation" href="flamm.ecore#//Port/propagateFailures"/>
+          <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//Port/propagateFailures"/>
+          <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXAoARHEeWdu7LwZb7HXA"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_iG6lkARHEeWdu7LwZb7HXA" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iG6lkQRHEeWdu7LwZb7HXA"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iG6lkgRHEeWdu7LwZb7HXA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_iG6lkwRHEeWdu7LwZb7HXA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG7MoARHEeWdu7LwZb7HXA" name="initialize()" visible="false" tooltipText="initialize()">
+          <target xmi:type="ecore:EOperation" href="flamm.ecore#//Port/initialize"/>
+          <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//Port/initialize"/>
+          <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXAoQRHEeWdu7LwZb7HXA"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_iG7MoQRHEeWdu7LwZb7HXA" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iG7MogRHEeWdu7LwZb7HXA"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iG7MowRHEeWdu7LwZb7HXA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_iG7MpARHEeWdu7LwZb7HXA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGDC4ARHEeWdu7LwZb7HXA" name="Rule" tooltipText="" outgoingEdges="_iHlT8ARHEeWdu7LwZb7HXA _iHmiEARHEeWdu7LwZb7HXA" incomingEdges="_iHnwNgRHEeWdu7LwZb7HXA _DW9BVhAZEeW3er92bhotdw" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Rule"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Rule"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGE4EARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4EQRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4EgRHEeWdu7LwZb7HXA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4EwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGE4FARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG7zsARHEeWdu7LwZb7HXA" name="specificity : EInt = -1" visible="false" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flamm.ecore#//Rule/specificity"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//Rule/specificity"/>
+          <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXnsQRHEeWdu7LwZb7HXA"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A8BNBDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A8BMhDpEeW3er92bhotdw">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A8BNRDpEeW3er92bhotdw"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A8BNhDpEeW3er92bhotdw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_6A8BNxDpEeW3er92bhotdw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGGtQARHEeWdu7LwZb7HXA" name="SimpleComponent" tooltipText="" outgoingEdges="_iHnwNgRHEeWdu7LwZb7HXA _iHwTEARHEeWdu7LwZb7HXA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//SimpleComponent"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//SimpleComponent"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGH7YARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7YQRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7YgRHEeWdu7LwZb7HXA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7YwRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGH7ZARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGIicARHEeWdu7LwZb7HXA" name="Expression" tooltipText="" outgoingEdges="_iHo-VgRHEeWdu7LwZb7HXA _iHqzgARHEeWdu7LwZb7HXA" incomingEdges="_iHlT8ARHEeWdu7LwZb7HXA _iHmiEARHEeWdu7LwZb7HXA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Expression"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Expression"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGKXoARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXoQRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXogRHEeWdu7LwZb7HXA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXowRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGKXpARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_iGLlwARHEeWdu7LwZb7HXA" name="Failure" tooltipText="" outgoingEdges="_rhFJsDtMEeWdhpt7FCQG8A" incomingEdges="_iHhCgARHEeWdu7LwZb7HXA _iHiQoARHEeWdu7LwZb7HXA _iHqzgARHEeWdu7LwZb7HXA _rhFJsDtMEeWdhpt7FCQG8A" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Failure"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Failure"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_iGMz4ARHEeWdu7LwZb7HXA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz4QRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz4gRHEeWdu7LwZb7HXA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz4wRHEeWdu7LwZb7HXA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_iGMz5ARHEeWdu7LwZb7HXA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG9o4ARHEeWdu7LwZb7HXA" name="type : FailureType = noFailure" visible="false" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/type"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/type"/>
+          <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXnsARHEeWdu7LwZb7HXA"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_6A9PVBDpEeW3er92bhotdw" labelFormat="bold" labelAlignment="LEFT" description="_6A9PUhDpEeW3er92bhotdw">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6A9PVRDpEeW3er92bhotdw"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_6A9PVhDpEeW3er92bhotdw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_6A9PVxDpEeW3er92bhotdw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_iG-3BARHEeWdu7LwZb7HXA" name="id : EString" visible="false" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/id"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flamm.ecore#//Failure/id"/>
+          <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_6pXnsgRHEeWdu7LwZb7HXA"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_iG_eEARHEeWdu7LwZb7HXA" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iG_eEQRHEeWdu7LwZb7HXA"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_iG_eEgRHEeWdu7LwZb7HXA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_iG_eEwRHEeWdu7LwZb7HXA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHYfoARHEeWdu7LwZb7HXA" name="[0..*] inputPorts" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Component/inputPorts"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Component/inputPorts"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BBgxhDpEeW3er92bhotdw" description="_6BBgwhDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BBgxxDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BBgyBDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BBgyRDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BBgyhDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BBgyxDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHemQARHEeWdu7LwZb7HXA" name="[0..*] outputPorts" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Component/outputPorts"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Component/outputPorts"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BCu4BDpEeW3er92bhotdw" description="_6BCH0hDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BCu4RDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BCu4hDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BCu4xDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BCu5BDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BCu5RDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHf0YARHEeWdu7LwZb7HXA" name="[0..*] connectedPorts" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/connectedPorts"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/connectedPorts"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHgbcARHEeWdu7LwZb7HXA" routingStyle="manhattan">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHgbcQRHEeWdu7LwZb7HXA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHgbcgRHEeWdu7LwZb7HXA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHgbcwRHEeWdu7LwZb7HXA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_iHgbdARHEeWdu7LwZb7HXA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHgbdQRHEeWdu7LwZb7HXA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHhCgARHEeWdu7LwZb7HXA" name="[0..*] failures" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/failures"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/failures"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BFLJBDpEeW3er92bhotdw" description="_6BFLIBDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFLJRDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BFLJhDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFLJxDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BFLKBDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFLKRDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHiQoARHEeWdu7LwZb7HXA" name="[0..*] newFailures" visible="false" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/newFailures"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/newFailures"/>
+        <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_suD4gARJEeWdu7LwZb7HXA"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BFyNhDpEeW3er92bhotdw" description="_6BFyMhDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFyNxDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BFyOBDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFyORDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BFyOhDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BFyOxDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHjexgRHEeWdu7LwZb7HXA" name="[1..1] owner" visible="false" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iFuSwARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/owner"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/owner"/>
+        <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_umkkMARHEeWdu7LwZb7HXA"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BHAUBDpEeW3er92bhotdw" description="_6BGZQhDpEeW3er92bhotdw" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BHAURDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BHAUhDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BHAUxDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BHAVBDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BHAVRDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHlT8ARHEeWdu7LwZb7HXA" name="[0..*] inputExpression" sourceNode="_iGDC4ARHEeWdu7LwZb7HXA" targetNode="_iGIicARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Rule/inputExpression"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Rule/inputExpression"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BI1hhDpEeW3er92bhotdw" description="_6BI1ghDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BJckBDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BJckRDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BJckhDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BJckxDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BJclBDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHmiEARHEeWdu7LwZb7HXA" name="[0..*] outputExpression" sourceNode="_iGDC4ARHEeWdu7LwZb7HXA" targetNode="_iGIicARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Rule/outputExpression"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Rule/outputExpression"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BKDphDpEeW3er92bhotdw" description="_6BKDohDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BKDpxDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BKDqBDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BKDqRDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BKDqhDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BKDqxDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHnwNgRHEeWdu7LwZb7HXA" name="[0..*] rules" sourceNode="_iGGtQARHEeWdu7LwZb7HXA" targetNode="_iGDC4ARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//SimpleComponent/rules"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//SimpleComponent/rules"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BLRwxDpEeW3er92bhotdw" description="_6BKqshDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BLRxBDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BLRxRDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BLRxhDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BLRxxDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BLRyBDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHo-VgRHEeWdu7LwZb7HXA" name="[1..1] port" sourceNode="_iGIicARHEeWdu7LwZb7HXA" targetNode="_iGAmoARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Expression/port"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Expression/port"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BL41hDpEeW3er92bhotdw" description="_6BL40hDpEeW3er92bhotdw" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BL41xDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BL42BDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BL42RDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BL42hDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BL42xDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHqzgARHEeWdu7LwZb7HXA" name="[0..*] failures" sourceNode="_iGIicARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Expression/failures"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Expression/failures"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BMf5hDpEeW3er92bhotdw" description="_6BMf4hDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BMf5xDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BMf6BDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BMf6RDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BMf6hDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BMf6xDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHsosARHEeWdu7LwZb7HXA" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iF-xcARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.0"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.1"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHtPwARHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHtPwQRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHtPwgRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHtPwwRHEeWdu7LwZb7HXA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHtPxARHEeWdu7LwZb7HXA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHtPxQRHEeWdu7LwZb7HXA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHt20ARHEeWdu7LwZb7HXA" sourceNode="_iF88QARHEeWdu7LwZb7HXA" targetNode="_iFuSwARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//CompositeComponent"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//CompositeComponent/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHud4ARHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHud4QRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHud4gRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHud4wRHEeWdu7LwZb7HXA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHud5ARHEeWdu7LwZb7HXA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHud5QRHEeWdu7LwZb7HXA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHvE8ARHEeWdu7LwZb7HXA" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_iF-xcARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Port"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Port/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHvsAARHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHvsAQRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHvsAgRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHvsAwRHEeWdu7LwZb7HXA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHvsBARHEeWdu7LwZb7HXA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHvsBQRHEeWdu7LwZb7HXA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHwTEARHEeWdu7LwZb7HXA" sourceNode="_iGGtQARHEeWdu7LwZb7HXA" targetNode="_iFuSwARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//SimpleComponent"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//SimpleComponent/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_iHwTEQRHEeWdu7LwZb7HXA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_iHwTEgRHEeWdu7LwZb7HXA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_iHwTEwRHEeWdu7LwZb7HXA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHwTFARHEeWdu7LwZb7HXA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_iHwTFQRHEeWdu7LwZb7HXA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_iHwTFgRHEeWdu7LwZb7HXA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_iHxhMARHEeWdu7LwZb7HXA" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_iF88QARHEeWdu7LwZb7HXA" beginLabel="[0..*] components" endLabel="[0..1] parent">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Component/parent"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/components"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Component/parent"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BgB5hDpEeW3er92bhotdw" description="_6BgB4hDpEeW3er92bhotdw" sourceArrow="InputArrow" targetArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BgB5xDpEeW3er92bhotdw"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_6BgB6BDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BgB6RDpEeW3er92bhotdw"/>
+          </beginLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BgB6hDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BgB6xDpEeW3er92bhotdw"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_DVCVwBAZEeW3er92bhotdw" name="Connection" tooltipText="" outgoingEdges="_DW9BVhAZEeW3er92bhotdw _-bHthhDpEeW3er92bhotdw" incomingEdges="_DW4v4BAZEeW3er92bhotdw _GnKL0BAvEeW3er92bhotdw _JaOwYBAvEeW3er92bhotdw" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Connection"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//Connection"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_DVEyABAZEeW3er92bhotdw" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyARAZEeW3er92bhotdw"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyAhAZEeW3er92bhotdw"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyAxAZEeW3er92bhotdw" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_DVEyBBAZEeW3er92bhotdw" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_DW4v4BAZEeW3er92bhotdw" name="[0..*] connections" sourceNode="_iF88QARHEeWdu7LwZb7HXA" targetNode="_DVCVwBAZEeW3er92bhotdw">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/connections"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//CompositeComponent/connections"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BDV9BDpEeW3er92bhotdw" description="_6BDV8BDpEeW3er92bhotdw" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BDV9RDpEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_6BDV9hDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BDV9xDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BDV-BDpEeW3er92bhotdw" labelSize="6" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BDV-RDpEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_DW9BVhAZEeW3er92bhotdw" name="[0..*] rules" sourceNode="_DVCVwBAZEeW3er92bhotdw" targetNode="_iGDC4ARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Connection/rules"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Connection/rules"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_DW9oYBAZEeW3er92bhotdw" routingStyle="manhattan">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_DW9oYRAZEeW3er92bhotdw"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_DW9oYhAZEeW3er92bhotdw" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_DW9oYxAZEeW3er92bhotdw"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_DW9oZBAZEeW3er92bhotdw" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_DW9oZRAZEeW3er92bhotdw" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_GnKL0BAvEeW3er92bhotdw" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_DVCVwBAZEeW3er92bhotdw" beginLabel="[1..1] from" endLabel="[1..1] outgoingConnections">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/outgoingConnections"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Connection/from"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/outgoingConnections"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BcXhhDpEeW3er92bhotdw" description="_6BcXghDpEeW3er92bhotdw" sourceArrow="InputArrow" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BcXhxDpEeW3er92bhotdw"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_6BcXiBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BcXiRDpEeW3er92bhotdw"/>
+          </beginLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BcXihDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BcXixDpEeW3er92bhotdw"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_JaOwYBAvEeW3er92bhotdw" sourceNode="_iGAmoARHEeWdu7LwZb7HXA" targetNode="_DVCVwBAZEeW3er92bhotdw" beginLabel="[1..1] to" endLabel="[1..1] incomingConnections">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Port/incomingConnections"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Port/incomingConnections"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Connection/to"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_6BezwBDpEeW3er92bhotdw" description="_6BdlohDpEeW3er92bhotdw" sourceArrow="InputArrow" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_6BezwRDpEeW3er92bhotdw"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_6BezwhDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BezwxDpEeW3er92bhotdw"/>
+          </beginLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_6BezxBDpEeW3er92bhotdw" labelFormat="bold" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_6BezxRDpEeW3er92bhotdw"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='Bi-directional%20EC_EReference%20']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_-ajFwBDpEeW3er92bhotdw" name="FlaBehaviour" tooltipText="" incomingEdges="_-bEqMBDpEeW3er92bhotdw _-bHthhDpEeW3er92bhotdw" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//FlaBehaviour"/>
+        <semanticElements xmi:type="ecore:EClass" href="flamm.ecore#//FlaBehaviour"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_-ak68BDpEeW3er92bhotdw" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_interface.gif" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak68RDpEeW3er92bhotdw"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.0/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak68hDpEeW3er92bhotdw" red="125" green="125" blue="125"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak68xDpEeW3er92bhotdw" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_-ak69BDpEeW3er92bhotdw" red="228" green="228" blue="228"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_-a8HUBDpEeW3er92bhotdw" name="propagateFailures()" tooltipText="propagateFailures()">
+          <target xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/propagateFailures"/>
+          <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/propagateFailures"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_-a8uYBDpEeW3er92bhotdw" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-a8uYRDpEeW3er92bhotdw"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_-a8uYhDpEeW3er92bhotdw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_-a8uYxDpEeW3er92bhotdw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_-a9VcBDpEeW3er92bhotdw" name="initialize(initNoFailure EBoolean)" tooltipText="initialize(initNoFailure)">
+          <target xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/initialize"/>
+          <semanticElements xmi:type="ecore:EOperation" href="flamm.ecore#//FlaBehaviour/initialize"/>
+          <semanticElements xmi:type="ecore:EParameter" href="flamm.ecore#//FlaBehaviour/initialize/initNoFailure"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_-a9VcRDpEeW3er92bhotdw" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-a9VchDpEeW3er92bhotdw"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_-a9VcxDpEeW3er92bhotdw"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_-a9VdBDpEeW3er92bhotdw"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_-bEqMBDpEeW3er92bhotdw" sourceNode="_iFuSwARHEeWdu7LwZb7HXA" targetNode="_-ajFwBDpEeW3er92bhotdw">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Component"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.0"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Component/@eGenericSuperTypes.1"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_-bHtgBDpEeW3er92bhotdw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="manhattan">
+          <customFeatures>routingStyle</customFeatures>
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_-bHtgRDpEeW3er92bhotdw" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_-bHtghDpEeW3er92bhotdw" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bHtgxDpEeW3er92bhotdw"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_-bHthBDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bHthRDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_-bHthhDpEeW3er92bhotdw" sourceNode="_DVCVwBAZEeW3er92bhotdw" targetNode="_-ajFwBDpEeW3er92bhotdw">
+        <target xmi:type="ecore:EClass" href="flamm.ecore#//Connection"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flamm.ecore#//Connection/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_-bIUkBDpEeW3er92bhotdw" lineStyle="dash" targetArrow="InputClosedArrow" routingStyle="manhattan">
+          <customFeatures>routingStyle</customFeatures>
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@conditionnalStyles.0/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_-bIUkRDpEeW3er92bhotdw" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_-bIUkhDpEeW3er92bhotdw" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bIUkxDpEeW3er92bhotdw"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_-bIUlBDpEeW3er92bhotdw" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_-bIUlRDpEeW3er92bhotdw"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_rhFJsDtMEeWdhpt7FCQG8A" name="[0..*] previousFailures" sourceNode="_iGLlwARHEeWdu7LwZb7HXA" targetNode="_iGLlwARHEeWdu7LwZb7HXA">
+        <target xmi:type="ecore:EReference" href="flamm.ecore#//Failure/previousFailures"/>
+        <semanticElements xmi:type="ecore:EReference" href="flamm.ecore#//Failure/previousFailures"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_rhGX0DtMEeWdhpt7FCQG8A" routingStyle="manhattan">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_rhG-4DtMEeWdhpt7FCQG8A"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_rhG-4TtMEeWdhpt7FCQG8A" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_rhG-4jtMEeWdhpt7FCQG8A"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_rhG-4ztMEeWdhpt7FCQG8A" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_rhG-5DtMEeWdhpt7FCQG8A" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_cDcnRARHEeWdu7LwZb7HXA"/>
+      <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+      <target xmi:type="ecore:EPackage" href="flamm.ecore#/"/>
+    </ownedRepresentations>
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_cTOIoARHEeWdu7LwZb7HXA" name="FailureTypes class diagram">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_cTOvsARHEeWdu7LwZb7HXA" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_cTOvsQRHEeWdu7LwZb7HXA" type="Sirius" element="_cTOIoARHEeWdu7LwZb7HXA" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_cTPWwARHEeWdu7LwZb7HXA" type="2001" element="_cTOIoQRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_cTP90ARHEeWdu7LwZb7HXA" type="5002">
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_cTP90QRHEeWdu7LwZb7HXA" y="5"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_cTQk4ARHEeWdu7LwZb7HXA" type="3005" element="_cTOIogRHEeWdu7LwZb7HXA">
+              <styles xmi:type="notation:ShapeStyle" xmi:id="_cTQk4QRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface"/>
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTQk4gRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_cTPWwQRHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTPWwgRHEeWdu7LwZb7HXA" width="672" height="67"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_cTOvsgRHEeWdu7LwZb7HXA"/>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_cTOIoQRHEeWdu7LwZb7HXA" width="-1" height="-1">
+        <target xmi:type="ecore:EPackage" href="flamm.ecore#//FailureTypes"/>
+        <semanticElements xmi:type="ecore:EPackage" href="flamm.ecore#//FailureTypes"/>
+        <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_cTOIogRHEeWdu7LwZb7HXA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_cTOIowRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_cTOIpARHEeWdu7LwZb7HXA"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_cTOIpQRHEeWdu7LwZb7HXA"/>
+      <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+      <target xmi:type="ecore:EPackage" href="flamm.ecore#//FailureTypes"/>
+    </ownedRepresentations>
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_cTa88ARHEeWdu7LwZb7HXA" name="ecore class diagram">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_cTbkAARHEeWdu7LwZb7HXA" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_cTbkAQRHEeWdu7LwZb7HXA" type="Sirius" element="_cTa88ARHEeWdu7LwZb7HXA" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_cTbkAwRHEeWdu7LwZb7HXA" type="2001" element="_cTa88QRHEeWdu7LwZb7HXA">
+            <children xmi:type="notation:Node" xmi:id="_cTcyIARHEeWdu7LwZb7HXA" type="5002">
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_cTcyIQRHEeWdu7LwZb7HXA" y="5"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_cTdZMARHEeWdu7LwZb7HXA" type="3005" element="_cTa88gRHEeWdu7LwZb7HXA">
+              <styles xmi:type="notation:ShapeStyle" xmi:id="_cTeAQARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface"/>
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTeAQQRHEeWdu7LwZb7HXA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_cTbkBARHEeWdu7LwZb7HXA" fontName=".Helvetica Neue DeskInterface" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cTbkBQRHEeWdu7LwZb7HXA" width="672" height="67"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_cTbkAgRHEeWdu7LwZb7HXA"/>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_cTa88QRHEeWdu7LwZb7HXA" width="-1" height="-1">
+        <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+        <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+        <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_cTa88gRHEeWdu7LwZb7HXA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_cTa88wRHEeWdu7LwZb7HXA"/>
+          <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_cTa89ARHEeWdu7LwZb7HXA"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_cTa89QRHEeWdu7LwZb7HXA"/>
+      <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+      <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </ownedRepresentations>
+    <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+  </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm.ecore b/plugins/org.polarsys.chess.fla.flamm/model/flamm.ecore
new file mode 100644
index 0000000..d849e92
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm.ecore
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="flamm" nsURI="http://www.polarsys.org/chess/fla/flamm" nsPrefix="flamm">
+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FlaBehaviour" abstract="true" interface="true">
+    <eOperations name="propagateFailures"/>
+    <eOperations name="initialize">
+      <eParameters name="initNoFailure" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
+    </eOperations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Component" abstract="true" eSuperTypes="#//NamedElement #//FlaBehaviour">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" upperBound="-1"
+        eType="#//Port" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPorts" upperBound="-1"
+        eType="#//Port" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//CompositeComponent"
+        eOpposite="#//CompositeComponent/components"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CompositeComponent" eSuperTypes="#//Component">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="components" upperBound="-1"
+        eType="#//Component" containment="true" eOpposite="#//Component/parent"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="connections" upperBound="-1"
+        eType="#//Connection" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SimpleComponent" eSuperTypes="#//Component">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
+        eType="#//Rule" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Port" eSuperTypes="#//NamedElement">
+    <eOperations name="propagateFailures"/>
+    <eOperations name="initialize"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="connectedPorts" upperBound="-1"
+        eType="#//Port"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="failures" ordered="false"
+        upperBound="-1" eType="#//Failure" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="newFailures" ordered="false"
+        upperBound="-1" eType="#//Failure" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="owner" lowerBound="1" eType="#//Component"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="incomingConnections" lowerBound="1"
+        eType="#//Connection" eOpposite="#//Connection/to"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingConnections" lowerBound="1"
+        eType="#//Connection" eOpposite="#//Connection/from"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Connection" eSuperTypes="#//FlaBehaviour">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="from" lowerBound="1" eType="#//Port"
+        eOpposite="#//Port/outgoingConnections"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="to" lowerBound="1" eType="#//Port"
+        eOpposite="#//Port/incomingConnections"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rules" upperBound="-1"
+        eType="#//Rule"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Rule">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputExpression" upperBound="-1"
+        eType="#//Expression" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputExpression" upperBound="-1"
+        eType="#//Expression" containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="specificity" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt" changeable="false"
+        transient="true" defaultValueLiteral="-1"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Expression">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="port" lowerBound="1" eType="#//Port"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="failures" upperBound="-1"
+        eType="#//Failure" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Failure">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FailureTypes/FailureType"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="acidAvoidable" eType="#//ACIDavoidable"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="acidMitigation" eType="#//ACIDmitigation"
+        containment="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="previousFailures" upperBound="-1"
+        eType="#//Failure"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ACIDavoidable">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="a" eType="#//FailureTypes/A_avoidable"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c" eType="#//FailureTypes/C_avoidable"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="i" eType="#//FailureTypes/I_avoidable"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="d" eType="#//FailureTypes/D_avoidable"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="ACIDmitigation">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="a" eType="#//FailureTypes/A_mitigation"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="c" eType="#//FailureTypes/C_mitigation"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="i" eType="#//FailureTypes/I_mitigation"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="d" eType="#//FailureTypes/D_mitigation"/>
+  </eClassifiers>
+  <eSubpackages name="FailureTypes" nsURI="http://www.polarsys.org/chess/fla/flamm/FailureTypes"
+      nsPrefix="FailureTypes">
+    <eClassifiers xsi:type="ecore:EEnum" name="FailureType">
+      <eLiterals name="noFailure"/>
+      <eLiterals name="failure" value="1"/>
+      <eLiterals name="variable" value="2"/>
+      <eLiterals name="wildcard" value="3"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="A_avoidable">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="incompletion" value="1"/>
+      <eLiterals name="none" value="2"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="C_avoidable">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="inconsistency" value="1"/>
+      <eLiterals name="none" value="2"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="I_avoidable">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="interference" value="1"/>
+      <eLiterals name="none" value="2"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="D_avoidable">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="impermanence" value="1"/>
+      <eLiterals name="none" value="2"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="A_mitigation">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="all_or_nothing" value="1"/>
+      <eLiterals name="all_or_compensation" value="2"/>
+      <eLiterals name="none" value="3"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="C_mitigation">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="full_consistency" value="1"/>
+      <eLiterals name="range_violation_allowed" value="2"/>
+      <eLiterals name="none" value="3"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="I_mitigation">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="portable_level" value="1"/>
+      <eLiterals name="serializable" value="2"/>
+      <eLiterals name="none" value="3"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="D_mitigation">
+      <eLiterals name="unspecified"/>
+      <eLiterals name="no_loss" value="1"/>
+      <eLiterals name="partial_loss_allowed" value="2"/>
+      <eLiterals name="none" value="3"/>
+    </eClassifiers>
+  </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.polarsys.chess.fla.flamm/model/flamm.genmodel b/plugins/org.polarsys.chess.fla.flamm/model/flamm.genmodel
new file mode 100644
index 0000000..786c706
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/model/flamm.genmodel
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.polarsys.chess.fla.flamm/src" modelPluginID="org.polarsys.chess.fla.flamm"
+    modelName="Flamm" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    suppressEMFTypes="true" suppressInterfaces="true" booleanFlagsField="" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" publicConstructors="true" interfaceNamePattern=""
+    classNamePattern="" operationReflection="true" importOrganizing="true">
+  <foreignModel>flamm.ecore</foreignModel>
+  <genPackages prefix="Flamm" basePackage="org.polarsys.chess.fla" resource="XML"
+      disposableProviderFactory="true" ecorePackage="flamm.ecore#/" publicationLocation="">
+    <genClasses ecoreClass="flamm.ecore#//NamedElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//NamedElement/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//NamedElement/name"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="flamm.ecore#//FlaBehaviour">
+      <genOperations ecoreOperation="flamm.ecore#//FlaBehaviour/propagateFailures"/>
+      <genOperations ecoreOperation="flamm.ecore#//FlaBehaviour/initialize">
+        <genParameters ecoreParameter="flamm.ecore#//FlaBehaviour/initialize/initNoFailure"/>
+      </genOperations>
+    </genClasses>
+    <genClasses image="false" ecoreClass="flamm.ecore#//Component">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Component/inputPorts"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Component/outputPorts"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference flamm.ecore#//Component/parent"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//CompositeComponent">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//CompositeComponent/components"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//CompositeComponent/connections"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//SimpleComponent">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//SimpleComponent/rules"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//Port">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/connectedPorts"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/failures"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/newFailures"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/owner"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/incomingConnections"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Port/outgoingConnections"/>
+      <genOperations ecoreOperation="flamm.ecore#//Port/propagateFailures"/>
+      <genOperations ecoreOperation="flamm.ecore#//Port/initialize"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//Connection">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Connection/from"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Connection/to"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Connection/rules"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//Rule">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Rule/inputExpression"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Rule/outputExpression"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//Rule/specificity"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//Expression">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Expression/port"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Expression/failures"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//Failure">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//Failure/type"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//Failure/id"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Failure/acidAvoidable"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flamm.ecore#//Failure/acidMitigation"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference flamm.ecore#//Failure/previousFailures"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//ACIDavoidable">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/a"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/c"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/i"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDavoidable/d"/>
+    </genClasses>
+    <genClasses ecoreClass="flamm.ecore#//ACIDmitigation">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/a"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/c"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/i"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flamm.ecore#//ACIDmitigation/d"/>
+    </genClasses>
+    <nestedGenPackages prefix="FailureTypes" disposableProviderFactory="true" ecorePackage="flamm.ecore#//FailureTypes">
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/FailureType">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/noFailure"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/failure"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/variable"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/FailureType/wildcard"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/A_avoidable">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_avoidable/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_avoidable/incompletion"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_avoidable/none"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/C_avoidable">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_avoidable/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_avoidable/inconsistency"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_avoidable/none"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/I_avoidable">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_avoidable/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_avoidable/interference"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_avoidable/none"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/D_avoidable">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_avoidable/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_avoidable/impermanence"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_avoidable/none"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/A_mitigation">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/all_or_nothing"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/all_or_compensation"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/A_mitigation/none"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/C_mitigation">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/full_consistency"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/range_violation_allowed"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/C_mitigation/none"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/I_mitigation">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/portable_level"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/serializable"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/I_mitigation/none"/>
+      </genEnums>
+      <genEnums typeSafeEnumCompatible="false" ecoreEnum="flamm.ecore#//FailureTypes/D_mitigation">
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/unspecified"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/no_loss"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/partial_loss_allowed"/>
+        <genEnumLiterals ecoreEnumLiteral="flamm.ecore#//FailureTypes/D_mitigation/none"/>
+      </genEnums>
+    </nestedGenPackages>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.polarsys.chess.fla.flamm/plugin.properties b/plugins/org.polarsys.chess.fla.flamm/plugin.properties
new file mode 100644
index 0000000..646c966
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+#                  CHESS core plugin
+#
+#               Copyright (C) 2011-2015
+#            Mälardalen University, Sweden
+#
+#
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License
+#  v1.0 which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+pluginName = Flamm Model
+providerName = www.example.org
diff --git a/plugins/org.polarsys.chess.fla.flamm/plugin.xml b/plugins/org.polarsys.chess.fla.flamm/plugin.xml
new file mode 100644
index 0000000..60d50bf
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated flamm -->
+      <package
+            uri="http://www.polarsys.org/chess/fla/flamm"
+            class="org.polarsys.chess.fla.flamm.FlammPackage"
+            genModel="model/flamm.genmodel"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.extension_parser">
+      <!-- @generated flamm -->
+      <parser
+            type="flamm"
+            class="org.polarsys.chess.fla.flamm.util.FlammResourceFactoryImpl"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated flamm -->
+      <package
+            uri="http://www.polarsys.org/chess/fla/flamm/FailureTypes"
+            class="org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage"
+            genModel="model/flamm.genmodel"/>
+   </extension>
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDavoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDavoidable.java
new file mode 100644
index 0000000..b0b99a1
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDavoidable.java
@@ -0,0 +1,398 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable;
+import org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable;
+import org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable;
+import org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ACI Davoidable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getA <em>A</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getC <em>C</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getI <em>I</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getD <em>D</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable()
+ * @model kind="class"
+ * @generated
+ */
+public class ACIDavoidable extends MinimalEObjectImpl.Container implements EObject {
+	/**
+	 * The default value of the '{@link #getA() <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getA()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final A_avoidable A_EDEFAULT = A_avoidable.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getA() <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getA()
+	 * @generated
+	 * @ordered
+	 */
+	protected A_avoidable a = A_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getC() <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getC()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final C_avoidable C_EDEFAULT = C_avoidable.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getC() <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getC()
+	 * @generated
+	 * @ordered
+	 */
+	protected C_avoidable c = C_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getI() <em>I</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getI()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final I_avoidable I_EDEFAULT = I_avoidable.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getI() <em>I</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getI()
+	 * @generated
+	 * @ordered
+	 */
+	protected I_avoidable i = I_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getD() <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final D_avoidable D_EDEFAULT = D_avoidable.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getD() <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD()
+	 * @generated
+	 * @ordered
+	 */
+	protected D_avoidable d = D_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ACIDavoidable() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.ACI_DAVOIDABLE;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>A</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>A</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>A</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+	 * @see #setA(A_avoidable)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_A()
+	 * @model
+	 * @generated
+	 */
+	public A_avoidable getA() {
+		return a;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getA <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>A</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+	 * @see #getA()
+	 * @generated
+	 */
+	public void setA(A_avoidable newA) {
+		A_avoidable oldA = a;
+		a = newA == null ? A_EDEFAULT : newA;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__A, oldA, a));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>C</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>C</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>C</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+	 * @see #setC(C_avoidable)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_C()
+	 * @model
+	 * @generated
+	 */
+	public C_avoidable getC() {
+		return c;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getC <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>C</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+	 * @see #getC()
+	 * @generated
+	 */
+	public void setC(C_avoidable newC) {
+		C_avoidable oldC = c;
+		c = newC == null ? C_EDEFAULT : newC;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__C, oldC, c));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>I</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>I</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>I</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+	 * @see #setI(I_avoidable)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_I()
+	 * @model
+	 * @generated
+	 */
+	public I_avoidable getI() {
+		return i;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getI <em>I</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>I</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+	 * @see #getI()
+	 * @generated
+	 */
+	public void setI(I_avoidable newI) {
+		I_avoidable oldI = i;
+		i = newI == null ? I_EDEFAULT : newI;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__I, oldI, i));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>D</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>D</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>D</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+	 * @see #setD(D_avoidable)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable_D()
+	 * @model
+	 * @generated
+	 */
+	public D_avoidable getD() {
+		return d;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getD <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>D</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+	 * @see #getD()
+	 * @generated
+	 */
+	public void setD(D_avoidable newD) {
+		D_avoidable oldD = d;
+		d = newD == null ? D_EDEFAULT : newD;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DAVOIDABLE__D, oldD, d));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.ACI_DAVOIDABLE__A:
+				return getA();
+			case FlammPackage.ACI_DAVOIDABLE__C:
+				return getC();
+			case FlammPackage.ACI_DAVOIDABLE__I:
+				return getI();
+			case FlammPackage.ACI_DAVOIDABLE__D:
+				return getD();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.ACI_DAVOIDABLE__A:
+				setA((A_avoidable)newValue);
+				return;
+			case FlammPackage.ACI_DAVOIDABLE__C:
+				setC((C_avoidable)newValue);
+				return;
+			case FlammPackage.ACI_DAVOIDABLE__I:
+				setI((I_avoidable)newValue);
+				return;
+			case FlammPackage.ACI_DAVOIDABLE__D:
+				setD((D_avoidable)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.ACI_DAVOIDABLE__A:
+				setA(A_EDEFAULT);
+				return;
+			case FlammPackage.ACI_DAVOIDABLE__C:
+				setC(C_EDEFAULT);
+				return;
+			case FlammPackage.ACI_DAVOIDABLE__I:
+				setI(I_EDEFAULT);
+				return;
+			case FlammPackage.ACI_DAVOIDABLE__D:
+				setD(D_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.ACI_DAVOIDABLE__A:
+				return a != A_EDEFAULT;
+			case FlammPackage.ACI_DAVOIDABLE__C:
+				return c != C_EDEFAULT;
+			case FlammPackage.ACI_DAVOIDABLE__I:
+				return i != I_EDEFAULT;
+			case FlammPackage.ACI_DAVOIDABLE__D:
+				return d != D_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (a: ");
+		result.append(a);
+		result.append(", c: ");
+		result.append(c);
+		result.append(", i: ");
+		result.append(i);
+		result.append(", d: ");
+		result.append(d);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ACIDavoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDmitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDmitigation.java
new file mode 100644
index 0000000..6931783
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/ACIDmitigation.java
@@ -0,0 +1,398 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation;
+import org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation;
+import org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation;
+import org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ACI Dmitigation</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getA <em>A</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getC <em>C</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getI <em>I</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getD <em>D</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation()
+ * @model kind="class"
+ * @generated
+ */
+public class ACIDmitigation extends MinimalEObjectImpl.Container implements EObject {
+	/**
+	 * The default value of the '{@link #getA() <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getA()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final A_mitigation A_EDEFAULT = A_mitigation.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getA() <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getA()
+	 * @generated
+	 * @ordered
+	 */
+	protected A_mitigation a = A_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getC() <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getC()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final C_mitigation C_EDEFAULT = C_mitigation.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getC() <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getC()
+	 * @generated
+	 * @ordered
+	 */
+	protected C_mitigation c = C_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getI() <em>I</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getI()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final I_mitigation I_EDEFAULT = I_mitigation.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getI() <em>I</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getI()
+	 * @generated
+	 * @ordered
+	 */
+	protected I_mitigation i = I_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getD() <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final D_mitigation D_EDEFAULT = D_mitigation.UNSPECIFIED;
+
+	/**
+	 * The cached value of the '{@link #getD() <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD()
+	 * @generated
+	 * @ordered
+	 */
+	protected D_mitigation d = D_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ACIDmitigation() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.ACI_DMITIGATION;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>A</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>A</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>A</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+	 * @see #setA(A_mitigation)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_A()
+	 * @model
+	 * @generated
+	 */
+	public A_mitigation getA() {
+		return a;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getA <em>A</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>A</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+	 * @see #getA()
+	 * @generated
+	 */
+	public void setA(A_mitigation newA) {
+		A_mitigation oldA = a;
+		a = newA == null ? A_EDEFAULT : newA;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__A, oldA, a));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>C</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>C</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>C</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+	 * @see #setC(C_mitigation)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_C()
+	 * @model
+	 * @generated
+	 */
+	public C_mitigation getC() {
+		return c;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getC <em>C</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>C</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+	 * @see #getC()
+	 * @generated
+	 */
+	public void setC(C_mitigation newC) {
+		C_mitigation oldC = c;
+		c = newC == null ? C_EDEFAULT : newC;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__C, oldC, c));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>I</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>I</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>I</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+	 * @see #setI(I_mitigation)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_I()
+	 * @model
+	 * @generated
+	 */
+	public I_mitigation getI() {
+		return i;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getI <em>I</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>I</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+	 * @see #getI()
+	 * @generated
+	 */
+	public void setI(I_mitigation newI) {
+		I_mitigation oldI = i;
+		i = newI == null ? I_EDEFAULT : newI;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__I, oldI, i));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>D</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>D</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>D</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+	 * @see #setD(D_mitigation)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation_D()
+	 * @model
+	 * @generated
+	 */
+	public D_mitigation getD() {
+		return d;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getD <em>D</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>D</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+	 * @see #getD()
+	 * @generated
+	 */
+	public void setD(D_mitigation newD) {
+		D_mitigation oldD = d;
+		d = newD == null ? D_EDEFAULT : newD;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.ACI_DMITIGATION__D, oldD, d));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.ACI_DMITIGATION__A:
+				return getA();
+			case FlammPackage.ACI_DMITIGATION__C:
+				return getC();
+			case FlammPackage.ACI_DMITIGATION__I:
+				return getI();
+			case FlammPackage.ACI_DMITIGATION__D:
+				return getD();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.ACI_DMITIGATION__A:
+				setA((A_mitigation)newValue);
+				return;
+			case FlammPackage.ACI_DMITIGATION__C:
+				setC((C_mitigation)newValue);
+				return;
+			case FlammPackage.ACI_DMITIGATION__I:
+				setI((I_mitigation)newValue);
+				return;
+			case FlammPackage.ACI_DMITIGATION__D:
+				setD((D_mitigation)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.ACI_DMITIGATION__A:
+				setA(A_EDEFAULT);
+				return;
+			case FlammPackage.ACI_DMITIGATION__C:
+				setC(C_EDEFAULT);
+				return;
+			case FlammPackage.ACI_DMITIGATION__I:
+				setI(I_EDEFAULT);
+				return;
+			case FlammPackage.ACI_DMITIGATION__D:
+				setD(D_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.ACI_DMITIGATION__A:
+				return a != A_EDEFAULT;
+			case FlammPackage.ACI_DMITIGATION__C:
+				return c != C_EDEFAULT;
+			case FlammPackage.ACI_DMITIGATION__I:
+				return i != I_EDEFAULT;
+			case FlammPackage.ACI_DMITIGATION__D:
+				return d != D_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (a: ");
+		result.append(a);
+		result.append(", c: ");
+		result.append(c);
+		result.append(", i: ");
+		result.append(i);
+		result.append(", d: ");
+		result.append(d);
+		result.append(')');
+		return result.toString();
+	}
+
+} // ACIDmitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Component.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Component.java
new file mode 100644
index 0000000..ad300c4
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Component.java
@@ -0,0 +1,395 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Component#getInputPorts <em>Input Ports</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Component#getOutputPorts <em>Output Ports</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent()
+ * @model kind="class" abstract="true"
+ * @generated
+ */
+public abstract class Component extends NamedElement implements FlaBehaviour {
+	/**
+	 * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInputPorts()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Port> inputPorts;
+
+	/**
+	 * The cached value of the '{@link #getOutputPorts() <em>Output Ports</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutputPorts()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Port> outputPorts;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.COMPONENT;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Input Ports</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Port}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Input Ports</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Input Ports</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent_InputPorts()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public List<Port> getInputPorts() {
+		if (inputPorts == null) {
+			inputPorts = new EObjectContainmentEList<Port>(Port.class, this, FlammPackage.COMPONENT__INPUT_PORTS);
+		}
+		return inputPorts;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Output Ports</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Port}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output Ports</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output Ports</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent_OutputPorts()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public List<Port> getOutputPorts() {
+		if (outputPorts == null) {
+			outputPorts = new EObjectContainmentEList<Port>(Port.class, this, FlammPackage.COMPONENT__OUTPUT_PORTS);
+		}
+		return outputPorts;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Parent</b></em>' container reference.
+	 * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.CompositeComponent#getComponents <em>Components</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Parent</em>' container reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Parent</em>' container reference.
+	 * @see #setParent(CompositeComponent)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent_Parent()
+	 * @see org.polarsys.chess.fla.flamm.CompositeComponent#getComponents
+	 * @model opposite="components" transient="false"
+	 * @generated
+	 */
+	public CompositeComponent getParent() {
+		if (eContainerFeatureID() != FlammPackage.COMPONENT__PARENT) return null;
+		return (CompositeComponent)eInternalContainer();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetParent(CompositeComponent newParent, NotificationChain msgs) {
+		msgs = eBasicSetContainer((InternalEObject)newParent, FlammPackage.COMPONENT__PARENT, msgs);
+		return msgs;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Parent</em>' container reference.
+	 * @see #getParent()
+	 * @generated
+	 */
+	public void setParent(CompositeComponent newParent) {
+		if (newParent != eInternalContainer() || (eContainerFeatureID() != FlammPackage.COMPONENT__PARENT && newParent != null)) {
+			if (EcoreUtil.isAncestor(this, newParent))
+				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+			NotificationChain msgs = null;
+			if (eInternalContainer() != null)
+				msgs = eBasicRemoveFromContainer(msgs);
+			if (newParent != null)
+				msgs = ((InternalEObject)newParent).eInverseAdd(this, FlammPackage.COMPOSITE_COMPONENT__COMPONENTS, CompositeComponent.class, msgs);
+			msgs = basicSetParent(newParent, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.COMPONENT__PARENT, newParent, newParent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public abstract void propagateFailures();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Initialize the Component, clear failures from ports etc.
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void initialize(boolean initNoFailure) {
+		if (this.getParent() == null) {
+			for (Port port : getInputPorts()) {
+				initializeRootComponentInputPort(port, initNoFailure);
+			}
+		} else {
+			for (Port port : getInputPorts()) {
+				initializePort(port, initNoFailure);
+			}
+		}
+		for (Port port : getOutputPorts()) {
+			initializePort(port, initNoFailure);
+		}
+		
+		if (initNoFailure) {
+			FlaSystem.addUpdatedComponent(this);
+		}
+	}
+	
+	protected void initializeRootComponentInputPort(Port port, boolean initNoFailure) {
+		List<Failure> failures = new ArrayList<Failure>(port.getFailures());
+		initializePort(port, initNoFailure);
+		port.addFailures(failures);
+	}
+
+	protected void initializePort(Port port, boolean initNoFailure) {
+		port.initialize();
+		if (initNoFailure) {
+			port.addFailure(Failure.createNoFailure());
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.COMPONENT__PARENT:
+				if (eInternalContainer() != null)
+					msgs = eBasicRemoveFromContainer(msgs);
+				return basicSetParent((CompositeComponent)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.COMPONENT__INPUT_PORTS:
+				return ((InternalEList<?>)getInputPorts()).basicRemove(otherEnd, msgs);
+			case FlammPackage.COMPONENT__OUTPUT_PORTS:
+				return ((InternalEList<?>)getOutputPorts()).basicRemove(otherEnd, msgs);
+			case FlammPackage.COMPONENT__PARENT:
+				return basicSetParent(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+		switch (eContainerFeatureID()) {
+			case FlammPackage.COMPONENT__PARENT:
+				return eInternalContainer().eInverseRemove(this, FlammPackage.COMPOSITE_COMPONENT__COMPONENTS, CompositeComponent.class, msgs);
+		}
+		return super.eBasicRemoveFromContainerFeature(msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.COMPONENT__INPUT_PORTS:
+				return getInputPorts();
+			case FlammPackage.COMPONENT__OUTPUT_PORTS:
+				return getOutputPorts();
+			case FlammPackage.COMPONENT__PARENT:
+				return getParent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.COMPONENT__INPUT_PORTS:
+				getInputPorts().clear();
+				getInputPorts().addAll((Collection<? extends Port>)newValue);
+				return;
+			case FlammPackage.COMPONENT__OUTPUT_PORTS:
+				getOutputPorts().clear();
+				getOutputPorts().addAll((Collection<? extends Port>)newValue);
+				return;
+			case FlammPackage.COMPONENT__PARENT:
+				setParent((CompositeComponent)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.COMPONENT__INPUT_PORTS:
+				getInputPorts().clear();
+				return;
+			case FlammPackage.COMPONENT__OUTPUT_PORTS:
+				getOutputPorts().clear();
+				return;
+			case FlammPackage.COMPONENT__PARENT:
+				setParent((CompositeComponent)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.COMPONENT__INPUT_PORTS:
+				return inputPorts != null && !inputPorts.isEmpty();
+			case FlammPackage.COMPONENT__OUTPUT_PORTS:
+				return outputPorts != null && !outputPorts.isEmpty();
+			case FlammPackage.COMPONENT__PARENT:
+				return getParent() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedOperationID(int baseOperationID, Class<?> baseClass) {
+		if (baseClass == FlaBehaviour.class) {
+			switch (baseOperationID) {
+				case FlammPackage.FLA_BEHAVIOUR___PROPAGATE_FAILURES: return FlammPackage.COMPONENT___PROPAGATE_FAILURES;
+				case FlammPackage.FLA_BEHAVIOUR___INITIALIZE__BOOLEAN: return FlammPackage.COMPONENT___INITIALIZE__BOOLEAN;
+				default: return -1;
+			}
+		}
+		return super.eDerivedOperationID(baseOperationID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case FlammPackage.COMPONENT___PROPAGATE_FAILURES:
+				propagateFailures();
+				return null;
+			case FlammPackage.COMPONENT___INITIALIZE__BOOLEAN:
+				initialize((Boolean)arguments.get(0));
+				return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // Component
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/CompositeComponent.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/CompositeComponent.java
new file mode 100644
index 0000000..4397142
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/CompositeComponent.java
@@ -0,0 +1,278 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Composite Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.CompositeComponent#getComponents <em>Components</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.CompositeComponent#getConnections <em>Connections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent()
+ * @model kind="class"
+ * @generated
+ */
+public class CompositeComponent extends Component {
+	/**
+	 * The cached value of the '{@link #getComponents() <em>Components</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComponents()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Component> components;
+
+	/**
+	 * The cached value of the '{@link #getConnections() <em>Connections</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConnections()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Connection> connections;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeComponent() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.COMPOSITE_COMPONENT;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Components</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Component}.
+	 * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Components</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Components</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent_Components()
+	 * @see org.polarsys.chess.fla.flamm.Component#getParent
+	 * @model opposite="parent" containment="true"
+	 * @generated
+	 */
+	public List<Component> getComponents() {
+		if (components == null) {
+			components = new EObjectContainmentWithInverseEList<Component>(Component.class, this, FlammPackage.COMPOSITE_COMPONENT__COMPONENTS, FlammPackage.COMPONENT__PARENT);
+		}
+		return components;
+	}
+	
+	/**
+	 * Returns the value of the '<em><b>Connections</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Connection}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Connections</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Connections</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent_Connections()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public List<Connection> getConnections() {
+		if (connections == null) {
+			connections = new EObjectContainmentEList<Connection>(Connection.class, this, FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS);
+		}
+		return connections;
+	}
+
+	@Override
+	public void propagateFailures() {
+		for (Port port : getInputPorts()) {
+			if (port.hasNewFailures()) {
+				propagateInputFailures(port);
+			}
+		}
+		for (Port port : getOutputPorts()) {
+			if (port.hasNewFailures()) {
+				propagateOutputFailures(port);
+			}
+		}
+	}
+	
+	private void propagateInputFailures(Port port) {
+		for (Port connectedPort : port.getConnectedPorts()) {
+			if (getComponents().contains(connectedPort.getOwner()) || getOutputPorts().contains(connectedPort)) {
+				propagateNewFailures(port, connectedPort);
+			}
+		}
+		port.clearNewFailures();
+	}
+	
+	protected void propagateOutputFailures(Port port) {
+		for (Port connectedPort : port.getConnectedPorts()) {
+			if (!getComponents().contains(connectedPort.getOwner())) {
+				propagateNewFailures(port, connectedPort);
+			}
+		}
+		port.clearNewFailures();
+	}
+	
+	public void propagateNewFailures(Port source, Port target) {
+		for (Failure failure : source.getNewFailures()) {
+			if (target.addFailure(failure, failure)) {
+				FlaSystem.addUpdatedComponent(target.getOwner());
+			}
+		}
+	}
+	
+	@Override
+	public void initialize(boolean initNoFailure) {
+		super.initialize(initNoFailure);
+		for (Component subComponent : getComponents()) {
+			subComponent.initialize(initNoFailure);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				return ((InternalEList<InternalEObject>)(InternalEList<?>)getComponents()).basicAdd(otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				return ((InternalEList<?>)getComponents()).basicRemove(otherEnd, msgs);
+			case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				return ((InternalEList<?>)getConnections()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				return getComponents();
+			case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				return getConnections();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				getComponents().clear();
+				getComponents().addAll((Collection<? extends Component>)newValue);
+				return;
+			case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				getConnections().clear();
+				getConnections().addAll((Collection<? extends Connection>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				getComponents().clear();
+				return;
+			case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				getConnections().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				return components != null && !components.isEmpty();
+			case FlammPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				return connections != null && !connections.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // CompositeComponent
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Connection.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Connection.java
new file mode 100644
index 0000000..7b3a046
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Connection.java
@@ -0,0 +1,430 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.lang.reflect.InvocationTargetException;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connection</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Connection#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection()
+ * @model kind="class"
+ * @generated
+ */
+public class Connection extends MinimalEObjectImpl.Container implements FlaBehaviour {
+	/**
+	 * The cached value of the '{@link #getFrom() <em>From</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFrom()
+	 * @generated
+	 * @ordered
+	 */
+	protected Port from;
+
+	/**
+	 * The cached value of the '{@link #getTo() <em>To</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTo()
+	 * @generated
+	 * @ordered
+	 */
+	protected Port to;
+
+	/**
+	 * The cached value of the '{@link #getRules() <em>Rules</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRules()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Rule> rules;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Connection() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.CONNECTION;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>From</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>From</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>From</em>' reference.
+	 * @see #setFrom(Port)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection_From()
+	 * @see org.polarsys.chess.fla.flamm.Port#getOutgoingConnections
+	 * @model opposite="outgoingConnections" required="true"
+	 * @generated
+	 */
+	public Port getFrom() {
+		if (from != null && from.eIsProxy()) {
+			InternalEObject oldFrom = (InternalEObject)from;
+			from = (Port)eResolveProxy(oldFrom);
+			if (from != oldFrom) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.CONNECTION__FROM, oldFrom, from));
+			}
+		}
+		return from;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Port basicGetFrom() {
+		return from;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetFrom(Port newFrom, NotificationChain msgs) {
+		Port oldFrom = from;
+		from = newFrom;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__FROM, oldFrom, newFrom);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>From</em>' reference.
+	 * @see #getFrom()
+	 * @generated
+	 */
+	public void setFrom(Port newFrom) {
+		if (newFrom != from) {
+			NotificationChain msgs = null;
+			if (from != null)
+				msgs = ((InternalEObject)from).eInverseRemove(this, FlammPackage.PORT__OUTGOING_CONNECTIONS, Port.class, msgs);
+			if (newFrom != null)
+				msgs = ((InternalEObject)newFrom).eInverseAdd(this, FlammPackage.PORT__OUTGOING_CONNECTIONS, Port.class, msgs);
+			msgs = basicSetFrom(newFrom, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__FROM, newFrom, newFrom));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>To</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>To</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>To</em>' reference.
+	 * @see #setTo(Port)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection_To()
+	 * @see org.polarsys.chess.fla.flamm.Port#getIncomingConnections
+	 * @model opposite="incomingConnections" required="true"
+	 * @generated
+	 */
+	public Port getTo() {
+		if (to != null && to.eIsProxy()) {
+			InternalEObject oldTo = (InternalEObject)to;
+			to = (Port)eResolveProxy(oldTo);
+			if (to != oldTo) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.CONNECTION__TO, oldTo, to));
+			}
+		}
+		return to;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Port basicGetTo() {
+		return to;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetTo(Port newTo, NotificationChain msgs) {
+		Port oldTo = to;
+		to = newTo;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__TO, oldTo, newTo);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>To</em>' reference.
+	 * @see #getTo()
+	 * @generated
+	 */
+	public void setTo(Port newTo) {
+		if (newTo != to) {
+			NotificationChain msgs = null;
+			if (to != null)
+				msgs = ((InternalEObject)to).eInverseRemove(this, FlammPackage.PORT__INCOMING_CONNECTIONS, Port.class, msgs);
+			if (newTo != null)
+				msgs = ((InternalEObject)newTo).eInverseAdd(this, FlammPackage.PORT__INCOMING_CONNECTIONS, Port.class, msgs);
+			msgs = basicSetTo(newTo, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.CONNECTION__TO, newTo, newTo));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Rules</b></em>' reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Rule}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rules</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rules</em>' reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection_Rules()
+	 * @model
+	 * @generated
+	 */
+	public List<Rule> getRules() {
+		if (rules == null) {
+			rules = new EObjectResolvingEList<Rule>(Rule.class, this, FlammPackage.CONNECTION__RULES);
+		}
+		return rules;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	public void propagateFailures() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model initNoFailureRequired="true"
+	 * @generated
+	 */
+	public void initialize(boolean initNoFailure) {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.CONNECTION__FROM:
+				if (from != null)
+					msgs = ((InternalEObject)from).eInverseRemove(this, FlammPackage.PORT__OUTGOING_CONNECTIONS, Port.class, msgs);
+				return basicSetFrom((Port)otherEnd, msgs);
+			case FlammPackage.CONNECTION__TO:
+				if (to != null)
+					msgs = ((InternalEObject)to).eInverseRemove(this, FlammPackage.PORT__INCOMING_CONNECTIONS, Port.class, msgs);
+				return basicSetTo((Port)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.CONNECTION__FROM:
+				return basicSetFrom(null, msgs);
+			case FlammPackage.CONNECTION__TO:
+				return basicSetTo(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.CONNECTION__FROM:
+				if (resolve) return getFrom();
+				return basicGetFrom();
+			case FlammPackage.CONNECTION__TO:
+				if (resolve) return getTo();
+				return basicGetTo();
+			case FlammPackage.CONNECTION__RULES:
+				return getRules();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.CONNECTION__FROM:
+				setFrom((Port)newValue);
+				return;
+			case FlammPackage.CONNECTION__TO:
+				setTo((Port)newValue);
+				return;
+			case FlammPackage.CONNECTION__RULES:
+				getRules().clear();
+				getRules().addAll((Collection<? extends Rule>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.CONNECTION__FROM:
+				setFrom((Port)null);
+				return;
+			case FlammPackage.CONNECTION__TO:
+				setTo((Port)null);
+				return;
+			case FlammPackage.CONNECTION__RULES:
+				getRules().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.CONNECTION__FROM:
+				return from != null;
+			case FlammPackage.CONNECTION__TO:
+				return to != null;
+			case FlammPackage.CONNECTION__RULES:
+				return rules != null && !rules.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case FlammPackage.CONNECTION___PROPAGATE_FAILURES:
+				propagateFailures();
+				return null;
+			case FlammPackage.CONNECTION___INITIALIZE__BOOLEAN:
+				initialize((Boolean)arguments.get(0));
+				return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // Connection
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Expression.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Expression.java
new file mode 100644
index 0000000..9c6c2fc
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Expression.java
@@ -0,0 +1,241 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Expression</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Expression#getPort <em>Port</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Expression#getFailures <em>Failures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression()
+ * @model kind="class"
+ * @generated
+ */
+public class Expression extends MinimalEObjectImpl.Container implements EObject {
+	/**
+	 * The cached value of the '{@link #getPort() <em>Port</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPort()
+	 * @generated
+	 * @ordered
+	 */
+	protected Port port;
+
+	/**
+	 * The cached value of the '{@link #getFailures() <em>Failures</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFailures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Failure> failures;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.EXPRESSION;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Port</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Port</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Port</em>' reference.
+	 * @see #setPort(Port)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression_Port()
+	 * @model required="true"
+	 * @generated
+	 */
+	public Port getPort() {
+		if (port != null && port.eIsProxy()) {
+			InternalEObject oldPort = (InternalEObject)port;
+			port = (Port)eResolveProxy(oldPort);
+			if (port != oldPort) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.EXPRESSION__PORT, oldPort, port));
+			}
+		}
+		return port;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Port basicGetPort() {
+		return port;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Expression#getPort <em>Port</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Port</em>' reference.
+	 * @see #getPort()
+	 * @generated
+	 */
+	public void setPort(Port newPort) {
+		Port oldPort = port;
+		port = newPort;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.EXPRESSION__PORT, oldPort, port));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Failures</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Failures</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Failures</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression_Failures()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public List<Failure> getFailures() {
+		if (failures == null) {
+			failures = new EObjectContainmentEList<Failure>(Failure.class, this, FlammPackage.EXPRESSION__FAILURES);
+		}
+		return failures;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.EXPRESSION__FAILURES:
+				return ((InternalEList<?>)getFailures()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.EXPRESSION__PORT:
+				if (resolve) return getPort();
+				return basicGetPort();
+			case FlammPackage.EXPRESSION__FAILURES:
+				return getFailures();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.EXPRESSION__PORT:
+				setPort((Port)newValue);
+				return;
+			case FlammPackage.EXPRESSION__FAILURES:
+				getFailures().clear();
+				getFailures().addAll((Collection<? extends Failure>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.EXPRESSION__PORT:
+				setPort((Port)null);
+				return;
+			case FlammPackage.EXPRESSION__FAILURES:
+				getFailures().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.EXPRESSION__PORT:
+				return port != null;
+			case FlammPackage.EXPRESSION__FAILURES:
+				return failures != null && !failures.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // Expression
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Failure.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Failure.java
new file mode 100644
index 0000000..9a8ba1c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Failure.java
@@ -0,0 +1,564 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureType;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Failure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Failure#getType <em>Type</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Failure#getId <em>Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable <em>Acid Avoidable</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Failure#getAcidMitigation <em>Acid Mitigation</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Failure#getPreviousFailures <em>Previous Failures</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure()
+ * @model kind="class"
+ * @generated
+ */
+public class Failure extends MinimalEObjectImpl.Container implements EObject {
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final FailureType TYPE_EDEFAULT = FailureType.NO_FAILURE;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected FailureType type = TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	public static Failure createNoFailure() {
+		return new Failure(FailureType.NO_FAILURE, FailureType.NO_FAILURE.getLiteral());
+	}
+	
+	public static Failure createWildcard() {
+		return new Failure(FailureType.WILDCARD, FailureType.WILDCARD.getLiteral());
+	}
+	
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getAcidAvoidable() <em>Acid Avoidable</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAcidAvoidable()
+	 * @generated
+	 * @ordered
+	 */
+	protected ACIDavoidable acidAvoidable;
+
+	/**
+	 * The cached value of the '{@link #getAcidMitigation() <em>Acid Mitigation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAcidMitigation()
+	 * @generated
+	 * @ordered
+	 */
+	protected ACIDmitigation acidMitigation;
+
+	/**
+	 * The cached value of the '{@link #getPreviousFailures() <em>Previous Failures</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPreviousFailures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Failure> previousFailures;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Failure() {
+		super();
+	}
+
+	public Failure(FailureType type, String id) {
+		super();
+		this.type = type;
+		this.id = id;
+	}
+	
+	
+	/**
+	 * Copy-constructor
+	 * @param oldFailure existing Failure to copy
+	 */
+	public Failure(Failure oldFailure) {
+		super();
+		this.type = oldFailure.type;
+		this.id = oldFailure.id;
+	}
+
+	/**
+	 * Copy-constructor
+	 * @param oldFailure existing Failure to copy
+	 */
+	public Failure(Failure oldFailure, Failure previousFailure) {
+		super();
+		this.type = oldFailure.type;
+		this.id = oldFailure.id;
+		this.addPreviousFailure(previousFailure);
+	}
+
+	/**
+	 * Copy-constructor
+	 * @param oldFailure existing Failure to copy
+	 */
+	public Failure(Failure oldFailure, Collection<Failure> previousFailures) {
+		super();
+		this.type = oldFailure.type;
+		this.id = oldFailure.id;
+		this.addPreviousFailures(previousFailures);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.FAILURE;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+	 * @see #setType(FailureType)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_Type()
+	 * @model required="true"
+	 * @generated
+	 */
+	public FailureType getType() {
+		return type;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+	 * @see #getType()
+	 * @generated
+	 */
+	public void setType(FailureType newType) {
+		FailureType oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__TYPE, oldType, type));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_Id()
+	 * @model
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ID, oldId, id));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Acid Avoidable</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Acid Avoidable</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Acid Avoidable</em>' containment reference.
+	 * @see #setAcidAvoidable(ACIDavoidable)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_AcidAvoidable()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public ACIDavoidable getAcidAvoidable() {
+		return acidAvoidable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAcidAvoidable(ACIDavoidable newAcidAvoidable, NotificationChain msgs) {
+		ACIDavoidable oldAcidAvoidable = acidAvoidable;
+		acidAvoidable = newAcidAvoidable;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_AVOIDABLE, oldAcidAvoidable, newAcidAvoidable);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable <em>Acid Avoidable</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Acid Avoidable</em>' containment reference.
+	 * @see #getAcidAvoidable()
+	 * @generated
+	 */
+	public void setAcidAvoidable(ACIDavoidable newAcidAvoidable) {
+		if (newAcidAvoidable != acidAvoidable) {
+			NotificationChain msgs = null;
+			if (acidAvoidable != null)
+				msgs = ((InternalEObject)acidAvoidable).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_AVOIDABLE, null, msgs);
+			if (newAcidAvoidable != null)
+				msgs = ((InternalEObject)newAcidAvoidable).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_AVOIDABLE, null, msgs);
+			msgs = basicSetAcidAvoidable(newAcidAvoidable, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_AVOIDABLE, newAcidAvoidable, newAcidAvoidable));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Acid Mitigation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Acid Mitigation</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Acid Mitigation</em>' containment reference.
+	 * @see #setAcidMitigation(ACIDmitigation)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_AcidMitigation()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public ACIDmitigation getAcidMitigation() {
+		return acidMitigation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetAcidMitigation(ACIDmitigation newAcidMitigation, NotificationChain msgs) {
+		ACIDmitigation oldAcidMitigation = acidMitigation;
+		acidMitigation = newAcidMitigation;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_MITIGATION, oldAcidMitigation, newAcidMitigation);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Failure#getAcidMitigation <em>Acid Mitigation</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Acid Mitigation</em>' containment reference.
+	 * @see #getAcidMitigation()
+	 * @generated
+	 */
+	public void setAcidMitigation(ACIDmitigation newAcidMitigation) {
+		if (newAcidMitigation != acidMitigation) {
+			NotificationChain msgs = null;
+			if (acidMitigation != null)
+				msgs = ((InternalEObject)acidMitigation).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_MITIGATION, null, msgs);
+			if (newAcidMitigation != null)
+				msgs = ((InternalEObject)newAcidMitigation).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlammPackage.FAILURE__ACID_MITIGATION, null, msgs);
+			msgs = basicSetAcidMitigation(newAcidMitigation, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.FAILURE__ACID_MITIGATION, newAcidMitigation, newAcidMitigation));
+	}
+	
+	/**
+	 * Returns the value of the '<em><b>Previous Failures</b></em>' reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Previous Failures</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Previous Failures</em>' reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure_PreviousFailures()
+	 * @model
+	 * @generated
+	 */
+	public List<Failure> getPreviousFailures() {
+		if (previousFailures == null) {
+			previousFailures = new EObjectResolvingEList<Failure>(Failure.class, this, FlammPackage.FAILURE__PREVIOUS_FAILURES);
+		}
+		return previousFailures;
+	}
+	
+	public void addPreviousFailure(Failure previousFailure) {
+		if (!getPreviousFailures().contains(previousFailure)) {
+			getPreviousFailures().add(previousFailure);
+		}
+	}
+
+	public void addPreviousFailures(Collection<Failure> previousFailures) {
+		for (Failure failure : previousFailures) {
+			addPreviousFailure(failure);
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.FAILURE__ACID_AVOIDABLE:
+				return basicSetAcidAvoidable(null, msgs);
+			case FlammPackage.FAILURE__ACID_MITIGATION:
+				return basicSetAcidMitigation(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	public boolean isSameFailure(Failure other) {
+		if (this == other)
+			return true;
+		if (other == null)
+			return false;
+		if (type != other.type)
+			return false;
+		if (id == null)
+			return false;
+		if (!id.equals(other.id))
+			return false;
+		return true;
+	}
+
+	public static boolean doCollectionContainFailure(Collection<Failure> collection, Failure failure) {
+		for (Failure listFailure : collection) {
+			if (listFailure.getId().equals(failure.getId())) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	public static Failure getFailureInCollection(Collection<Failure> collection, Failure failure) {
+		for (Failure listFailure : collection) {
+			if (listFailure.getId().equals(failure.getId())) {
+				return listFailure;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.FAILURE__TYPE:
+				return getType();
+			case FlammPackage.FAILURE__ID:
+				return getId();
+			case FlammPackage.FAILURE__ACID_AVOIDABLE:
+				return getAcidAvoidable();
+			case FlammPackage.FAILURE__ACID_MITIGATION:
+				return getAcidMitigation();
+			case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+				return getPreviousFailures();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.FAILURE__TYPE:
+				setType((FailureType)newValue);
+				return;
+			case FlammPackage.FAILURE__ID:
+				setId((String)newValue);
+				return;
+			case FlammPackage.FAILURE__ACID_AVOIDABLE:
+				setAcidAvoidable((ACIDavoidable)newValue);
+				return;
+			case FlammPackage.FAILURE__ACID_MITIGATION:
+				setAcidMitigation((ACIDmitigation)newValue);
+				return;
+			case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+				getPreviousFailures().clear();
+				getPreviousFailures().addAll((Collection<? extends Failure>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.FAILURE__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+			case FlammPackage.FAILURE__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case FlammPackage.FAILURE__ACID_AVOIDABLE:
+				setAcidAvoidable((ACIDavoidable)null);
+				return;
+			case FlammPackage.FAILURE__ACID_MITIGATION:
+				setAcidMitigation((ACIDmitigation)null);
+				return;
+			case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+				getPreviousFailures().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.FAILURE__TYPE:
+				return type != TYPE_EDEFAULT;
+			case FlammPackage.FAILURE__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+			case FlammPackage.FAILURE__ACID_AVOIDABLE:
+				return acidAvoidable != null;
+			case FlammPackage.FAILURE__ACID_MITIGATION:
+				return acidMitigation != null;
+			case FlammPackage.FAILURE__PREVIOUS_FAILURES:
+				return previousFailures != null && !previousFailures.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (type: ");
+		result.append(type);
+		result.append(", id: ");
+		result.append(id);
+		result.append(')');
+		return result.toString();
+	}
+
+} // Failure
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_avoidable.java
new file mode 100644
index 0000000..cf99324
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Aavoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_avoidable()
+ * @model
+ * @generated
+ */
+public enum A_avoidable implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>Incompletion</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INCOMPLETION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INCOMPLETION(1, "incompletion", "incompletion"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(2, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>Incompletion</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Incompletion</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INCOMPLETION
+	 * @model name="incompletion"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INCOMPLETION_VALUE = 1;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Aavoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final A_avoidable[] VALUES_ARRAY =
+		new A_avoidable[] {
+			UNSPECIFIED,
+			INCOMPLETION,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Aavoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<A_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Aavoidable</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static A_avoidable get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			A_avoidable result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Aavoidable</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static A_avoidable getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			A_avoidable result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Aavoidable</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static A_avoidable get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case INCOMPLETION_VALUE: return INCOMPLETION;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private A_avoidable(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //A_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_mitigation.java
new file mode 100644
index 0000000..cc97b35
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/A_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Amitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_mitigation()
+ * @model
+ * @generated
+ */
+public enum A_mitigation implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>All or nothing</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ALL_OR_NOTHING_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ALL_OR_NOTHING(1, "all_or_nothing", "all_or_nothing"),
+
+	/**
+	 * The '<em><b>All or compensation</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #ALL_OR_COMPENSATION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	ALL_OR_COMPENSATION(2, "all_or_compensation", "all_or_compensation"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(3, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>All or nothing</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>All or nothing</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ALL_OR_NOTHING
+	 * @model name="all_or_nothing"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ALL_OR_NOTHING_VALUE = 1;
+
+	/**
+	 * The '<em><b>All or compensation</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>All or compensation</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #ALL_OR_COMPENSATION
+	 * @model name="all_or_compensation"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ALL_OR_COMPENSATION_VALUE = 2;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Amitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final A_mitigation[] VALUES_ARRAY =
+		new A_mitigation[] {
+			UNSPECIFIED,
+			ALL_OR_NOTHING,
+			ALL_OR_COMPENSATION,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Amitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<A_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Amitigation</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static A_mitigation get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			A_mitigation result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Amitigation</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static A_mitigation getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			A_mitigation result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Amitigation</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static A_mitigation get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case ALL_OR_NOTHING_VALUE: return ALL_OR_NOTHING;
+			case ALL_OR_COMPENSATION_VALUE: return ALL_OR_COMPENSATION;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private A_mitigation(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //A_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_avoidable.java
new file mode 100644
index 0000000..cdef4d0
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cavoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_avoidable()
+ * @model
+ * @generated
+ */
+public enum C_avoidable implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>Inconsistency</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INCONSISTENCY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INCONSISTENCY(1, "inconsistency", "inconsistency"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(2, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>Inconsistency</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Inconsistency</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INCONSISTENCY
+	 * @model name="inconsistency"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INCONSISTENCY_VALUE = 1;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Cavoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final C_avoidable[] VALUES_ARRAY =
+		new C_avoidable[] {
+			UNSPECIFIED,
+			INCONSISTENCY,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Cavoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<C_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Cavoidable</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static C_avoidable get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			C_avoidable result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cavoidable</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static C_avoidable getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			C_avoidable result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cavoidable</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static C_avoidable get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case INCONSISTENCY_VALUE: return INCONSISTENCY;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private C_avoidable(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //C_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_mitigation.java
new file mode 100644
index 0000000..a6b3282
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/C_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Cmitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_mitigation()
+ * @model
+ * @generated
+ */
+public enum C_mitigation implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>Full consistency</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FULL_CONSISTENCY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FULL_CONSISTENCY(1, "full_consistency", "full_consistency"),
+
+	/**
+	 * The '<em><b>Range violation allowed</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #RANGE_VIOLATION_ALLOWED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	RANGE_VIOLATION_ALLOWED(2, "range_violation_allowed", "range_violation_allowed"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(3, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>Full consistency</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Full consistency</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #FULL_CONSISTENCY
+	 * @model name="full_consistency"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FULL_CONSISTENCY_VALUE = 1;
+
+	/**
+	 * The '<em><b>Range violation allowed</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Range violation allowed</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #RANGE_VIOLATION_ALLOWED
+	 * @model name="range_violation_allowed"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RANGE_VIOLATION_ALLOWED_VALUE = 2;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Cmitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final C_mitigation[] VALUES_ARRAY =
+		new C_mitigation[] {
+			UNSPECIFIED,
+			FULL_CONSISTENCY,
+			RANGE_VIOLATION_ALLOWED,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Cmitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<C_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Cmitigation</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static C_mitigation get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			C_mitigation result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cmitigation</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static C_mitigation getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			C_mitigation result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Cmitigation</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static C_mitigation get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case FULL_CONSISTENCY_VALUE: return FULL_CONSISTENCY;
+			case RANGE_VIOLATION_ALLOWED_VALUE: return RANGE_VIOLATION_ALLOWED;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private C_mitigation(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //C_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_avoidable.java
new file mode 100644
index 0000000..796ccce
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Davoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_avoidable()
+ * @model
+ * @generated
+ */
+public enum D_avoidable implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>Impermanence</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #IMPERMANENCE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	IMPERMANENCE(1, "impermanence", "impermanence"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(2, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>Impermanence</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Impermanence</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #IMPERMANENCE
+	 * @model name="impermanence"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int IMPERMANENCE_VALUE = 1;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Davoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final D_avoidable[] VALUES_ARRAY =
+		new D_avoidable[] {
+			UNSPECIFIED,
+			IMPERMANENCE,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Davoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<D_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Davoidable</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static D_avoidable get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			D_avoidable result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Davoidable</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static D_avoidable getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			D_avoidable result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Davoidable</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static D_avoidable get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case IMPERMANENCE_VALUE: return IMPERMANENCE;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private D_avoidable(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //D_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_mitigation.java
new file mode 100644
index 0000000..5e155cc
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/D_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Dmitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_mitigation()
+ * @model
+ * @generated
+ */
+public enum D_mitigation implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>No loss</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NO_LOSS_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NO_LOSS(1, "no_loss", "no_loss"),
+
+	/**
+	 * The '<em><b>Partial loss allowed</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PARTIAL_LOSS_ALLOWED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PARTIAL_LOSS_ALLOWED(2, "partial_loss_allowed", "partial_loss_allowed"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(3, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>No loss</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>No loss</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NO_LOSS
+	 * @model name="no_loss"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NO_LOSS_VALUE = 1;
+
+	/**
+	 * The '<em><b>Partial loss allowed</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Partial loss allowed</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PARTIAL_LOSS_ALLOWED
+	 * @model name="partial_loss_allowed"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PARTIAL_LOSS_ALLOWED_VALUE = 2;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Dmitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final D_mitigation[] VALUES_ARRAY =
+		new D_mitigation[] {
+			UNSPECIFIED,
+			NO_LOSS,
+			PARTIAL_LOSS_ALLOWED,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Dmitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<D_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Dmitigation</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static D_mitigation get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			D_mitigation result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Dmitigation</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static D_mitigation getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			D_mitigation result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Dmitigation</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static D_mitigation get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case NO_LOSS_VALUE: return NO_LOSS;
+			case PARTIAL_LOSS_ALLOWED_VALUE: return PARTIAL_LOSS_ALLOWED;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private D_mitigation(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //D_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureType.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureType.java
new file mode 100644
index 0000000..285cc09
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureType.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Failure Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getFailureType()
+ * @model
+ * @generated
+ */
+public enum FailureType implements Enumerator {
+	/**
+	 * The '<em><b>No Failure</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NO_FAILURE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NO_FAILURE(0, "noFailure", "noFailure"),
+
+	/**
+	 * The '<em><b>Failure</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FAILURE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FAILURE(1, "failure", "failure"),
+
+	/**
+	 * The '<em><b>Variable</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #VARIABLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	VARIABLE(2, "variable", "variable"),
+
+	/**
+	 * The '<em><b>Wildcard</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #WILDCARD_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	WILDCARD(3, "wildcard", "wildcard");
+
+	/**
+	 * The '<em><b>No Failure</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>No Failure</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NO_FAILURE
+	 * @model name="noFailure"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NO_FAILURE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Failure</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Failure</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #FAILURE
+	 * @model name="failure"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE_VALUE = 1;
+
+	/**
+	 * The '<em><b>Variable</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Variable</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #VARIABLE
+	 * @model name="variable"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int VARIABLE_VALUE = 2;
+
+	/**
+	 * The '<em><b>Wildcard</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Wildcard</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #WILDCARD
+	 * @model name="wildcard"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int WILDCARD_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Failure Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final FailureType[] VALUES_ARRAY =
+		new FailureType[] {
+			NO_FAILURE,
+			FAILURE,
+			VARIABLE,
+			WILDCARD,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Failure Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<FailureType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Failure Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FailureType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FailureType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Failure Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FailureType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FailureType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Failure Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FailureType get(int value) {
+		switch (value) {
+			case NO_FAILURE_VALUE: return NO_FAILURE;
+			case FAILURE_VALUE: return FAILURE;
+			case VARIABLE_VALUE: return VARIABLE;
+			case WILDCARD_VALUE: return WILDCARD;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private FailureType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //FailureType
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesFactory.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesFactory.java
new file mode 100644
index 0000000..1f3f303
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesFactory.java
@@ -0,0 +1,345 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage
+ * @generated
+ */
+public class FailureTypesFactory extends EFactoryImpl {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final FailureTypesFactory eINSTANCE = init();
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FailureTypesFactory init() {
+		try {
+			FailureTypesFactory theFailureTypesFactory = (FailureTypesFactory)EPackage.Registry.INSTANCE.getEFactory(FailureTypesPackage.eNS_URI);
+			if (theFailureTypesFactory != null) {
+				return theFailureTypesFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new FailureTypesFactory();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FailureTypesFactory() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case FailureTypesPackage.FAILURE_TYPE:
+				return createFailureTypeFromString(eDataType, initialValue);
+			case FailureTypesPackage.AAVOIDABLE:
+				return createA_avoidableFromString(eDataType, initialValue);
+			case FailureTypesPackage.CAVOIDABLE:
+				return createC_avoidableFromString(eDataType, initialValue);
+			case FailureTypesPackage.IAVOIDABLE:
+				return createI_avoidableFromString(eDataType, initialValue);
+			case FailureTypesPackage.DAVOIDABLE:
+				return createD_avoidableFromString(eDataType, initialValue);
+			case FailureTypesPackage.AMITIGATION:
+				return createA_mitigationFromString(eDataType, initialValue);
+			case FailureTypesPackage.CMITIGATION:
+				return createC_mitigationFromString(eDataType, initialValue);
+			case FailureTypesPackage.IMITIGATION:
+				return createI_mitigationFromString(eDataType, initialValue);
+			case FailureTypesPackage.DMITIGATION:
+				return createD_mitigationFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case FailureTypesPackage.FAILURE_TYPE:
+				return convertFailureTypeToString(eDataType, instanceValue);
+			case FailureTypesPackage.AAVOIDABLE:
+				return convertA_avoidableToString(eDataType, instanceValue);
+			case FailureTypesPackage.CAVOIDABLE:
+				return convertC_avoidableToString(eDataType, instanceValue);
+			case FailureTypesPackage.IAVOIDABLE:
+				return convertI_avoidableToString(eDataType, instanceValue);
+			case FailureTypesPackage.DAVOIDABLE:
+				return convertD_avoidableToString(eDataType, instanceValue);
+			case FailureTypesPackage.AMITIGATION:
+				return convertA_mitigationToString(eDataType, instanceValue);
+			case FailureTypesPackage.CMITIGATION:
+				return convertC_mitigationToString(eDataType, instanceValue);
+			case FailureTypesPackage.IMITIGATION:
+				return convertI_mitigationToString(eDataType, instanceValue);
+			case FailureTypesPackage.DMITIGATION:
+				return convertD_mitigationToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FailureType createFailureTypeFromString(EDataType eDataType, String initialValue) {
+		FailureType result = FailureType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertFailureTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public A_avoidable createA_avoidableFromString(EDataType eDataType, String initialValue) {
+		A_avoidable result = A_avoidable.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertA_avoidableToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public C_avoidable createC_avoidableFromString(EDataType eDataType, String initialValue) {
+		C_avoidable result = C_avoidable.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertC_avoidableToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public I_avoidable createI_avoidableFromString(EDataType eDataType, String initialValue) {
+		I_avoidable result = I_avoidable.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertI_avoidableToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public D_avoidable createD_avoidableFromString(EDataType eDataType, String initialValue) {
+		D_avoidable result = D_avoidable.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertD_avoidableToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public A_mitigation createA_mitigationFromString(EDataType eDataType, String initialValue) {
+		A_mitigation result = A_mitigation.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertA_mitigationToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public C_mitigation createC_mitigationFromString(EDataType eDataType, String initialValue) {
+		C_mitigation result = C_mitigation.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertC_mitigationToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public I_mitigation createI_mitigationFromString(EDataType eDataType, String initialValue) {
+		I_mitigation result = I_mitigation.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertI_mitigationToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public D_mitigation createD_mitigationFromString(EDataType eDataType, String initialValue) {
+		D_mitigation result = D_mitigation.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertD_mitigationToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FailureTypesPackage getFailureTypesPackage() {
+		return (FailureTypesPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static FailureTypesPackage getPackage() {
+		return FailureTypesPackage.eINSTANCE;
+	}
+
+} //FailureTypesFactory
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesPackage.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesPackage.java
new file mode 100644
index 0000000..d4fe1a6
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/FailureTypesPackage.java
@@ -0,0 +1,619 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesFactory
+ * @model kind="package"
+ * @generated
+ */
+public class FailureTypesPackage extends EPackageImpl {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String eNAME = "FailureTypes";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String eNS_URI = "http://polarsys.org/chess/fla/flamm/FailureTypes";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String eNS_PREFIX = "FailureTypes";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final FailureTypesPackage eINSTANCE = org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage.init();
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType <em>Failure Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getFailureType()
+	 * @generated
+	 */
+	public static final int FAILURE_TYPE = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable <em>Aavoidable</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_avoidable()
+	 * @generated
+	 */
+	public static final int AAVOIDABLE = 1;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable <em>Cavoidable</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_avoidable()
+	 * @generated
+	 */
+	public static final int CAVOIDABLE = 2;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable <em>Iavoidable</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_avoidable()
+	 * @generated
+	 */
+	public static final int IAVOIDABLE = 3;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable <em>Davoidable</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_avoidable()
+	 * @generated
+	 */
+	public static final int DAVOIDABLE = 4;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation <em>Amitigation</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_mitigation()
+	 * @generated
+	 */
+	public static final int AMITIGATION = 5;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation <em>Cmitigation</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_mitigation()
+	 * @generated
+	 */
+	public static final int CMITIGATION = 6;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation <em>Imitigation</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_mitigation()
+	 * @generated
+	 */
+	public static final int IMITIGATION = 7;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation <em>Dmitigation</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_mitigation()
+	 * @generated
+	 */
+	public static final int DMITIGATION = 8;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum failureTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum a_avoidableEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum c_avoidableEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum i_avoidableEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum d_avoidableEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum a_mitigationEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum c_mitigationEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum i_mitigationEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum d_mitigationEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private FailureTypesPackage() {
+		super(eNS_URI, FailureTypesFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link FailureTypesPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static FailureTypesPackage init() {
+		if (isInited) return (FailureTypesPackage)EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI);
+
+		// Obtain or create and register package
+		FailureTypesPackage theFailureTypesPackage = (FailureTypesPackage)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FailureTypesPackage ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FailureTypesPackage());
+
+		isInited = true;
+
+		// Obtain or create and register interdependencies
+		FlammPackage theFlammPackage = (FlammPackage)(EPackage.Registry.INSTANCE.getEPackage(FlammPackage.eNS_URI) instanceof FlammPackage ? EPackage.Registry.INSTANCE.getEPackage(FlammPackage.eNS_URI) : FlammPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theFailureTypesPackage.createPackageContents();
+		theFlammPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theFailureTypesPackage.initializePackageContents();
+		theFlammPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theFailureTypesPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(FailureTypesPackage.eNS_URI, theFailureTypesPackage);
+		return theFailureTypesPackage;
+	}
+
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType <em>Failure Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Failure Type</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+	 * @generated
+	 */
+	public EEnum getFailureType() {
+		return failureTypeEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable <em>Aavoidable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Aavoidable</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+	 * @generated
+	 */
+	public EEnum getA_avoidable() {
+		return a_avoidableEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable <em>Cavoidable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Cavoidable</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+	 * @generated
+	 */
+	public EEnum getC_avoidable() {
+		return c_avoidableEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable <em>Iavoidable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Iavoidable</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+	 * @generated
+	 */
+	public EEnum getI_avoidable() {
+		return i_avoidableEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable <em>Davoidable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Davoidable</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+	 * @generated
+	 */
+	public EEnum getD_avoidable() {
+		return d_avoidableEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation <em>Amitigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Amitigation</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+	 * @generated
+	 */
+	public EEnum getA_mitigation() {
+		return a_mitigationEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation <em>Cmitigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Cmitigation</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+	 * @generated
+	 */
+	public EEnum getC_mitigation() {
+		return c_mitigationEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation <em>Imitigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Imitigation</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+	 * @generated
+	 */
+	public EEnum getI_mitigation() {
+		return i_mitigationEEnum;
+	}
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation <em>Dmitigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Dmitigation</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+	 * @generated
+	 */
+	public EEnum getD_mitigation() {
+		return d_mitigationEEnum;
+	}
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	public FailureTypesFactory getFailureTypesFactory() {
+		return (FailureTypesFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create enums
+		failureTypeEEnum = createEEnum(FAILURE_TYPE);
+		a_avoidableEEnum = createEEnum(AAVOIDABLE);
+		c_avoidableEEnum = createEEnum(CAVOIDABLE);
+		i_avoidableEEnum = createEEnum(IAVOIDABLE);
+		d_avoidableEEnum = createEEnum(DAVOIDABLE);
+		a_mitigationEEnum = createEEnum(AMITIGATION);
+		c_mitigationEEnum = createEEnum(CMITIGATION);
+		i_mitigationEEnum = createEEnum(IMITIGATION);
+		d_mitigationEEnum = createEEnum(DMITIGATION);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Initialize enums and add enum literals
+		initEEnum(failureTypeEEnum, FailureType.class, "FailureType");
+		addEEnumLiteral(failureTypeEEnum, FailureType.NO_FAILURE);
+		addEEnumLiteral(failureTypeEEnum, FailureType.FAILURE);
+		addEEnumLiteral(failureTypeEEnum, FailureType.VARIABLE);
+		addEEnumLiteral(failureTypeEEnum, FailureType.WILDCARD);
+
+		initEEnum(a_avoidableEEnum, A_avoidable.class, "A_avoidable");
+		addEEnumLiteral(a_avoidableEEnum, A_avoidable.UNSPECIFIED);
+		addEEnumLiteral(a_avoidableEEnum, A_avoidable.INCOMPLETION);
+		addEEnumLiteral(a_avoidableEEnum, A_avoidable.NONE);
+
+		initEEnum(c_avoidableEEnum, C_avoidable.class, "C_avoidable");
+		addEEnumLiteral(c_avoidableEEnum, C_avoidable.UNSPECIFIED);
+		addEEnumLiteral(c_avoidableEEnum, C_avoidable.INCONSISTENCY);
+		addEEnumLiteral(c_avoidableEEnum, C_avoidable.NONE);
+
+		initEEnum(i_avoidableEEnum, I_avoidable.class, "I_avoidable");
+		addEEnumLiteral(i_avoidableEEnum, I_avoidable.UNSPECIFIED);
+		addEEnumLiteral(i_avoidableEEnum, I_avoidable.INTERFERENCE);
+		addEEnumLiteral(i_avoidableEEnum, I_avoidable.NONE);
+
+		initEEnum(d_avoidableEEnum, D_avoidable.class, "D_avoidable");
+		addEEnumLiteral(d_avoidableEEnum, D_avoidable.UNSPECIFIED);
+		addEEnumLiteral(d_avoidableEEnum, D_avoidable.IMPERMANENCE);
+		addEEnumLiteral(d_avoidableEEnum, D_avoidable.NONE);
+
+		initEEnum(a_mitigationEEnum, A_mitigation.class, "A_mitigation");
+		addEEnumLiteral(a_mitigationEEnum, A_mitigation.UNSPECIFIED);
+		addEEnumLiteral(a_mitigationEEnum, A_mitigation.ALL_OR_NOTHING);
+		addEEnumLiteral(a_mitigationEEnum, A_mitigation.ALL_OR_COMPENSATION);
+		addEEnumLiteral(a_mitigationEEnum, A_mitigation.NONE);
+
+		initEEnum(c_mitigationEEnum, C_mitigation.class, "C_mitigation");
+		addEEnumLiteral(c_mitigationEEnum, C_mitigation.UNSPECIFIED);
+		addEEnumLiteral(c_mitigationEEnum, C_mitigation.FULL_CONSISTENCY);
+		addEEnumLiteral(c_mitigationEEnum, C_mitigation.RANGE_VIOLATION_ALLOWED);
+		addEEnumLiteral(c_mitigationEEnum, C_mitigation.NONE);
+
+		initEEnum(i_mitigationEEnum, I_mitigation.class, "I_mitigation");
+		addEEnumLiteral(i_mitigationEEnum, I_mitigation.UNSPECIFIED);
+		addEEnumLiteral(i_mitigationEEnum, I_mitigation.PORTABLE_LEVEL);
+		addEEnumLiteral(i_mitigationEEnum, I_mitigation.SERIALIZABLE);
+		addEEnumLiteral(i_mitigationEEnum, I_mitigation.NONE);
+
+		initEEnum(d_mitigationEEnum, D_mitigation.class, "D_mitigation");
+		addEEnumLiteral(d_mitigationEEnum, D_mitigation.UNSPECIFIED);
+		addEEnumLiteral(d_mitigationEEnum, D_mitigation.NO_LOSS);
+		addEEnumLiteral(d_mitigationEEnum, D_mitigation.PARTIAL_LOSS_ALLOWED);
+		addEEnumLiteral(d_mitigationEEnum, D_mitigation.NONE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.FailureType <em>Failure Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureType
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getFailureType()
+		 * @generated
+		 */
+		public static final EEnum FAILURE_TYPE = eINSTANCE.getFailureType();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable <em>Aavoidable</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_avoidable
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_avoidable()
+		 * @generated
+		 */
+		public static final EEnum AAVOIDABLE = eINSTANCE.getA_avoidable();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable <em>Cavoidable</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_avoidable
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_avoidable()
+		 * @generated
+		 */
+		public static final EEnum CAVOIDABLE = eINSTANCE.getC_avoidable();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable <em>Iavoidable</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_avoidable
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_avoidable()
+		 * @generated
+		 */
+		public static final EEnum IAVOIDABLE = eINSTANCE.getI_avoidable();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable <em>Davoidable</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_avoidable
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_avoidable()
+		 * @generated
+		 */
+		public static final EEnum DAVOIDABLE = eINSTANCE.getD_avoidable();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation <em>Amitigation</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.A_mitigation
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getA_mitigation()
+		 * @generated
+		 */
+		public static final EEnum AMITIGATION = eINSTANCE.getA_mitigation();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation <em>Cmitigation</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.C_mitigation
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getC_mitigation()
+		 * @generated
+		 */
+		public static final EEnum CMITIGATION = eINSTANCE.getC_mitigation();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation <em>Imitigation</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.I_mitigation
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_mitigation()
+		 * @generated
+		 */
+		public static final EEnum IMITIGATION = eINSTANCE.getI_mitigation();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation <em>Dmitigation</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.D_mitigation
+		 * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getD_mitigation()
+		 * @generated
+		 */
+		public static final EEnum DMITIGATION = eINSTANCE.getD_mitigation();
+
+	}
+
+} //FailureTypesPackage
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_avoidable.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_avoidable.java
new file mode 100644
index 0000000..038a6ae
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_avoidable.java
@@ -0,0 +1,245 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Iavoidable</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_avoidable()
+ * @model
+ * @generated
+ */
+public enum I_avoidable implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>Interference</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INTERFERENCE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INTERFERENCE(1, "interference", "interference"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(2, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>Interference</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Interference</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #INTERFERENCE
+	 * @model name="interference"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INTERFERENCE_VALUE = 1;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 2;
+
+	/**
+	 * An array of all the '<em><b>Iavoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final I_avoidable[] VALUES_ARRAY =
+		new I_avoidable[] {
+			UNSPECIFIED,
+			INTERFERENCE,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Iavoidable</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<I_avoidable> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Iavoidable</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static I_avoidable get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			I_avoidable result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Iavoidable</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static I_avoidable getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			I_avoidable result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Iavoidable</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static I_avoidable get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case INTERFERENCE_VALUE: return INTERFERENCE;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private I_avoidable(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //I_avoidable
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_mitigation.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_mitigation.java
new file mode 100644
index 0000000..4bd6b3e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FailureTypes/I_mitigation.java
@@ -0,0 +1,272 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.FailureTypes;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Imitigation</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage#getI_mitigation()
+ * @model
+ * @generated
+ */
+public enum I_mitigation implements Enumerator {
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UNSPECIFIED(0, "unspecified", "unspecified"),
+
+	/**
+	 * The '<em><b>Portable level</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #PORTABLE_LEVEL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	PORTABLE_LEVEL(1, "portable_level", "portable_level"),
+
+	/**
+	 * The '<em><b>Serializable</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SERIALIZABLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SERIALIZABLE(2, "serializable", "serializable"),
+
+	/**
+	 * The '<em><b>None</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NONE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NONE(3, "none", "none");
+
+	/**
+	 * The '<em><b>Unspecified</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Unspecified</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #UNSPECIFIED
+	 * @model name="unspecified"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UNSPECIFIED_VALUE = 0;
+
+	/**
+	 * The '<em><b>Portable level</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Portable level</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #PORTABLE_LEVEL
+	 * @model name="portable_level"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORTABLE_LEVEL_VALUE = 1;
+
+	/**
+	 * The '<em><b>Serializable</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Serializable</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #SERIALIZABLE
+	 * @model name="serializable"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SERIALIZABLE_VALUE = 2;
+
+	/**
+	 * The '<em><b>None</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>None</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NONE
+	 * @model name="none"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NONE_VALUE = 3;
+
+	/**
+	 * An array of all the '<em><b>Imitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final I_mitigation[] VALUES_ARRAY =
+		new I_mitigation[] {
+			UNSPECIFIED,
+			PORTABLE_LEVEL,
+			SERIALIZABLE,
+			NONE,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Imitigation</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<I_mitigation> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Imitigation</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static I_mitigation get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			I_mitigation result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Imitigation</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static I_mitigation getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			I_mitigation result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Imitigation</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static I_mitigation get(int value) {
+		switch (value) {
+			case UNSPECIFIED_VALUE: return UNSPECIFIED;
+			case PORTABLE_LEVEL_VALUE: return PORTABLE_LEVEL;
+			case SERIALIZABLE_VALUE: return SERIALIZABLE;
+			case NONE_VALUE: return NONE;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private I_mitigation(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //I_mitigation
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlaBehaviour.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlaBehaviour.java
new file mode 100644
index 0000000..05ac37b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlaBehaviour.java
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fla Behaviour</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getFlaBehaviour()
+ * @model kind="class" interface="true" abstract="true"
+ * @generated
+ */
+public interface FlaBehaviour extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	void propagateFailures();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model initNoFailureRequired="true"
+	 * @generated
+	 */
+	void initialize(boolean initNoFailure);
+
+} // FlaBehaviour
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammFactory.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammFactory.java
new file mode 100644
index 0000000..d4e7085
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammFactory.java
@@ -0,0 +1,210 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammPackage
+ * @generated
+ */
+public class FlammFactory extends EFactoryImpl {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final FlammFactory eINSTANCE = init();
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FlammFactory init() {
+		try {
+			FlammFactory theFlammFactory = (FlammFactory)EPackage.Registry.INSTANCE.getEFactory(FlammPackage.eNS_URI);
+			if (theFlammFactory != null) {
+				return theFlammFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new FlammFactory();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlammFactory() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case FlammPackage.NAMED_ELEMENT: return createNamedElement();
+			case FlammPackage.COMPOSITE_COMPONENT: return createCompositeComponent();
+			case FlammPackage.SIMPLE_COMPONENT: return createSimpleComponent();
+			case FlammPackage.PORT: return createPort();
+			case FlammPackage.CONNECTION: return createConnection();
+			case FlammPackage.RULE: return createRule();
+			case FlammPackage.EXPRESSION: return createExpression();
+			case FlammPackage.FAILURE: return createFailure();
+			case FlammPackage.ACI_DAVOIDABLE: return createACIDavoidable();
+			case FlammPackage.ACI_DMITIGATION: return createACIDmitigation();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeComponent createCompositeComponent() {
+		CompositeComponent compositeComponent = new CompositeComponent();
+		return compositeComponent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NamedElement createNamedElement() {
+		NamedElement namedElement = new NamedElement();
+		return namedElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Port createPort() {
+		Port port = new Port();
+		return port;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Connection createConnection() {
+		Connection connection = new Connection();
+		return connection;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Rule createRule() {
+		Rule rule = new Rule();
+		return rule;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SimpleComponent createSimpleComponent() {
+		SimpleComponent simpleComponent = new SimpleComponent();
+		return simpleComponent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Expression createExpression() {
+		Expression expression = new Expression();
+		return expression;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Failure createFailure() {
+		Failure failure = new Failure();
+		return failure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ACIDavoidable createACIDavoidable() {
+		ACIDavoidable aciDavoidable = new ACIDavoidable();
+		return aciDavoidable;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ACIDmitigation createACIDmitigation() {
+		ACIDmitigation aciDmitigation = new ACIDmitigation();
+		return aciDmitigation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlammPackage getFlammPackage() {
+		return (FlammPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static FlammPackage getPackage() {
+		return FlammPackage.eINSTANCE;
+	}
+
+} //FlammFactory
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammPackage.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammPackage.java
new file mode 100644
index 0000000..e98bd16
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/FlammPackage.java
@@ -0,0 +1,2422 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EOperation;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureTypesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammFactory
+ * @model kind="package"
+ * @generated
+ */
+public class FlammPackage extends EPackageImpl {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String eNAME = "flamm";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String eNS_URI = "http://www.polarsys.org/chess/fla/flamm";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String eNS_PREFIX = "flamm";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final FlammPackage eINSTANCE = org.polarsys.chess.fla.flamm.FlammPackage.init();
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.NamedElement
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement()
+	 * @generated
+	 */
+	public static final int NAMED_ELEMENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NAMED_ELEMENT__ID = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NAMED_ELEMENT__NAME = 1;
+
+	/**
+	 * The number of structural features of the '<em>Named Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NAMED_ELEMENT_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Named Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NAMED_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFlaBehaviour()
+	 * @generated
+	 */
+	public static final int FLA_BEHAVIOUR = 1;
+
+	/**
+	 * The number of structural features of the '<em>Fla Behaviour</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLA_BEHAVIOUR_FEATURE_COUNT = 0;
+
+	/**
+	 * The operation id for the '<em>Propagate Failures</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLA_BEHAVIOUR___PROPAGATE_FAILURES = 0;
+
+	/**
+	 * The operation id for the '<em>Initialize</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLA_BEHAVIOUR___INITIALIZE__BOOLEAN = 1;
+
+	/**
+	 * The number of operations of the '<em>Fla Behaviour</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLA_BEHAVIOUR_OPERATION_COUNT = 2;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.Component
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent()
+	 * @generated
+	 */
+	public static final int COMPONENT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT__ID = NAMED_ELEMENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT__INPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Output Ports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT__OUTPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT__PARENT = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Propagate Failures</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT___PROPAGATE_FAILURES = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Initialize</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT___INITIALIZE__BOOLEAN = NAMED_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPONENT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 2;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.CompositeComponent
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent()
+	 * @generated
+	 */
+	public static final int COMPOSITE_COMPONENT = 3;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT__ID = COMPONENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT__NAME = COMPONENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Output Ports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT__PARENT = COMPONENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Components</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT__COMPONENTS = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Connections</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT__CONNECTIONS = COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Composite Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The operation id for the '<em>Propagate Failures</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT___PROPAGATE_FAILURES = COMPONENT___PROPAGATE_FAILURES;
+
+	/**
+	 * The operation id for the '<em>Initialize</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT___INITIALIZE__BOOLEAN = COMPONENT___INITIALIZE__BOOLEAN;
+
+	/**
+	 * The number of operations of the '<em>Composite Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMPOSITE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.Port
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort()
+	 * @generated
+	 */
+	public static final int PORT = 5;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.Connection
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection()
+	 * @generated
+	 */
+	public static final int CONNECTION = 6;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.Rule
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule()
+	 * @generated
+	 */
+	public static final int RULE = 7;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.SimpleComponent
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getSimpleComponent()
+	 * @generated
+	 */
+	public static final int SIMPLE_COMPONENT = 4;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT__ID = COMPONENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT__NAME = COMPONENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Output Ports</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Parent</b></em>' container reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT__PARENT = COMPONENT__PARENT;
+
+	/**
+	 * The feature id for the '<em><b>Rules</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT__RULES = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Simple Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The operation id for the '<em>Propagate Failures</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT___PROPAGATE_FAILURES = COMPONENT___PROPAGATE_FAILURES;
+
+	/**
+	 * The operation id for the '<em>Initialize</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT___INITIALIZE__BOOLEAN = COMPONENT___INITIALIZE__BOOLEAN;
+
+	/**
+	 * The number of operations of the '<em>Simple Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SIMPLE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__ID = NAMED_ELEMENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Connected Ports</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__CONNECTED_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Failures</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__FAILURES = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>New Failures</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__NEW_FAILURES = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__OWNER = NAMED_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Incoming Connections</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__INCOMING_CONNECTIONS = NAMED_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Outgoing Connections</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT__OUTGOING_CONNECTIONS = NAMED_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 6;
+
+	/**
+	 * The operation id for the '<em>Propagate Failures</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT___PROPAGATE_FAILURES = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The operation id for the '<em>Initialize</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT___INITIALIZE = NAMED_ELEMENT_OPERATION_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int PORT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>From</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONNECTION__FROM = FLA_BEHAVIOUR_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>To</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONNECTION__TO = FLA_BEHAVIOUR_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Rules</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONNECTION__RULES = FLA_BEHAVIOUR_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Connection</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONNECTION_FEATURE_COUNT = FLA_BEHAVIOUR_FEATURE_COUNT + 3;
+
+	/**
+	 * The operation id for the '<em>Propagate Failures</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONNECTION___PROPAGATE_FAILURES = FLA_BEHAVIOUR___PROPAGATE_FAILURES;
+
+	/**
+	 * The operation id for the '<em>Initialize</em>' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONNECTION___INITIALIZE__BOOLEAN = FLA_BEHAVIOUR___INITIALIZE__BOOLEAN;
+
+	/**
+	 * The number of operations of the '<em>Connection</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CONNECTION_OPERATION_COUNT = FLA_BEHAVIOUR_OPERATION_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Input Expression</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RULE__INPUT_EXPRESSION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Output Expression</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RULE__OUTPUT_EXPRESSION = 1;
+
+	/**
+	 * The feature id for the '<em><b>Specificity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RULE__SPECIFICITY = 2;
+
+	/**
+	 * The number of structural features of the '<em>Rule</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RULE_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Rule</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int RULE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.Expression
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression()
+	 * @generated
+	 */
+	public static final int EXPRESSION = 8;
+
+	/**
+	 * The feature id for the '<em><b>Port</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EXPRESSION__PORT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Failures</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EXPRESSION__FAILURES = 1;
+
+	/**
+	 * The number of structural features of the '<em>Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EXPRESSION_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Expression</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EXPRESSION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.Failure
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure()
+	 * @generated
+	 */
+	public static final int FAILURE = 9;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE__TYPE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE__ID = 1;
+
+	/**
+	 * The feature id for the '<em><b>Acid Avoidable</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE__ACID_AVOIDABLE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Acid Mitigation</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE__ACID_MITIGATION = 3;
+
+	/**
+	 * The feature id for the '<em><b>Previous Failures</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE__PREVIOUS_FAILURES = 4;
+
+	/**
+	 * The number of structural features of the '<em>Failure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Failure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FAILURE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable()
+	 * @generated
+	 */
+	public static final int ACI_DAVOIDABLE = 10;
+
+	/**
+	 * The feature id for the '<em><b>A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DAVOIDABLE__A = 0;
+
+	/**
+	 * The feature id for the '<em><b>C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DAVOIDABLE__C = 1;
+
+	/**
+	 * The feature id for the '<em><b>I</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DAVOIDABLE__I = 2;
+
+	/**
+	 * The feature id for the '<em><b>D</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DAVOIDABLE__D = 3;
+
+	/**
+	 * The number of structural features of the '<em>ACI Davoidable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DAVOIDABLE_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>ACI Davoidable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DAVOIDABLE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation()
+	 * @generated
+	 */
+	public static final int ACI_DMITIGATION = 11;
+
+	/**
+	 * The feature id for the '<em><b>A</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DMITIGATION__A = 0;
+
+	/**
+	 * The feature id for the '<em><b>C</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DMITIGATION__C = 1;
+
+	/**
+	 * The feature id for the '<em><b>I</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DMITIGATION__I = 2;
+
+	/**
+	 * The feature id for the '<em><b>D</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DMITIGATION__D = 3;
+
+	/**
+	 * The number of structural features of the '<em>ACI Dmitigation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DMITIGATION_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>ACI Dmitigation</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	public static final int ACI_DMITIGATION_OPERATION_COUNT = 0;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass componentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass compositeComponentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass namedElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass flaBehaviourEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass portEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass connectionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass ruleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass simpleComponentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass expressionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass failureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass aciDavoidableEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass aciDmitigationEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private FlammPackage() {
+		super(eNS_URI, FlammFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link FlammPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static FlammPackage init() {
+		if (isInited) return (FlammPackage)EPackage.Registry.INSTANCE.getEPackage(FlammPackage.eNS_URI);
+
+		// Obtain or create and register package
+		FlammPackage theFlammPackage = (FlammPackage)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FlammPackage ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FlammPackage());
+
+		isInited = true;
+
+		// Obtain or create and register interdependencies
+		FailureTypesPackage theFailureTypesPackage = (FailureTypesPackage)(EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI) instanceof FailureTypesPackage ? EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI) : FailureTypesPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theFlammPackage.createPackageContents();
+		theFailureTypesPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theFlammPackage.initializePackageContents();
+		theFailureTypesPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theFlammPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(FlammPackage.eNS_URI, theFlammPackage);
+		return theFlammPackage;
+	}
+
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Component</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Component
+	 * @generated
+	 */
+	public EClass getComponent() {
+		return componentEClass;
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Component#getInputPorts <em>Input Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Input Ports</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Component#getInputPorts()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	public EReference getComponent_InputPorts() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Component#getOutputPorts <em>Output Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Output Ports</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Component#getOutputPorts()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	public EReference getComponent_OutputPorts() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for the container reference '{@link org.polarsys.chess.fla.flamm.Component#getParent <em>Parent</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the container reference '<em>Parent</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Component#getParent()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	public EReference getComponent_Parent() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Composite Component</em>'.
+	 * @see org.polarsys.chess.fla.flamm.CompositeComponent
+	 * @generated
+	 */
+	public EClass getCompositeComponent() {
+		return compositeComponentEClass;
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.CompositeComponent#getComponents <em>Components</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Components</em>'.
+	 * @see org.polarsys.chess.fla.flamm.CompositeComponent#getComponents()
+	 * @see #getCompositeComponent()
+	 * @generated
+	 */
+	public EReference getCompositeComponent_Components() {
+		return (EReference)compositeComponentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.CompositeComponent#getConnections <em>Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Connections</em>'.
+	 * @see org.polarsys.chess.fla.flamm.CompositeComponent#getConnections()
+	 * @see #getCompositeComponent()
+	 * @generated
+	 */
+	public EReference getCompositeComponent_Connections() {
+		return (EReference)compositeComponentEClass.getEStructuralFeatures().get(1);
+	}
+
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Named Element</em>'.
+	 * @see org.polarsys.chess.fla.flamm.NamedElement
+	 * @generated
+	 */
+	public EClass getNamedElement() {
+		return namedElementEClass;
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.NamedElement#getId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.polarsys.chess.fla.flamm.NamedElement#getId()
+	 * @see #getNamedElement()
+	 * @generated
+	 */
+	public EAttribute getNamedElement_Id() {
+		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.NamedElement#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.polarsys.chess.fla.flamm.NamedElement#getName()
+	 * @see #getNamedElement()
+	 * @generated
+	 */
+	public EAttribute getNamedElement_Name() {
+		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fla Behaviour</em>'.
+	 * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+	 * @generated
+	 */
+	public EClass getFlaBehaviour() {
+		return flaBehaviourEClass;
+	}
+
+
+	/**
+	 * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour#propagateFailures() <em>Propagate Failures</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Propagate Failures</em>' operation.
+	 * @see org.polarsys.chess.fla.flamm.FlaBehaviour#propagateFailures()
+	 * @generated
+	 */
+	public EOperation getFlaBehaviour__PropagateFailures() {
+		return flaBehaviourEClass.getEOperations().get(0);
+	}
+
+
+	/**
+	 * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour#initialize(boolean) <em>Initialize</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Initialize</em>' operation.
+	 * @see org.polarsys.chess.fla.flamm.FlaBehaviour#initialize(boolean)
+	 * @generated
+	 */
+	public EOperation getFlaBehaviour__Initialize__boolean() {
+		return flaBehaviourEClass.getEOperations().get(1);
+	}
+
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Port</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Port
+	 * @generated
+	 */
+	public EClass getPort() {
+		return portEClass;
+	}
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.polarsys.chess.fla.flamm.Port#getConnectedPorts <em>Connected Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Connected Ports</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Port#getConnectedPorts()
+	 * @see #getPort()
+	 * @generated
+	 */
+	public EReference getPort_ConnectedPorts() {
+		return (EReference)portEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Port#getFailures <em>Failures</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Failures</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Port#getFailures()
+	 * @see #getPort()
+	 * @generated
+	 */
+	public EReference getPort_Failures() {
+		return (EReference)portEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Port#getNewFailures <em>New Failures</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>New Failures</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Port#getNewFailures()
+	 * @see #getPort()
+	 * @generated
+	 */
+	public EReference getPort_NewFailures() {
+		return (EReference)portEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Port#getOwner <em>Owner</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Owner</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Port#getOwner()
+	 * @see #getPort()
+	 * @generated
+	 */
+	public EReference getPort_Owner() {
+		return (EReference)portEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Incoming Connections</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Port#getIncomingConnections()
+	 * @see #getPort()
+	 * @generated
+	 */
+	public EReference getPort_IncomingConnections() {
+		return (EReference)portEClass.getEStructuralFeatures().get(4);
+	}
+
+
+	/**
+	 * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Outgoing Connections</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Port#getOutgoingConnections()
+	 * @see #getPort()
+	 * @generated
+	 */
+	public EReference getPort_OutgoingConnections() {
+		return (EReference)portEClass.getEStructuralFeatures().get(5);
+	}
+
+
+	/**
+	 * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.Port#propagateFailures() <em>Propagate Failures</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Propagate Failures</em>' operation.
+	 * @see org.polarsys.chess.fla.flamm.Port#propagateFailures()
+	 * @generated
+	 */
+	public EOperation getPort__PropagateFailures() {
+		return portEClass.getEOperations().get(0);
+	}
+
+
+	/**
+	 * Returns the meta object for the '{@link org.polarsys.chess.fla.flamm.Port#initialize() <em>Initialize</em>}' operation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the '<em>Initialize</em>' operation.
+	 * @see org.polarsys.chess.fla.flamm.Port#initialize()
+	 * @generated
+	 */
+	public EOperation getPort__Initialize() {
+		return portEClass.getEOperations().get(1);
+	}
+
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Connection</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Connection
+	 * @generated
+	 */
+	public EClass getConnection() {
+		return connectionEClass;
+	}
+
+
+	/**
+	 * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>From</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Connection#getFrom()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	public EReference getConnection_From() {
+		return (EReference)connectionEClass.getEStructuralFeatures().get(0);
+	}
+
+
+	/**
+	 * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>To</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Connection#getTo()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	public EReference getConnection_To() {
+		return (EReference)connectionEClass.getEStructuralFeatures().get(1);
+	}
+
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.polarsys.chess.fla.flamm.Connection#getRules <em>Rules</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Rules</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Connection#getRules()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	public EReference getConnection_Rules() {
+		return (EReference)connectionEClass.getEStructuralFeatures().get(2);
+	}
+
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Rule</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Rule
+	 * @generated
+	 */
+	public EClass getRule() {
+		return ruleEClass;
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Rule#getInputExpression <em>Input Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Input Expression</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Rule#getInputExpression()
+	 * @see #getRule()
+	 * @generated
+	 */
+	public EReference getRule_InputExpression() {
+		return (EReference)ruleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Rule#getOutputExpression <em>Output Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Output Expression</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Rule#getOutputExpression()
+	 * @see #getRule()
+	 * @generated
+	 */
+	public EReference getRule_OutputExpression() {
+		return (EReference)ruleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.Rule#getSpecificity <em>Specificity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Specificity</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Rule#getSpecificity()
+	 * @see #getRule()
+	 * @generated
+	 */
+	public EAttribute getRule_Specificity() {
+		return (EAttribute)ruleEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Simple Component</em>'.
+	 * @see org.polarsys.chess.fla.flamm.SimpleComponent
+	 * @generated
+	 */
+	public EClass getSimpleComponent() {
+		return simpleComponentEClass;
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.SimpleComponent#getRules <em>Rules</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Rules</em>'.
+	 * @see org.polarsys.chess.fla.flamm.SimpleComponent#getRules()
+	 * @see #getSimpleComponent()
+	 * @generated
+	 */
+	public EReference getSimpleComponent_Rules() {
+		return (EReference)simpleComponentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Expression</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Expression
+	 * @generated
+	 */
+	public EClass getExpression() {
+		return expressionEClass;
+	}
+
+	/**
+	 * Returns the meta object for the reference '{@link org.polarsys.chess.fla.flamm.Expression#getPort <em>Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Port</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Expression#getPort()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	public EReference getExpression_Port() {
+		return (EReference)expressionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flamm.Expression#getFailures <em>Failures</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Failures</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Expression#getFailures()
+	 * @see #getExpression()
+	 * @generated
+	 */
+	public EReference getExpression_Failures() {
+		return (EReference)expressionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Failure</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Failure
+	 * @generated
+	 */
+	public EClass getFailure() {
+		return failureEClass;
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.Failure#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Failure#getType()
+	 * @see #getFailure()
+	 * @generated
+	 */
+	public EAttribute getFailure_Type() {
+		return (EAttribute)failureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.Failure#getId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Failure#getId()
+	 * @see #getFailure()
+	 * @generated
+	 */
+	public EAttribute getFailure_Id() {
+		return (EAttribute)failureEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable <em>Acid Avoidable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Acid Avoidable</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Failure#getAcidAvoidable()
+	 * @see #getFailure()
+	 * @generated
+	 */
+	public EReference getFailure_AcidAvoidable() {
+		return (EReference)failureEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flamm.Failure#getAcidMitigation <em>Acid Mitigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Acid Mitigation</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Failure#getAcidMitigation()
+	 * @see #getFailure()
+	 * @generated
+	 */
+	public EReference getFailure_AcidMitigation() {
+		return (EReference)failureEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.polarsys.chess.fla.flamm.Failure#getPreviousFailures <em>Previous Failures</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Previous Failures</em>'.
+	 * @see org.polarsys.chess.fla.flamm.Failure#getPreviousFailures()
+	 * @see #getFailure()
+	 * @generated
+	 */
+	public EReference getFailure_PreviousFailures() {
+		return (EReference)failureEClass.getEStructuralFeatures().get(4);
+	}
+
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>ACI Davoidable</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+	 * @generated
+	 */
+	public EClass getACIDavoidable() {
+		return aciDavoidableEClass;
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getA <em>A</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>A</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getA()
+	 * @see #getACIDavoidable()
+	 * @generated
+	 */
+	public EAttribute getACIDavoidable_A() {
+		return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getC <em>C</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>C</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getC()
+	 * @see #getACIDavoidable()
+	 * @generated
+	 */
+	public EAttribute getACIDavoidable_C() {
+		return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getI <em>I</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>I</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getI()
+	 * @see #getACIDavoidable()
+	 * @generated
+	 */
+	public EAttribute getACIDavoidable_I() {
+		return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDavoidable#getD <em>D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>D</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDavoidable#getD()
+	 * @see #getACIDavoidable()
+	 * @generated
+	 */
+	public EAttribute getACIDavoidable_D() {
+		return (EAttribute)aciDavoidableEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>ACI Dmitigation</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+	 * @generated
+	 */
+	public EClass getACIDmitigation() {
+		return aciDmitigationEClass;
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getA <em>A</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>A</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getA()
+	 * @see #getACIDmitigation()
+	 * @generated
+	 */
+	public EAttribute getACIDmitigation_A() {
+		return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getC <em>C</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>C</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getC()
+	 * @see #getACIDmitigation()
+	 * @generated
+	 */
+	public EAttribute getACIDmitigation_C() {
+		return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getI <em>I</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>I</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getI()
+	 * @see #getACIDmitigation()
+	 * @generated
+	 */
+	public EAttribute getACIDmitigation_I() {
+		return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flamm.ACIDmitigation#getD <em>D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>D</em>'.
+	 * @see org.polarsys.chess.fla.flamm.ACIDmitigation#getD()
+	 * @see #getACIDmitigation()
+	 * @generated
+	 */
+	public EAttribute getACIDmitigation_D() {
+		return (EAttribute)aciDmitigationEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	public FlammFactory getFlammFactory() {
+		return (FlammFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		namedElementEClass = createEClass(NAMED_ELEMENT);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__ID);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
+
+		flaBehaviourEClass = createEClass(FLA_BEHAVIOUR);
+		createEOperation(flaBehaviourEClass, FLA_BEHAVIOUR___PROPAGATE_FAILURES);
+		createEOperation(flaBehaviourEClass, FLA_BEHAVIOUR___INITIALIZE__BOOLEAN);
+
+		componentEClass = createEClass(COMPONENT);
+		createEReference(componentEClass, COMPONENT__INPUT_PORTS);
+		createEReference(componentEClass, COMPONENT__OUTPUT_PORTS);
+		createEReference(componentEClass, COMPONENT__PARENT);
+
+		compositeComponentEClass = createEClass(COMPOSITE_COMPONENT);
+		createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__COMPONENTS);
+		createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__CONNECTIONS);
+
+		simpleComponentEClass = createEClass(SIMPLE_COMPONENT);
+		createEReference(simpleComponentEClass, SIMPLE_COMPONENT__RULES);
+
+		portEClass = createEClass(PORT);
+		createEReference(portEClass, PORT__CONNECTED_PORTS);
+		createEReference(portEClass, PORT__FAILURES);
+		createEReference(portEClass, PORT__NEW_FAILURES);
+		createEReference(portEClass, PORT__OWNER);
+		createEReference(portEClass, PORT__INCOMING_CONNECTIONS);
+		createEReference(portEClass, PORT__OUTGOING_CONNECTIONS);
+		createEOperation(portEClass, PORT___PROPAGATE_FAILURES);
+		createEOperation(portEClass, PORT___INITIALIZE);
+
+		connectionEClass = createEClass(CONNECTION);
+		createEReference(connectionEClass, CONNECTION__FROM);
+		createEReference(connectionEClass, CONNECTION__TO);
+		createEReference(connectionEClass, CONNECTION__RULES);
+
+		ruleEClass = createEClass(RULE);
+		createEReference(ruleEClass, RULE__INPUT_EXPRESSION);
+		createEReference(ruleEClass, RULE__OUTPUT_EXPRESSION);
+		createEAttribute(ruleEClass, RULE__SPECIFICITY);
+
+		expressionEClass = createEClass(EXPRESSION);
+		createEReference(expressionEClass, EXPRESSION__PORT);
+		createEReference(expressionEClass, EXPRESSION__FAILURES);
+
+		failureEClass = createEClass(FAILURE);
+		createEAttribute(failureEClass, FAILURE__TYPE);
+		createEAttribute(failureEClass, FAILURE__ID);
+		createEReference(failureEClass, FAILURE__ACID_AVOIDABLE);
+		createEReference(failureEClass, FAILURE__ACID_MITIGATION);
+		createEReference(failureEClass, FAILURE__PREVIOUS_FAILURES);
+
+		aciDavoidableEClass = createEClass(ACI_DAVOIDABLE);
+		createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__A);
+		createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__C);
+		createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__I);
+		createEAttribute(aciDavoidableEClass, ACI_DAVOIDABLE__D);
+
+		aciDmitigationEClass = createEClass(ACI_DMITIGATION);
+		createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__A);
+		createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__C);
+		createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__I);
+		createEAttribute(aciDmitigationEClass, ACI_DMITIGATION__D);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		FailureTypesPackage theFailureTypesPackage = (FailureTypesPackage)EPackage.Registry.INSTANCE.getEPackage(FailureTypesPackage.eNS_URI);
+
+		// Add subpackages
+		getESubpackages().add(theFailureTypesPackage);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		componentEClass.getESuperTypes().add(this.getNamedElement());
+		componentEClass.getESuperTypes().add(this.getFlaBehaviour());
+		compositeComponentEClass.getESuperTypes().add(this.getComponent());
+		simpleComponentEClass.getESuperTypes().add(this.getComponent());
+		portEClass.getESuperTypes().add(this.getNamedElement());
+		connectionEClass.getESuperTypes().add(this.getFlaBehaviour());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(namedElementEClass, NamedElement.class, "NamedElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getNamedElement_Id(), ecorePackage.getEString(), "id", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getNamedElement_Name(), ecorePackage.getEString(), "name", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(flaBehaviourEClass, FlaBehaviour.class, "FlaBehaviour", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEOperation(getFlaBehaviour__PropagateFailures(), null, "propagateFailures", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		EOperation op = initEOperation(getFlaBehaviour__Initialize__boolean(), null, "initialize", 0, 1, IS_UNIQUE, IS_ORDERED);
+		addEParameter(op, ecorePackage.getEBoolean(), "initNoFailure", 1, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(componentEClass, Component.class, "Component", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getComponent_InputPorts(), this.getPort(), null, "inputPorts", null, 0, -1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_OutputPorts(), this.getPort(), null, "outputPorts", null, 0, -1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_Parent(), this.getCompositeComponent(), this.getCompositeComponent_Components(), "parent", null, 0, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(compositeComponentEClass, CompositeComponent.class, "CompositeComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCompositeComponent_Components(), this.getComponent(), this.getComponent_Parent(), "components", null, 0, -1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCompositeComponent_Connections(), this.getConnection(), null, "connections", null, 0, -1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(simpleComponentEClass, SimpleComponent.class, "SimpleComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSimpleComponent_Rules(), this.getRule(), null, "rules", null, 0, -1, SimpleComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(portEClass, Port.class, "Port", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getPort_ConnectedPorts(), this.getPort(), null, "connectedPorts", null, 0, -1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPort_Failures(), this.getFailure(), null, "failures", null, 0, -1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getPort_NewFailures(), this.getFailure(), null, "newFailures", null, 0, -1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getPort_Owner(), this.getComponent(), null, "owner", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPort_IncomingConnections(), this.getConnection(), this.getConnection_To(), "incomingConnections", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getPort_OutgoingConnections(), this.getConnection(), this.getConnection_From(), "outgoingConnections", null, 1, 1, Port.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEOperation(getPort__PropagateFailures(), null, "propagateFailures", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEOperation(getPort__Initialize(), null, "initialize", 0, 1, IS_UNIQUE, IS_ORDERED);
+
+		initEClass(connectionEClass, Connection.class, "Connection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getConnection_From(), this.getPort(), this.getPort_OutgoingConnections(), "from", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getConnection_To(), this.getPort(), this.getPort_IncomingConnections(), "to", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getConnection_Rules(), this.getRule(), null, "rules", null, 0, -1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(ruleEClass, Rule.class, "Rule", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getRule_InputExpression(), this.getExpression(), null, "inputExpression", null, 0, -1, Rule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRule_OutputExpression(), this.getExpression(), null, "outputExpression", null, 0, -1, Rule.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getRule_Specificity(), ecorePackage.getEInt(), "specificity", "-1", 1, 1, Rule.class, IS_TRANSIENT, !IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(expressionEClass, Expression.class, "Expression", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getExpression_Port(), this.getPort(), null, "port", null, 1, 1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getExpression_Failures(), this.getFailure(), null, "failures", null, 0, -1, Expression.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(failureEClass, Failure.class, "Failure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFailure_Type(), theFailureTypesPackage.getFailureType(), "type", null, 1, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getFailure_Id(), ecorePackage.getEString(), "id", null, 0, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFailure_AcidAvoidable(), this.getACIDavoidable(), null, "acidAvoidable", null, 0, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFailure_AcidMitigation(), this.getACIDmitigation(), null, "acidMitigation", null, 0, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getFailure_PreviousFailures(), this.getFailure(), null, "previousFailures", null, 0, -1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(aciDavoidableEClass, ACIDavoidable.class, "ACIDavoidable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getACIDavoidable_A(), theFailureTypesPackage.getA_avoidable(), "a", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getACIDavoidable_C(), theFailureTypesPackage.getC_avoidable(), "c", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getACIDavoidable_I(), theFailureTypesPackage.getI_avoidable(), "i", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getACIDavoidable_D(), theFailureTypesPackage.getD_avoidable(), "d", null, 0, 1, ACIDavoidable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(aciDmitigationEClass, ACIDmitigation.class, "ACIDmitigation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getACIDmitigation_A(), theFailureTypesPackage.getA_mitigation(), "a", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getACIDmitigation_C(), theFailureTypesPackage.getC_mitigation(), "c", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getACIDmitigation_I(), theFailureTypesPackage.getI_mitigation(), "i", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getACIDmitigation_D(), theFailureTypesPackage.getD_mitigation(), "d", null, 0, 1, ACIDmitigation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.Component
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getComponent()
+		 * @generated
+		 */
+		public static final EClass COMPONENT = eINSTANCE.getComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference COMPONENT__INPUT_PORTS = eINSTANCE.getComponent_InputPorts();
+
+		/**
+		 * The meta object literal for the '<em><b>Output Ports</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference COMPONENT__OUTPUT_PORTS = eINSTANCE.getComponent_OutputPorts();
+
+		/**
+		 * The meta object literal for the '<em><b>Parent</b></em>' container reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference COMPONENT__PARENT = eINSTANCE.getComponent_Parent();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.CompositeComponent
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getCompositeComponent()
+		 * @generated
+		 */
+		public static final EClass COMPOSITE_COMPONENT = eINSTANCE.getCompositeComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Components</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference COMPOSITE_COMPONENT__COMPONENTS = eINSTANCE.getCompositeComponent_Components();
+
+		/**
+		 * The meta object literal for the '<em><b>Connections</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference COMPOSITE_COMPONENT__CONNECTIONS = eINSTANCE.getCompositeComponent_Connections();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.NamedElement
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement()
+		 * @generated
+		 */
+		public static final EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute NAMED_ELEMENT__ID = eINSTANCE.getNamedElement_Id();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFlaBehaviour()
+		 * @generated
+		 */
+		public static final EClass FLA_BEHAVIOUR = eINSTANCE.getFlaBehaviour();
+
+		/**
+		 * The meta object literal for the '<em><b>Propagate Failures</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EOperation FLA_BEHAVIOUR___PROPAGATE_FAILURES = eINSTANCE.getFlaBehaviour__PropagateFailures();
+
+		/**
+		 * The meta object literal for the '<em><b>Initialize</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EOperation FLA_BEHAVIOUR___INITIALIZE__BOOLEAN = eINSTANCE.getFlaBehaviour__Initialize__boolean();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.Port
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort()
+		 * @generated
+		 */
+		public static final EClass PORT = eINSTANCE.getPort();
+
+		/**
+		 * The meta object literal for the '<em><b>Connected Ports</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference PORT__CONNECTED_PORTS = eINSTANCE.getPort_ConnectedPorts();
+
+		/**
+		 * The meta object literal for the '<em><b>Failures</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference PORT__FAILURES = eINSTANCE.getPort_Failures();
+
+		/**
+		 * The meta object literal for the '<em><b>New Failures</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference PORT__NEW_FAILURES = eINSTANCE.getPort_NewFailures();
+
+		/**
+		 * The meta object literal for the '<em><b>Owner</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference PORT__OWNER = eINSTANCE.getPort_Owner();
+
+		/**
+		 * The meta object literal for the '<em><b>Incoming Connections</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference PORT__INCOMING_CONNECTIONS = eINSTANCE.getPort_IncomingConnections();
+
+		/**
+		 * The meta object literal for the '<em><b>Outgoing Connections</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference PORT__OUTGOING_CONNECTIONS = eINSTANCE.getPort_OutgoingConnections();
+
+		/**
+		 * The meta object literal for the '<em><b>Propagate Failures</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EOperation PORT___PROPAGATE_FAILURES = eINSTANCE.getPort__PropagateFailures();
+
+		/**
+		 * The meta object literal for the '<em><b>Initialize</b></em>' operation.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EOperation PORT___INITIALIZE = eINSTANCE.getPort__Initialize();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.Connection
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getConnection()
+		 * @generated
+		 */
+		public static final EClass CONNECTION = eINSTANCE.getConnection();
+
+		/**
+		 * The meta object literal for the '<em><b>From</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference CONNECTION__FROM = eINSTANCE.getConnection_From();
+
+		/**
+		 * The meta object literal for the '<em><b>To</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference CONNECTION__TO = eINSTANCE.getConnection_To();
+
+		/**
+		 * The meta object literal for the '<em><b>Rules</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference CONNECTION__RULES = eINSTANCE.getConnection_Rules();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.Rule
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule()
+		 * @generated
+		 */
+		public static final EClass RULE = eINSTANCE.getRule();
+
+		/**
+		 * The meta object literal for the '<em><b>Input Expression</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference RULE__INPUT_EXPRESSION = eINSTANCE.getRule_InputExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Output Expression</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference RULE__OUTPUT_EXPRESSION = eINSTANCE.getRule_OutputExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Specificity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute RULE__SPECIFICITY = eINSTANCE.getRule_Specificity();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.SimpleComponent
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getSimpleComponent()
+		 * @generated
+		 */
+		public static final EClass SIMPLE_COMPONENT = eINSTANCE.getSimpleComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Rules</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference SIMPLE_COMPONENT__RULES = eINSTANCE.getSimpleComponent_Rules();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.Expression
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getExpression()
+		 * @generated
+		 */
+		public static final EClass EXPRESSION = eINSTANCE.getExpression();
+
+		/**
+		 * The meta object literal for the '<em><b>Port</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference EXPRESSION__PORT = eINSTANCE.getExpression_Port();
+
+		/**
+		 * The meta object literal for the '<em><b>Failures</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference EXPRESSION__FAILURES = eINSTANCE.getExpression_Failures();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.Failure
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getFailure()
+		 * @generated
+		 */
+		public static final EClass FAILURE = eINSTANCE.getFailure();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute FAILURE__TYPE = eINSTANCE.getFailure_Type();
+
+		/**
+		 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute FAILURE__ID = eINSTANCE.getFailure_Id();
+
+		/**
+		 * The meta object literal for the '<em><b>Acid Avoidable</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference FAILURE__ACID_AVOIDABLE = eINSTANCE.getFailure_AcidAvoidable();
+
+		/**
+		 * The meta object literal for the '<em><b>Acid Mitigation</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference FAILURE__ACID_MITIGATION = eINSTANCE.getFailure_AcidMitigation();
+
+		/**
+		 * The meta object literal for the '<em><b>Previous Failures</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EReference FAILURE__PREVIOUS_FAILURES = eINSTANCE.getFailure_PreviousFailures();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDavoidable()
+		 * @generated
+		 */
+		public static final EClass ACI_DAVOIDABLE = eINSTANCE.getACIDavoidable();
+
+		/**
+		 * The meta object literal for the '<em><b>A</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DAVOIDABLE__A = eINSTANCE.getACIDavoidable_A();
+
+		/**
+		 * The meta object literal for the '<em><b>C</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DAVOIDABLE__C = eINSTANCE.getACIDavoidable_C();
+
+		/**
+		 * The meta object literal for the '<em><b>I</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DAVOIDABLE__I = eINSTANCE.getACIDavoidable_I();
+
+		/**
+		 * The meta object literal for the '<em><b>D</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DAVOIDABLE__D = eINSTANCE.getACIDavoidable_D();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+		 * @see org.polarsys.chess.fla.flamm.FlammPackage#getACIDmitigation()
+		 * @generated
+		 */
+		public static final EClass ACI_DMITIGATION = eINSTANCE.getACIDmitigation();
+
+		/**
+		 * The meta object literal for the '<em><b>A</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DMITIGATION__A = eINSTANCE.getACIDmitigation_A();
+
+		/**
+		 * The meta object literal for the '<em><b>C</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DMITIGATION__C = eINSTANCE.getACIDmitigation_C();
+
+		/**
+		 * The meta object literal for the '<em><b>I</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DMITIGATION__I = eINSTANCE.getACIDmitigation_I();
+
+		/**
+		 * The meta object literal for the '<em><b>D</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		public static final EAttribute ACI_DMITIGATION__D = eINSTANCE.getACIDmitigation_D();
+
+	}
+
+} //FlammPackage
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/NamedElement.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/NamedElement.java
new file mode 100644
index 0000000..83f484e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/NamedElement.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.NamedElement#getId <em>Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.NamedElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement()
+ * @model kind="class"
+ * @generated
+ */
+public class NamedElement extends MinimalEObjectImpl.Container implements EObject {
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NamedElement() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.NAMED_ELEMENT;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement_Id()
+	 * @model required="true"
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.NamedElement#getId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.NAMED_ELEMENT__ID, oldId, id));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getNamedElement_Name()
+	 * @model required="true"
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.NamedElement#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.NAMED_ELEMENT__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.NAMED_ELEMENT__ID:
+				return getId();
+			case FlammPackage.NAMED_ELEMENT__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.NAMED_ELEMENT__ID:
+				setId((String)newValue);
+				return;
+			case FlammPackage.NAMED_ELEMENT__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.NAMED_ELEMENT__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case FlammPackage.NAMED_ELEMENT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.NAMED_ELEMENT__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+			case FlammPackage.NAMED_ELEMENT__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (id: ");
+		result.append(id);
+		result.append(", name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} // NamedElement
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Port.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Port.java
new file mode 100644
index 0000000..b9c2a7d
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Port.java
@@ -0,0 +1,671 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.List;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Port#getConnectedPorts <em>Connected Ports</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Port#getFailures <em>Failures</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Port#getNewFailures <em>New Failures</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Port#getOwner <em>Owner</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort()
+ * @model kind="class"
+ * @generated
+ */
+public class Port extends NamedElement {
+	/**
+	 * The cached value of the '{@link #getConnectedPorts() <em>Connected Ports</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConnectedPorts()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Port> connectedPorts;
+
+	/**
+	 * The cached value of the '{@link #getFailures() <em>Failures</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFailures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Failure> failures;
+
+	/**
+	 * The cached value of the '{@link #getNewFailures() <em>New Failures</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNewFailures()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Failure> newFailures;
+
+	/**
+	 * The cached value of the '{@link #getOwner() <em>Owner</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOwner()
+	 * @generated
+	 * @ordered
+	 */
+	protected Component owner;
+
+	/**
+	 * The cached value of the '{@link #getIncomingConnections() <em>Incoming Connections</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIncomingConnections()
+	 * @generated
+	 * @ordered
+	 */
+	protected Connection incomingConnections;
+
+	/**
+	 * The cached value of the '{@link #getOutgoingConnections() <em>Outgoing Connections</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutgoingConnections()
+	 * @generated
+	 * @ordered
+	 */
+	protected Connection outgoingConnections;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Port() {
+		super();
+	}
+
+	public Port(String name, String id, Component owner) {
+		super();
+		setName(name);
+		setId(id);
+		setOwner(owner);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.PORT;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Connected Ports</b></em>' reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Port}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Connected Ports</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Connected Ports</em>' reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_ConnectedPorts()
+	 * @model
+	 * @generated
+	 */
+	public List<Port> getConnectedPorts() {
+		if (connectedPorts == null) {
+			connectedPorts = new EObjectResolvingEList<Port>(Port.class, this, FlammPackage.PORT__CONNECTED_PORTS);
+		}
+		return connectedPorts;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Failures</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Failures</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Failures</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_Failures()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	public List<Failure> getFailures() {
+		if (failures == null) {
+			failures = new EObjectContainmentEList<Failure>(Failure.class, this, FlammPackage.PORT__FAILURES);
+		}
+		return failures;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>New Failures</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Failure}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>New Failures</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>New Failures</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_NewFailures()
+	 * @model containment="true" ordered="false"
+	 * @generated
+	 */
+	public List<Failure> getNewFailures() {
+		if (newFailures == null) {
+			newFailures = new EObjectContainmentEList<Failure>(Failure.class, this, FlammPackage.PORT__NEW_FAILURES);
+		}
+		return newFailures;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Owner</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Owner</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Owner</em>' reference.
+	 * @see #setOwner(Component)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_Owner()
+	 * @model required="true"
+	 * @generated
+	 */
+	public Component getOwner() {
+		if (owner != null && owner.eIsProxy()) {
+			InternalEObject oldOwner = (InternalEObject)owner;
+			owner = (Component)eResolveProxy(oldOwner);
+			if (owner != oldOwner) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.PORT__OWNER, oldOwner, owner));
+			}
+		}
+		return owner;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component basicGetOwner() {
+		return owner;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Port#getOwner <em>Owner</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Owner</em>' reference.
+	 * @see #getOwner()
+	 * @generated
+	 */
+	public void setOwner(Component newOwner) {
+		Component oldOwner = owner;
+		owner = newOwner;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__OWNER, oldOwner, owner));
+	}
+	
+	/**
+	 * Returns the value of the '<em><b>Incoming Connections</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Connection#getTo <em>To</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Incoming Connections</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Incoming Connections</em>' reference.
+	 * @see #setIncomingConnections(Connection)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_IncomingConnections()
+	 * @see org.polarsys.chess.fla.flamm.Connection#getTo
+	 * @model opposite="to" required="true"
+	 * @generated
+	 */
+	public Connection getIncomingConnections() {
+		if (incomingConnections != null && incomingConnections.eIsProxy()) {
+			InternalEObject oldIncomingConnections = (InternalEObject)incomingConnections;
+			incomingConnections = (Connection)eResolveProxy(oldIncomingConnections);
+			if (incomingConnections != oldIncomingConnections) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.PORT__INCOMING_CONNECTIONS, oldIncomingConnections, incomingConnections));
+			}
+		}
+		return incomingConnections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Connection basicGetIncomingConnections() {
+		return incomingConnections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetIncomingConnections(Connection newIncomingConnections, NotificationChain msgs) {
+		Connection oldIncomingConnections = incomingConnections;
+		incomingConnections = newIncomingConnections;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__INCOMING_CONNECTIONS, oldIncomingConnections, newIncomingConnections);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Port#getIncomingConnections <em>Incoming Connections</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Incoming Connections</em>' reference.
+	 * @see #getIncomingConnections()
+	 * @generated
+	 */
+	public void setIncomingConnections(Connection newIncomingConnections) {
+		if (newIncomingConnections != incomingConnections) {
+			NotificationChain msgs = null;
+			if (incomingConnections != null)
+				msgs = ((InternalEObject)incomingConnections).eInverseRemove(this, FlammPackage.CONNECTION__TO, Connection.class, msgs);
+			if (newIncomingConnections != null)
+				msgs = ((InternalEObject)newIncomingConnections).eInverseAdd(this, FlammPackage.CONNECTION__TO, Connection.class, msgs);
+			msgs = basicSetIncomingConnections(newIncomingConnections, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__INCOMING_CONNECTIONS, newIncomingConnections, newIncomingConnections));
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Outgoing Connections</b></em>' reference.
+	 * It is bidirectional and its opposite is '{@link org.polarsys.chess.fla.flamm.Connection#getFrom <em>From</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Outgoing Connections</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Outgoing Connections</em>' reference.
+	 * @see #setOutgoingConnections(Connection)
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getPort_OutgoingConnections()
+	 * @see org.polarsys.chess.fla.flamm.Connection#getFrom
+	 * @model opposite="from" required="true"
+	 * @generated
+	 */
+	public Connection getOutgoingConnections() {
+		if (outgoingConnections != null && outgoingConnections.eIsProxy()) {
+			InternalEObject oldOutgoingConnections = (InternalEObject)outgoingConnections;
+			outgoingConnections = (Connection)eResolveProxy(oldOutgoingConnections);
+			if (outgoingConnections != oldOutgoingConnections) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, FlammPackage.PORT__OUTGOING_CONNECTIONS, oldOutgoingConnections, outgoingConnections));
+			}
+		}
+		return outgoingConnections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Connection basicGetOutgoingConnections() {
+		return outgoingConnections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOutgoingConnections(Connection newOutgoingConnections, NotificationChain msgs) {
+		Connection oldOutgoingConnections = outgoingConnections;
+		outgoingConnections = newOutgoingConnections;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__OUTGOING_CONNECTIONS, oldOutgoingConnections, newOutgoingConnections);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flamm.Port#getOutgoingConnections <em>Outgoing Connections</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Outgoing Connections</em>' reference.
+	 * @see #getOutgoingConnections()
+	 * @generated
+	 */
+	public void setOutgoingConnections(Connection newOutgoingConnections) {
+		if (newOutgoingConnections != outgoingConnections) {
+			NotificationChain msgs = null;
+			if (outgoingConnections != null)
+				msgs = ((InternalEObject)outgoingConnections).eInverseRemove(this, FlammPackage.CONNECTION__FROM, Connection.class, msgs);
+			if (newOutgoingConnections != null)
+				msgs = ((InternalEObject)newOutgoingConnections).eInverseAdd(this, FlammPackage.CONNECTION__FROM, Connection.class, msgs);
+			msgs = basicSetOutgoingConnections(newOutgoingConnections, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlammPackage.PORT__OUTGOING_CONNECTIONS, newOutgoingConnections, newOutgoingConnections));
+	}
+
+	public boolean hasNewFailures() {
+		return !getNewFailures().isEmpty();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @model
+	 * @generated
+	 */
+	public void propagateFailures() {
+		// TODO: implement this method
+		// Ensure that you remove @generated or mark it @generated NOT
+		throw new UnsupportedOperationException();
+	}
+
+	/**
+	 * Marks all new failures as handled.
+	 */
+	public void clearNewFailures() {
+		getFailures().addAll(getNewFailures());
+		getNewFailures().clear();
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	public void initialize() {
+		this.getFailures().clear();
+		this.getNewFailures().clear();
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.PORT__INCOMING_CONNECTIONS:
+				if (incomingConnections != null)
+					msgs = ((InternalEObject)incomingConnections).eInverseRemove(this, FlammPackage.CONNECTION__TO, Connection.class, msgs);
+				return basicSetIncomingConnections((Connection)otherEnd, msgs);
+			case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+				if (outgoingConnections != null)
+					msgs = ((InternalEObject)outgoingConnections).eInverseRemove(this, FlammPackage.CONNECTION__FROM, Connection.class, msgs);
+				return basicSetOutgoingConnections((Connection)otherEnd, msgs);
+		}
+		return super.eInverseAdd(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.PORT__FAILURES:
+				return ((InternalEList<?>)getFailures()).basicRemove(otherEnd, msgs);
+			case FlammPackage.PORT__NEW_FAILURES:
+				return ((InternalEList<?>)getNewFailures()).basicRemove(otherEnd, msgs);
+			case FlammPackage.PORT__INCOMING_CONNECTIONS:
+				return basicSetIncomingConnections(null, msgs);
+			case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+				return basicSetOutgoingConnections(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * Add a new failure to this port.<br/>
+	 * A copy of the failure will be created and added to handle EMF containment relationship.
+	 * @param failure
+	 * @return <code>true</code> if the failure was added to the set of new failures.
+	 */
+	public boolean addFailure(Failure failure) {
+		if (Failure.doCollectionContainFailure(getFailures(), failure) || Failure.doCollectionContainFailure(getNewFailures(), failure)) {
+			return false;
+		}
+		return getNewFailures().add(new Failure(failure));
+	}
+	
+	/**
+	 * Add a new failure to this port.<br/>
+	 * A copy of the failure will be created and added to handle EMF containment relationship.
+	 * @param failure
+	 * @return <code>true</code> if the failure was added to the set of new failures.
+	 */
+	public boolean addFailure(Failure failure, Failure previousFailure) {
+		if (Failure.doCollectionContainFailure(getFailures(), failure)) {
+			Failure existingFailure = Failure.getFailureInCollection(getFailures(), failure);
+			existingFailure.addPreviousFailure(previousFailure);
+			return false;
+		} else if (Failure.doCollectionContainFailure(getNewFailures(), failure)) {
+			Failure existingFailure = Failure.getFailureInCollection(getNewFailures(), failure);
+			existingFailure.addPreviousFailure(previousFailure);
+			return false;
+		}
+		return getNewFailures().add(new Failure(failure, previousFailure));
+	}
+	
+	/**
+	 * Add a new failure to this port.<br/>
+	 * A copy of the failure will be created and added to handle EMF containment relationship.
+	 * @param failure
+	 * @return <code>true</code> if the failure was added to the set of new failures.
+	 */
+	public boolean addFailure(Failure failure, Collection<Failure> previousFailures) {
+		if (Failure.doCollectionContainFailure(getFailures(), failure)) {
+			Failure existingFailure = Failure.getFailureInCollection(getFailures(), failure);
+			existingFailure.addPreviousFailures(previousFailures);
+			return false;
+		} else if (Failure.doCollectionContainFailure(getNewFailures(), failure)) {
+			Failure existingFailure = Failure.getFailureInCollection(getNewFailures(), failure);
+			existingFailure.addPreviousFailures(previousFailures);
+			return false;
+		}
+		return getNewFailures().add(new Failure(failure, previousFailures));
+	}
+	
+	/**
+	 * Add new failures to this port.<br/>
+	 * All failures will be copied and added to handle EMF containment relationship.
+	 * @param failure
+	 * @return <code>true</code> if at least one of the failures was added to the set of new failures.
+	 */
+	public boolean addFailures(Collection<Failure> failures) {
+		boolean hasFailureBeenAdded = false;
+		for (Failure failure : failures) {
+			if (this.addFailure(failure)) {
+				hasFailureBeenAdded = true;
+			}
+		}
+		return hasFailureBeenAdded;
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.PORT__CONNECTED_PORTS:
+				return getConnectedPorts();
+			case FlammPackage.PORT__FAILURES:
+				return getFailures();
+			case FlammPackage.PORT__NEW_FAILURES:
+				return getNewFailures();
+			case FlammPackage.PORT__OWNER:
+				if (resolve) return getOwner();
+				return basicGetOwner();
+			case FlammPackage.PORT__INCOMING_CONNECTIONS:
+				if (resolve) return getIncomingConnections();
+				return basicGetIncomingConnections();
+			case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+				if (resolve) return getOutgoingConnections();
+				return basicGetOutgoingConnections();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.PORT__CONNECTED_PORTS:
+				getConnectedPorts().clear();
+				getConnectedPorts().addAll((Collection<? extends Port>)newValue);
+				return;
+			case FlammPackage.PORT__FAILURES:
+				getFailures().clear();
+				getFailures().addAll((Collection<? extends Failure>)newValue);
+				return;
+			case FlammPackage.PORT__NEW_FAILURES:
+				getNewFailures().clear();
+				getNewFailures().addAll((Collection<? extends Failure>)newValue);
+				return;
+			case FlammPackage.PORT__OWNER:
+				setOwner((Component)newValue);
+				return;
+			case FlammPackage.PORT__INCOMING_CONNECTIONS:
+				setIncomingConnections((Connection)newValue);
+				return;
+			case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+				setOutgoingConnections((Connection)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.PORT__CONNECTED_PORTS:
+				getConnectedPorts().clear();
+				return;
+			case FlammPackage.PORT__FAILURES:
+				getFailures().clear();
+				return;
+			case FlammPackage.PORT__NEW_FAILURES:
+				getNewFailures().clear();
+				return;
+			case FlammPackage.PORT__OWNER:
+				setOwner((Component)null);
+				return;
+			case FlammPackage.PORT__INCOMING_CONNECTIONS:
+				setIncomingConnections((Connection)null);
+				return;
+			case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+				setOutgoingConnections((Connection)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.PORT__CONNECTED_PORTS:
+				return connectedPorts != null && !connectedPorts.isEmpty();
+			case FlammPackage.PORT__FAILURES:
+				return failures != null && !failures.isEmpty();
+			case FlammPackage.PORT__NEW_FAILURES:
+				return newFailures != null && !newFailures.isEmpty();
+			case FlammPackage.PORT__OWNER:
+				return owner != null;
+			case FlammPackage.PORT__INCOMING_CONNECTIONS:
+				return incomingConnections != null;
+			case FlammPackage.PORT__OUTGOING_CONNECTIONS:
+				return outgoingConnections != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
+		switch (operationID) {
+			case FlammPackage.PORT___PROPAGATE_FAILURES:
+				propagateFailures();
+				return null;
+			case FlammPackage.PORT___INITIALIZE:
+				initialize();
+				return null;
+		}
+		return super.eInvoke(operationID, arguments);
+	}
+
+} // Port
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/PortFailureTuple.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/PortFailureTuple.java
new file mode 100644
index 0000000..8d9f48d
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/PortFailureTuple.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+
+public class PortFailureTuple {
+	Port port;
+	Failure failure;
+	
+	PortFailureTuple(Port port, Failure failureType) {
+		this.port = port;
+		this.failure = failureType;
+	}
+	
+	static List<PortFailureTuple> fromMap(Map<Port, Failure> map) {
+		List<PortFailureTuple> list = new ArrayList<PortFailureTuple>(map.size());
+		for (Port port : map.keySet()) {
+			list.add(new PortFailureTuple(port, map.get(port)));
+		}
+		return list;
+	}
+	
+	static Set<PortFailureTuple> fromCollection(Port port, Collection<Failure> failures) {
+		Set<PortFailureTuple> set = new HashSet<PortFailureTuple>(failures.size());
+		for (Failure failure : failures) {
+			set.add(new PortFailureTuple(port, failure));
+		}
+		return set;
+	}
+
+	public Port getPort() {
+		return port;
+	}
+
+	public Failure getFailure() {
+		return failure;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((failure == null) ? 0 : failure.getId().hashCode());
+		result = prime * result + ((port == null) ? 0 : port.getId().hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj) {
+			return true;
+		}
+		if (obj == null) {
+			return false;
+		}
+		if (getClass() != obj.getClass()) {
+			return false;
+		}
+		PortFailureTuple other = (PortFailureTuple) obj;
+		if (failure == null) {
+			if (other.failure != null) {
+				return false;
+			}
+		} else if (!failure.getId().equals(other.failure.getId())) {
+			return false;
+		}
+		if (port == null) {
+			if (other.port != null) {
+				return false;
+			}
+		} else if (!port.equals(other.port)) {
+			return false;
+		}
+		return true;
+	}
+	
+	
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Rule.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Rule.java
new file mode 100644
index 0000000..d52ef94
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/Rule.java
@@ -0,0 +1,401 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureType;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rule</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Rule#getInputExpression <em>Input Expression</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Rule#getOutputExpression <em>Output Expression</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flamm.Rule#getSpecificity <em>Specificity</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule()
+ * @model kind="class"
+ * @generated
+ */
+public class Rule extends MinimalEObjectImpl.Container implements EObject {
+	/**
+	 * The cached value of the '{@link #getInputExpression() <em>Input Expression</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInputExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Expression> inputExpression;
+
+	/**
+	 * The cached value of the '{@link #getOutputExpression() <em>Output Expression</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutputExpression()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Expression> outputExpression;
+	
+	/**
+	 * Used to keep information about failure types matched to variables.
+	 */
+	private transient Map<String, Failure> variableAssignments = new HashMap<String, Failure>();
+	
+	/**
+	 * The default value of the '{@link #getSpecificity() <em>Specificity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSpecificity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int SPECIFICITY_EDEFAULT = -1;
+
+	/**
+	 * The cached value of the '{@link #getSpecificity() <em>Specificity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSpecificity()
+	 * @generated
+	 * @ordered
+	 */
+	protected int specificity = SPECIFICITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Rule() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.RULE;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Input Expression</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Expression}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Input Expression</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Input Expression</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule_InputExpression()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public List<Expression> getInputExpression() {
+		if (inputExpression == null) {
+			inputExpression = new EObjectContainmentEList<Expression>(Expression.class, this, FlammPackage.RULE__INPUT_EXPRESSION);
+		}
+		return inputExpression;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Output Expression</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Expression}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output Expression</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output Expression</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flamm.FlammPackage#getRule_OutputExpression()
+	 * @model containment="true"
+	 * @generated
+	 */
+	public List<Expression> getOutputExpression() {
+		if (outputExpression == null) {
+			outputExpression = new EObjectContainmentEList<Expression>(Expression.class, this, FlammPackage.RULE__OUTPUT_EXPRESSION);
+		}
+		return outputExpression;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Specificity</b></em>' attribute.
+	 * The default value is <code>"-1"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Specificity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Specificity</em>' attribute.
+	 * @see #setSpecificity(int)
+	 * @generated NOT
+	 */
+	public int getSpecificity() {
+		if (specificity == -1) {
+			calculateSpecificity();
+		}
+		return specificity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.RULE__INPUT_EXPRESSION:
+				return ((InternalEList<?>)getInputExpression()).basicRemove(otherEnd, msgs);
+			case FlammPackage.RULE__OUTPUT_EXPRESSION:
+				return ((InternalEList<?>)getOutputExpression()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	protected void calculateSpecificity() {
+		int calculatedSpecificity = 0;
+		for (Expression inputExpression : inputExpression) {
+			if (!expressionContainsVariableOrWildcard(inputExpression)) {
+				calculatedSpecificity++;
+			}
+		}
+		this.specificity = calculatedSpecificity;
+	}
+	
+	private boolean expressionContainsVariableOrWildcard(Expression expression) {
+		for (Failure failure : expression.getFailures()) {
+			if (FailureType.WILDCARD == failure.getType() || FailureType.VARIABLE == failure.getType()) {
+				return true;
+			}
+		}
+		return false;
+	}
+
+	/**
+	 * Check if the list of failures are matched by this rule.
+	 * @param failuresetToMatch list of PortFailureTuples to check
+	 * @return <code>true</code> if this rule is covering the failuresetToMatch failures
+	 */
+	public boolean matchFailure(List<PortFailureTuple> failuresetToMatch) {
+		variableAssignments.clear();
+		for (PortFailureTuple failureTupleToMatch : failuresetToMatch) {
+			Expression portInputExpression = getInputExpressionForPort(failureTupleToMatch.getPort());
+			if (portInputExpression == null || portInputExpression.getFailures().isEmpty()) {
+				// port not present in this transformation rule
+				// treat as wildcard
+				if (FlaSystem.treatUnmentionedPortsAsWildcards()){
+					continue;
+				} else {
+					// TODO: warn user
+					return false;
+				}
+			}
+			
+			List<Failure> rulePortFailures = portInputExpression.getFailures();
+			boolean match = false;
+			for (Failure ruleFailure : rulePortFailures) {
+				if (ruleFailure.getType() == FailureType.WILDCARD) {
+					match = true;
+					break;
+				} else if (ruleFailure.getType() == FailureType.VARIABLE) {
+					Failure prevVariableAssignment = variableAssignments.get(ruleFailure.getId());
+					if (prevVariableAssignment != null && ! prevVariableAssignment.isSameFailure(failureTupleToMatch.getFailure())) {
+						// The same variable cannot map to different failure types simultaneously
+						continue;
+					}
+					variableAssignments.put(ruleFailure.getId(), failureTupleToMatch.getFailure());
+					match = true;
+					break;
+				} else if (ruleFailure.isSameFailure(failureTupleToMatch.getFailure())) {
+					match = true;
+					break;
+				}
+			}
+			if (!match) {
+				// Failure is not matched with rule for current port.
+				return false;
+			}
+		}
+		return true;
+	}
+	
+	protected Expression getInputExpressionForPort(Port port) {
+		return getExpressionForPort(inputExpression, port);
+	}
+	
+	protected Expression getOutputExpressionForPort(Port port) {
+		return getExpressionForPort(outputExpression, port);
+	}
+	
+	private Expression getExpressionForPort(List<Expression> expressions, Port port) {
+		if (port != null) {
+			for (Expression expression : expressions) {
+				if (port.equals(expression.getPort())) {
+					return expression;
+				}
+			}
+		}
+		return null;
+	}
+	
+	/**
+	 * Transform and propagate failures to the output ports according to this rule.
+	 */
+	public void fire() {
+		for (Expression expression : getOutputExpression()) {
+			Port port = expression.getPort();
+			for (Failure failure : expression.getFailures()) {
+				if (failure.getType() == FailureType.VARIABLE) {
+					port.addFailure(variableAssignments.get(failure.getId()));
+				} else {
+					port.addFailure(failure);
+				}
+			}
+		}
+	}
+
+	/**
+	 * Transform and propagate failures to the output ports according to this rule.
+	 */
+	public void fire(Collection<Failure> previousFailures) {
+		for (Expression expression : getOutputExpression()) {
+			Port port = expression.getPort();
+			for (Failure failure : expression.getFailures()) {
+				if (failure.getType() == FailureType.VARIABLE) {
+					port.addFailure(variableAssignments.get(failure.getId()), previousFailures);
+				} else {
+					port.addFailure(failure, previousFailures);
+				}
+			}
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.RULE__INPUT_EXPRESSION:
+				return getInputExpression();
+			case FlammPackage.RULE__OUTPUT_EXPRESSION:
+				return getOutputExpression();
+			case FlammPackage.RULE__SPECIFICITY:
+				return getSpecificity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.RULE__INPUT_EXPRESSION:
+				getInputExpression().clear();
+				getInputExpression().addAll((Collection<? extends Expression>)newValue);
+				return;
+			case FlammPackage.RULE__OUTPUT_EXPRESSION:
+				getOutputExpression().clear();
+				getOutputExpression().addAll((Collection<? extends Expression>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.RULE__INPUT_EXPRESSION:
+				getInputExpression().clear();
+				return;
+			case FlammPackage.RULE__OUTPUT_EXPRESSION:
+				getOutputExpression().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.RULE__INPUT_EXPRESSION:
+				return inputExpression != null && !inputExpression.isEmpty();
+			case FlammPackage.RULE__OUTPUT_EXPRESSION:
+				return outputExpression != null && !outputExpression.isEmpty();
+			case FlammPackage.RULE__SPECIFICITY:
+				return specificity != SPECIFICITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (specificity: ");
+		result.append(specificity);
+		result.append(')');
+		return result.toString();
+	}
+
+} // Rule
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/SimpleComponent.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/SimpleComponent.java
new file mode 100644
index 0000000..87efe3b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/SimpleComponent.java
@@ -0,0 +1,366 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.BasicInternalEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+
+import com.google.common.collect.Sets;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flamm.SimpleComponent#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleComponent extends Component {
+	/**
+	 * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRules()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Rule> rules;
+
+	List<Set<PortFailureTuple>> propagatedInputPortFailures = null;
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SimpleComponent() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlammPackage.Literals.SIMPLE_COMPONENT;
+	}
+
+	/**
+	 * Returns the value of the '<em><b>Rules</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flamm.Rule}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rules</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rules</em>' containment reference list.
+	 * @generated
+	 */
+	public List<Rule> getRules() {
+		if (rules == null) {
+			rules = new BasicInternalEList<Rule>(Rule.class);
+		}
+		return rules;
+	}
+	
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+				return ((InternalEList<?>)getInputPorts()).basicRemove(otherEnd, msgs);
+			case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+				return ((InternalEList<?>)getOutputPorts()).basicRemove(otherEnd, msgs);
+			case FlammPackage.SIMPLE_COMPONENT__PARENT:
+				return basicSetParent(null, msgs);
+			case FlammPackage.SIMPLE_COMPONENT__RULES:
+				return ((InternalEList<?>)getRules()).basicRemove(otherEnd, msgs);
+		}
+		return eDynamicInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	private List<Set<PortFailureTuple>> getPropagatedInputPortFailures() {
+		if (propagatedInputPortFailures == null) {
+			propagatedInputPortFailures = new ArrayList<Set<PortFailureTuple>>();
+			for (int i = 0; i < getInputPorts().size(); i++) {
+				propagatedInputPortFailures.add(new HashSet<PortFailureTuple>());
+			}
+		}
+		return propagatedInputPortFailures;
+	}
+	
+	@Override
+	public void propagateFailures() {
+		propagateInputFailures();
+		propagateOutputFailures();
+	}
+	
+	/**
+	 * Calculates Cartesian product (cross product / all combinations) for the input ports failures.<br/>
+	 * These combinations are used to match and fire transformation rules.
+	 * <p>The combinations of propagated combinations are updated.
+	 */
+	void propagateInputFailures() {
+		
+		for (int i = 0; i < inputPorts.size(); i++) {
+			Port port = inputPorts.get(i);
+			Set<PortFailureTuple> newPortFailures = PortFailureTuple.fromCollection(port, port.getNewFailures());
+			Set<PortFailureTuple> oldPortFailures = getPropagatedInputPortFailures().get(i);
+			propagatedInputPortFailures.set(i, newPortFailures);
+			Set<List<PortFailureTuple>> newFailureCombinations = getNewInputFailureCombinations(propagatedInputPortFailures);
+			for (List<PortFailureTuple> portFailureCombination : newFailureCombinations) {
+				propagateFailureCombination(portFailureCombination);
+			}
+			port.clearNewFailures();
+			propagatedInputPortFailures.set(i, Sets.union(oldPortFailures, newPortFailures));
+		}
+	}
+	
+	/**
+	 * New failures on output ports are propagated to all connected ports.
+	 */
+	protected void propagateOutputFailures() {
+		for (Port port : outputPorts) {
+			for (Failure failure : port.getNewFailures()) {
+				for (Port connectedPort : port.getConnectedPorts()) {
+					if (connectedPort.addFailure(failure, failure)) {
+						FlaSystem.addUpdatedComponent(connectedPort.getOwner());
+					}
+				}
+			}
+			port.clearNewFailures();
+		}
+	}
+	
+	Set<List<PortFailureTuple>> getNewInputFailureCombinations(List<Set<PortFailureTuple>> failures) {
+		Set<List<PortFailureTuple>> failureCombinations = Sets.cartesianProduct(failures);
+		return failureCombinations;
+	}
+	
+	/**
+	 * Propagates a list of port-failure combinations via transformation rules to corresponding output ports.
+	 * <p>If no rule matches {@link #HandleUnmatchedFailureCombination} is called.
+	 * @param failuresetToMatch
+	 */
+	void propagateFailureCombination(List<PortFailureTuple> failuresetToMatch) {
+		List<Rule> rules = getMostSpecificMatchingRules(failuresetToMatch);
+		if (rules != null && !rules.isEmpty()) {
+			List<Failure> previousFailures = portfailuresToFailureList(failuresetToMatch);
+			for(Rule rule : rules) {
+				rule.fire(previousFailures);
+			}
+		} else {
+			HandleUnmatchedFailureCombination(failuresetToMatch);
+		}
+	}
+	
+	List<Failure> portfailuresToFailureList(List<PortFailureTuple> failureSet) {
+		List<Failure> failures = new ArrayList<Failure>();
+		for (PortFailureTuple portFailure : failureSet) {
+			failures.add(portFailure.getFailure());
+		}
+		return failures;
+	}
+
+	protected void HandleUnmatchedFailureCombination(List<PortFailureTuple> failuresetToMatch) {
+		if (FlaSystem.propagateUnmatchedFailures()) {
+			for (Port port : outputPorts) {
+				for (PortFailureTuple portFailure : failuresetToMatch) {
+					port.addFailure(portFailure.getFailure(), portFailure.getFailure());
+				}
+			}
+		} else {
+			// TODO: alert user
+			log("Unmatched failure set: " + failuresetToMatch);
+		}
+	}
+
+	List<Rule> getMostSpecificMatchingRules(List<PortFailureTuple> failuresetToMatch) {
+		List<Rule> matchingRules = getAllMatchingRules(failuresetToMatch);
+		if (matchingRules == null || matchingRules.isEmpty()) {
+			return null;
+		}
+		
+		int highestSpecificity = matchingRules.get(0).getSpecificity();
+		for (Rule matchingRule : matchingRules) {
+			if (matchingRule.getSpecificity() > highestSpecificity) {
+				highestSpecificity = matchingRule.getSpecificity();
+			}
+		}
+		
+		List<Rule> mostSpecificRules = new ArrayList<Rule>();
+		for (Rule matchingRule : matchingRules) {
+			if (matchingRule.getSpecificity() == highestSpecificity) {
+				mostSpecificRules.add(matchingRule);
+			}
+		}
+		return mostSpecificRules;
+	}
+	
+	List<Rule> getAllMatchingRules(List<PortFailureTuple> failuresetToMatch) {
+		List<Rule> matchingRules = new ArrayList<Rule>();
+		if (this.rules != null) {
+			for (Rule rule : rules) {
+				if (rule.matchFailure(failuresetToMatch)) {
+					matchingRules.add(rule);
+				}
+			}
+		}
+		
+		return matchingRules;
+	}
+	
+	protected void log(String message) {
+		// TODO: implement
+//		if (logger != null) {
+//			logger.logWarning(message);
+//		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlammPackage.SIMPLE_COMPONENT__ID:
+				return getId();
+			case FlammPackage.SIMPLE_COMPONENT__NAME:
+				return getName();
+			case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+				return getInputPorts();
+			case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+				return getOutputPorts();
+			case FlammPackage.SIMPLE_COMPONENT__PARENT:
+				return getParent();
+			case FlammPackage.SIMPLE_COMPONENT__RULES:
+				return getRules();
+		}
+		return eDynamicGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlammPackage.SIMPLE_COMPONENT__ID:
+				setId((String)newValue);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__NAME:
+				setName((String)newValue);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+				getInputPorts().clear();
+				getInputPorts().addAll((Collection<? extends Port>)newValue);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+				getOutputPorts().clear();
+				getOutputPorts().addAll((Collection<? extends Port>)newValue);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__PARENT:
+				setParent((CompositeComponent)newValue);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__RULES:
+				getRules().clear();
+				getRules().addAll((Collection<? extends Rule>)newValue);
+				return;
+		}
+		eDynamicSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlammPackage.SIMPLE_COMPONENT__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+				getInputPorts().clear();
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+				getOutputPorts().clear();
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__PARENT:
+				setParent((CompositeComponent)null);
+				return;
+			case FlammPackage.SIMPLE_COMPONENT__RULES:
+				getRules().clear();
+				return;
+		}
+		eDynamicUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlammPackage.SIMPLE_COMPONENT__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+			case FlammPackage.SIMPLE_COMPONENT__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case FlammPackage.SIMPLE_COMPONENT__INPUT_PORTS:
+				return inputPorts != null && !inputPorts.isEmpty();
+			case FlammPackage.SIMPLE_COMPONENT__OUTPUT_PORTS:
+				return outputPorts != null && !outputPorts.isEmpty();
+			case FlammPackage.SIMPLE_COMPONENT__PARENT:
+				return getParent() != null;
+			case FlammPackage.SIMPLE_COMPONENT__RULES:
+				return rules != null && !rules.isEmpty();
+		}
+		return eDynamicIsSet(featureID);
+	}
+
+} // SimpleComponent
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaLogger.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaLogger.java
new file mode 100644
index 0000000..22d98c9
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaLogger.java
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.analysis;
+
+import java.util.List;
+
+public interface FlaLogger {
+
+	public void logError(String message);
+	
+	public void logWarning(String message);
+	
+	public List<String> getErrors();
+	
+	public List<String> getWarnings();
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaSystem.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaSystem.java
new file mode 100644
index 0000000..6231467
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/FlaSystem.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.analysis;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import org.polarsys.chess.fla.flamm.*;
+
+public class FlaSystem {
+	Component rootComponent;
+	boolean propagateUnmatchedFailures = true;
+	boolean treatUnmentionedPortsAsWildcards = true;
+	boolean initToNoFailure = true;
+	
+	public Component getRootComponent() {
+		return rootComponent;
+	}
+
+	protected void setRootComponent(Component rootComponent) {
+		this.rootComponent = rootComponent;
+	}
+	
+	public FlaSystem() {
+		// Default constructor
+	}
+	
+	public FlaSystem(Component rootComponent) {
+		this.rootComponent = rootComponent;
+	}
+	
+	/**
+	 * Should all connections (input ports) be initialized with a noFailure token?<br/>
+	 * Default: <code>true</code>
+	 * @param initToNoFailure
+	 */
+	public void initializeNoFailure(boolean initToNoFailure) {
+		this.initToNoFailure = initToNoFailure;
+	}
+	
+	/**
+	 * Should unmatched errors be propagated to all output ports?<br/>
+	 * Default: <code>true</code>
+	 * @param propagateUnmatchedFailures
+	 */
+	public void propagateUnmatchedFailures(boolean propagateUnmatchedFailures) {
+		this.propagateUnmatchedFailures = propagateUnmatchedFailures;
+	}
+	
+	/**
+	 * Should unmatched errors be propagated to all output ports?<br/>
+	 * Default: <code>true</code>
+	 * @param propagateUnmatchedFailures
+	 */
+	public void treatUnmentionedPortsAsWildcards(boolean treatUnmentionedPortsAsWildcards) {
+		this.treatUnmentionedPortsAsWildcards = treatUnmentionedPortsAsWildcards;
+	}
+	
+	public void performAnalysis(FlaLogger logger) {
+		FlaSystem.staticPropagateUnmatchedFailures = this.propagateUnmatchedFailures;
+		FlaSystem.staticTreatUnmentionedPortsAsWildcards = this.treatUnmentionedPortsAsWildcards;
+		FlaSystem.staticInitToNoFailure = this.initToNoFailure;
+		
+		rootComponent.initialize(this.initToNoFailure);
+		addUpdatedComponent(rootComponent);
+
+		while (!updatedComponents.isEmpty()) {
+			Component updatedComponent = updatedComponents.remove(0);
+			updatedComponent.propagateFailures();
+		}
+	}
+	
+	/* Static methods */
+	
+	private static List<Component> updatedComponents = new LinkedList<Component>();
+	private static boolean staticPropagateUnmatchedFailures;
+	private static boolean staticTreatUnmentionedPortsAsWildcards;
+	private static boolean staticInitToNoFailure;
+	
+	/**
+	 * Should all connections (input ports) be initialized with a noFailure token?<br/>
+	 * Default: <code>true</code>
+	 * @param initToNoFailure
+	 */
+	public static boolean initializeNoFailure() {
+		return FlaSystem.staticInitToNoFailure;
+	}
+	
+	/**
+	 * Should unmatched errors be propagated to all output ports?<br/>
+	 */
+	public static boolean propagateUnmatchedFailures() {
+		return FlaSystem.staticPropagateUnmatchedFailures;
+	}
+	
+	/**
+	 * Should unmatched errors be propagated to all output ports?<br/>
+	 */
+	public static boolean treatUnmentionedPortsAsWildcards() {
+		return FlaSystem.staticTreatUnmentionedPortsAsWildcards;
+	}
+	
+	/**
+	 * Add an updated component to the list to be analyzed.<br/>
+	 * @param updatedComponent updated component.
+	 */
+	public static void addUpdatedComponent(Component updatedComponent) {
+		if (!updatedComponents.contains(updatedComponent)) {
+			updatedComponents.add(updatedComponent);
+		}
+	}
+	
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/SimpleFlaLogger.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/SimpleFlaLogger.java
new file mode 100644
index 0000000..ace26ba
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/analysis/SimpleFlaLogger.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.analysis;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SimpleFlaLogger implements FlaLogger{
+
+	protected List<String> errors = new ArrayList<String>();
+	protected List<String> warnings = new ArrayList<String>();
+	
+	public void logError(String message) {
+		errors.add(message);
+	}
+	
+	public void logWarning(String message) {
+		warnings.add(message);
+	}
+	
+	public List<String> getErrors() {
+		return errors;
+	}
+	
+	public List<String> getWarnings() {
+		return warnings;
+	}
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammAdapterFactory.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammAdapterFactory.java
new file mode 100644
index 0000000..453fb29
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammAdapterFactory.java
@@ -0,0 +1,325 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.polarsys.chess.fla.flamm.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammPackage
+ * @generated
+ */
+public class FlammAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static FlammPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlammAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = FlammPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FlammSwitch<Adapter> modelSwitch =
+		new FlammSwitch<Adapter>() {
+			@Override
+			public Adapter caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
+			}
+			@Override
+			public Adapter caseFlaBehaviour(FlaBehaviour object) {
+				return createFlaBehaviourAdapter();
+			}
+			@Override
+			public Adapter caseComponent(Component object) {
+				return createComponentAdapter();
+			}
+			@Override
+			public Adapter caseCompositeComponent(CompositeComponent object) {
+				return createCompositeComponentAdapter();
+			}
+			@Override
+			public Adapter caseSimpleComponent(SimpleComponent object) {
+				return createSimpleComponentAdapter();
+			}
+			@Override
+			public Adapter casePort(Port object) {
+				return createPortAdapter();
+			}
+			@Override
+			public Adapter caseConnection(Connection object) {
+				return createConnectionAdapter();
+			}
+			@Override
+			public Adapter caseRule(Rule object) {
+				return createRuleAdapter();
+			}
+			@Override
+			public Adapter caseExpression(Expression object) {
+				return createExpressionAdapter();
+			}
+			@Override
+			public Adapter caseFailure(Failure object) {
+				return createFailureAdapter();
+			}
+			@Override
+			public Adapter caseACIDavoidable(ACIDavoidable object) {
+				return createACIDavoidableAdapter();
+			}
+			@Override
+			public Adapter caseACIDmitigation(ACIDmitigation object) {
+				return createACIDmitigationAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.NamedElement
+	 * @generated
+	 */
+	public Adapter createNamedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.FlaBehaviour <em>Fla Behaviour</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.FlaBehaviour
+	 * @generated
+	 */
+	public Adapter createFlaBehaviourAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Component <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.Component
+	 * @generated
+	 */
+	public Adapter createComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.CompositeComponent <em>Composite Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.CompositeComponent
+	 * @generated
+	 */
+	public Adapter createCompositeComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.SimpleComponent <em>Simple Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.SimpleComponent
+	 * @generated
+	 */
+	public Adapter createSimpleComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Port <em>Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.Port
+	 * @generated
+	 */
+	public Adapter createPortAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Connection <em>Connection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.Connection
+	 * @generated
+	 */
+	public Adapter createConnectionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Rule <em>Rule</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.Rule
+	 * @generated
+	 */
+	public Adapter createRuleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Expression <em>Expression</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.Expression
+	 * @generated
+	 */
+	public Adapter createExpressionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.Failure <em>Failure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.Failure
+	 * @generated
+	 */
+	public Adapter createFailureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.ACIDavoidable <em>ACI Davoidable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.ACIDavoidable
+	 * @generated
+	 */
+	public Adapter createACIDavoidableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flamm.ACIDmitigation <em>ACI Dmitigation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flamm.ACIDmitigation
+	 * @generated
+	 */
+	public Adapter createACIDmitigationAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //FlammAdapterFactory
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammReader.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammReader.java
new file mode 100644
index 0000000..0c34091
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammReader.java
@@ -0,0 +1,79 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.polarsys.chess.fla.flamm.Component;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+
+public class FlammReader {
+	
+	private URI uri;
+	private Resource resource = null;
+	private Component rootComponent = null;
+	
+	public FlammReader(URI uri) {
+		this.uri = uri;
+	}
+
+	private boolean readModel() {
+		try {
+			// Initialize and register the .flamm extension to use XMI resource factory
+			FlammPackage.eINSTANCE.eClass();
+			Resource.Factory.Registry registry = Resource.Factory.Registry.INSTANCE;
+			Map<String, Object> extensionMap = registry.getExtensionToFactoryMap();
+			extensionMap.put("flamm", new XMIResourceFactoryImpl());
+
+			// Get the root component from the uri resource
+			ResourceSet resourceSet = new ResourceSetImpl();
+			resource = resourceSet.getResource(uri, true);
+			rootComponent = (Component) resource.getContents().get(0);
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		}
+		return true;
+	}
+
+	public Resource getResource() {
+		if (this.resource == null) {
+			readModel();
+		}
+		return this.resource;
+	}
+
+	public Component getRootComponent() {
+		if (this.rootComponent == null) {
+			readModel();
+		}
+		return this.rootComponent;
+	}
+
+	public boolean saveModel() {
+		try {
+			resource.save(Collections.EMPTY_MAP);
+			return true;
+		} catch (IOException e) {
+			e.printStackTrace();
+			return false;
+		}
+	}
+}
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceFactoryImpl.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceFactoryImpl.java
new file mode 100644
index 0000000..c395e68
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceFactoryImpl.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.util.FlammResourceImpl
+ * @generated
+ */
+public class FlammResourceFactoryImpl extends ResourceFactoryImpl {
+	/**
+	 * Creates an instance of the resource factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlammResourceFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Resource createResource(URI uri) {
+		Resource result = new FlammResourceImpl(uri);
+		return result;
+	}
+
+} //FlammResourceFactoryImpl
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceImpl.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceImpl.java
new file mode 100644
index 0000000..0944074
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammResourceImpl.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.util.FlammResourceFactoryImpl
+ * @generated
+ */
+public class FlammResourceImpl extends XMLResourceImpl {
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param uri the URI of the new resource.
+	 * @generated
+	 */
+	public FlammResourceImpl(URI uri) {
+		super(uri);
+	}
+
+} //FlammResourceImpl
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammSwitch.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammSwitch.java
new file mode 100644
index 0000000..58f6f4e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammSwitch.java
@@ -0,0 +1,359 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.polarsys.chess.fla.flamm.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flamm.FlammPackage
+ * @generated
+ */
+public class FlammSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static FlammPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlammSwitch() {
+		if (modelPackage == null) {
+			modelPackage = FlammPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case FlammPackage.NAMED_ELEMENT: {
+				NamedElement namedElement = (NamedElement)theEObject;
+				T result = caseNamedElement(namedElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.FLA_BEHAVIOUR: {
+				FlaBehaviour flaBehaviour = (FlaBehaviour)theEObject;
+				T result = caseFlaBehaviour(flaBehaviour);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.COMPONENT: {
+				Component component = (Component)theEObject;
+				T result = caseComponent(component);
+				if (result == null) result = caseNamedElement(component);
+				if (result == null) result = caseFlaBehaviour(component);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.COMPOSITE_COMPONENT: {
+				CompositeComponent compositeComponent = (CompositeComponent)theEObject;
+				T result = caseCompositeComponent(compositeComponent);
+				if (result == null) result = caseComponent(compositeComponent);
+				if (result == null) result = caseNamedElement(compositeComponent);
+				if (result == null) result = caseFlaBehaviour(compositeComponent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.SIMPLE_COMPONENT: {
+				SimpleComponent simpleComponent = (SimpleComponent)theEObject;
+				T result = caseSimpleComponent(simpleComponent);
+				if (result == null) result = caseComponent(simpleComponent);
+				if (result == null) result = caseNamedElement(simpleComponent);
+				if (result == null) result = caseFlaBehaviour(simpleComponent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.PORT: {
+				Port port = (Port)theEObject;
+				T result = casePort(port);
+				if (result == null) result = caseNamedElement(port);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.CONNECTION: {
+				Connection connection = (Connection)theEObject;
+				T result = caseConnection(connection);
+				if (result == null) result = caseFlaBehaviour(connection);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.RULE: {
+				Rule rule = (Rule)theEObject;
+				T result = caseRule(rule);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.EXPRESSION: {
+				Expression expression = (Expression)theEObject;
+				T result = caseExpression(expression);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.FAILURE: {
+				Failure failure = (Failure)theEObject;
+				T result = caseFailure(failure);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.ACI_DAVOIDABLE: {
+				ACIDavoidable aciDavoidable = (ACIDavoidable)theEObject;
+				T result = caseACIDavoidable(aciDavoidable);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlammPackage.ACI_DMITIGATION: {
+				ACIDmitigation aciDmitigation = (ACIDmitigation)theEObject;
+				T result = caseACIDmitigation(aciDmitigation);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNamedElement(NamedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fla Behaviour</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Fla Behaviour</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFlaBehaviour(FlaBehaviour object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseComponent(Component object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCompositeComponent(CompositeComponent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSimpleComponent(SimpleComponent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Port</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePort(Port object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Connection</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Connection</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConnection(Connection object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Rule</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Rule</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRule(Rule object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Expression</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Expression</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseExpression(Expression object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Failure</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Failure</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFailure(Failure object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>ACI Davoidable</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>ACI Davoidable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseACIDavoidable(ACIDavoidable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>ACI Dmitigation</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>ACI Dmitigation</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseACIDmitigation(ACIDmitigation object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //FlammSwitch
diff --git a/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammXMLProcessor.java b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammXMLProcessor.java
new file mode 100644
index 0000000..3cb7403
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flamm/src/org/polarsys/chess/fla/flamm/util/FlammXMLProcessor.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.flamm.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlammXMLProcessor extends XMLProcessor {
+
+	/**
+	 * Public constructor to instantiate the helper.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlammXMLProcessor() {
+		super((EPackage.Registry.INSTANCE));
+		FlammPackage.eINSTANCE.eClass();
+	}
+	
+	/**
+	 * Register for "*" and "xml" file extensions the FlammResourceFactoryImpl factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected Map<String, Resource.Factory> getRegistrations() {
+		if (registrations == null) {
+			super.getRegistrations();
+			registrations.put(XML_EXTENSION, new FlammResourceFactoryImpl());
+			registrations.put(STAR_EXTENSION, new FlammResourceFactoryImpl());
+		}
+		return registrations;
+	}
+
+} //FlammXMLProcessor
diff --git a/plugins/org.polarsys.chess.fla.flaxml/.classpath b/plugins/org.polarsys.chess.fla.flaxml/.classpath
new file mode 100644
index 0000000..121e527
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/.project b/plugins/org.polarsys.chess.fla.flaxml/.project
new file mode 100644
index 0000000..9bbf80b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.fla.flaxml</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/plugins/org.polarsys.chess.fla.flaxml/.settings/org.eclipse.jdt.core.prefs b/plugins/org.polarsys.chess.fla.flaxml/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.polarsys.chess.fla.flaxml/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.flaxml/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7e0fe96
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.polarsys.chess.fla.flaxml;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.polarsys.chess.fla.flaxml,
+ org.polarsys.chess.fla.flaxml.impl,
+ org.polarsys.chess.fla.flaxml.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.polarsys.chess.fla.flaxml/about.html b/plugins/org.polarsys.chess.fla.flaxml/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/about.html
@@ -0,0 +1,28 @@
+<!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 14, 2008</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 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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/plugins/org.polarsys.chess.fla.flaxml/build.properties b/plugins/org.polarsys.chess.fla.flaxml/build.properties
new file mode 100644
index 0000000..c1261d8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/build.properties
@@ -0,0 +1,22 @@
+###############################################################################
+#                  CHESS core plugin
+#
+#               Copyright (C) 2011-2015
+#            Mälardalen University, Sweden
+#
+#
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License
+#  v1.0 which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml class diagram.png b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml class diagram.png
new file mode 100644
index 0000000..42fe443
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml class diagram.png
Binary files differ
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.aird b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.aird
new file mode 100644
index 0000000..19be4f3
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.aird
@@ -0,0 +1,1572 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_DZpG4A6CEeWqWv0BcAgUIA" selectedViews="_Dv9VIA6CEeWqWv0BcAgUIA" version="8.1.1">
+  <models xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+  <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+  <models xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+  <ownedViews xmi:type="viewpoint:DRepresentationContainer" xmi:id="_Dv9VIA6CEeWqWv0BcAgUIA" initialized="true">
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_DyH4UA6CEeWqWv0BcAgUIA" name="flaxml class diagram">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_DyIfYA6CEeWqWv0BcAgUIA" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_DyIfYQ6CEeWqWv0BcAgUIA" type="Sirius" element="_DyH4UA6CEeWqWv0BcAgUIA" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_HIsykA6CEeWqWv0BcAgUIA" type="2003" element="_HG7Q8A6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HIuAsA6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HIwc8A6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HIwc8Q6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HIwc8g6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HIsykQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8" italic="true"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIsykg6CEeWqWv0BcAgUIA" x="485" y="145" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HIxEAA6CEeWqWv0BcAgUIA" type="2003" element="_HHAJcA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HIxrEA6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HIxrEQ6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HIxrEg6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HIxrEw6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HIxEAQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIxEAg6CEeWqWv0BcAgUIA" x="85" y="370" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HIySIA6CEeWqWv0BcAgUIA" type="2003" element="_HHAwgA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HIy5MA6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HIzgQA6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HIzgQQ6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HIzgQg6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HIySIQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIySIg6CEeWqWv0BcAgUIA" x="155" y="255" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HIzgQw6CEeWqWv0BcAgUIA" type="2003" element="_HHB-oA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI0HUA6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI0HUQ6CEeWqWv0BcAgUIA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_HI8DIA6CEeWqWv0BcAgUIA" type="3010" element="_HHiU8A6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8DIQ6CEeWqWv0BcAgUIA"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_HI8DIg6CEeWqWv0BcAgUIA" type="3010" element="_HHkKJA6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8DIw6CEeWqWv0BcAgUIA"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_HI8DJA6CEeWqWv0BcAgUIA" type="3010" element="_HHn0hA6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8DJQ6CEeWqWv0BcAgUIA"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_HI8qMA6CEeWqWv0BcAgUIA" type="3010" element="_HHoblA6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qMQ6CEeWqWv0BcAgUIA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI0HUg6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI0HUw6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HIzgRA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HIzgRQ6CEeWqWv0BcAgUIA" x="225" y="490"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI0HVA6CEeWqWv0BcAgUIA" type="2003" element="_HHClsA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI0uYA6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI0uYQ6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI0uYg6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI0uYw6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI0HVQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI0HVg6CEeWqWv0BcAgUIA" x="215" y="370" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI1VcA6CEeWqWv0BcAgUIA" visible="false" type="2003" element="_HHDz0A6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI1Vcw6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI1VdA6CEeWqWv0BcAgUIA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_HI8qMg6CEeWqWv0BcAgUIA" visible="false" type="3010" element="_HHppsA6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qMw6CEeWqWv0BcAgUIA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI1VdQ6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI1Vdg6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI1VcQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI1Vcg6CEeWqWv0BcAgUIA" x="145" y="30" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI18gA6CEeWqWv0BcAgUIA" type="2003" element="_HHEa4A6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI18gw6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI18hA6CEeWqWv0BcAgUIA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_HI8qNA6CEeWqWv0BcAgUIA" type="3010" element="_HHqQwA6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qNQ6CEeWqWv0BcAgUIA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI18hQ6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI18hg6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI18gQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI18gg6CEeWqWv0BcAgUIA" x="685" y="490" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI18hw6CEeWqWv0BcAgUIA" type="2003" element="_HHFB9Q6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI2jkA6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI2jkQ6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI2jkg6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI2jkw6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI18iA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI18iQ6CEeWqWv0BcAgUIA" x="410" y="370" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI2jlA6CEeWqWv0BcAgUIA" type="2003" element="_HHGQEA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI2jlw6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI3KoA6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI3KoQ6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI3Kog6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI2jlQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI2jlg6CEeWqWv0BcAgUIA" x="650" y="370" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI3Kow6CEeWqWv0BcAgUIA" type="2003" element="_HHHeMA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI3Kpg6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI3Kpw6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI3KqA6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI3KqQ6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI3KpA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI3KpQ6CEeWqWv0BcAgUIA" x="655" y="250" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI3xsA6CEeWqWv0BcAgUIA" type="2003" element="_HHIFRQ6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI3xsw6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI3xtA6CEeWqWv0BcAgUIA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_HI8qNg6CEeWqWv0BcAgUIA" type="3010" element="_HHre4A6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI8qNw6CEeWqWv0BcAgUIA"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_HI9RQA6CEeWqWv0BcAgUIA" type="3010" element="_HHsF9A6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI9RQQ6CEeWqWv0BcAgUIA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI3xtQ6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI3xtg6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI3xsQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI3xsg6CEeWqWv0BcAgUIA" x="605" y="30" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI4YwA6CEeWqWv0BcAgUIA" type="2003" element="_HHJ6cA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI4Yww6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI4YxA6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI4YxQ6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI4Yxg6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI4YwQ6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI4Ywg6CEeWqWv0BcAgUIA" x="800" y="370" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI4_0A6CEeWqWv0BcAgUIA" type="2003" element="_HHKhhQ6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI4_0w6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI4_1A6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI4_1Q6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI4_1g6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI4_0Q6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI4_0g6CEeWqWv0BcAgUIA" x="800" y="250" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI4_1w6CEeWqWv0BcAgUIA" type="2003" element="_HHLvoA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI5m4A6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI5m4Q6CEeWqWv0BcAgUIA" type="7004">
+              <children xmi:type="notation:Node" xmi:id="_HI9RQg6CEeWqWv0BcAgUIA" type="3010" element="_HHtUEA6CEeWqWv0BcAgUIA">
+                <layoutConstraint xmi:type="notation:Location" xmi:id="_HI9RQw6CEeWqWv0BcAgUIA"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI5m4g6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI5m4w6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI4_2A6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI4_2Q6CEeWqWv0BcAgUIA" x="395" y="490" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI5m5A6CEeWqWv0BcAgUIA" type="2003" element="_HHMWsA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI5m5w6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI6N8A6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI6N8Q6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI6N8g6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI5m5Q6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI5m5g6CEeWqWv0BcAgUIA" x="405" y="250" height="68"/>
+          </children>
+          <children xmi:type="notation:Node" xmi:id="_HI6N8w6CEeWqWv0BcAgUIA" type="2003" element="_HHNk0A6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HI7cEA6CEeWqWv0BcAgUIA" type="5007"/>
+            <children xmi:type="notation:Node" xmi:id="_HI7cEQ6CEeWqWv0BcAgUIA" type="7004">
+              <styles xmi:type="notation:SortingStyle" xmi:id="_HI7cEg6CEeWqWv0BcAgUIA"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_HI7cEw6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_HI6N9A6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HI6N9Q6CEeWqWv0BcAgUIA" x="460" y="30" height="68"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_DyIfYg6CEeWqWv0BcAgUIA"/>
+          <edges xmi:type="notation:Edge" xmi:id="_HJDX4A6CEeWqWv0BcAgUIA" type="4001" element="_HH1P4A6CEeWqWv0BcAgUIA" source="_HIsykA6CEeWqWv0BcAgUIA" target="_HI3Kow6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJEmAA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJEmAQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJFNEA6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJFNEQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJFNEg6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJFNEw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJDX4Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJDX4g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJDX4w6CEeWqWv0BcAgUIA" points="[59, 46, -111, -89]$[171, 46, 1, -89]$[171, 86, 1, -49]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJLTsA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJL6wA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJL6wQ6CEeWqWv0BcAgUIA" type="4001" element="_HH4TMA6CEeWqWv0BcAgUIA" source="_HIsykA6CEeWqWv0BcAgUIA" target="_HI4_0A6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJMh0A6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJMh0Q6CEeWqWv0BcAgUIA" x="-92" y="-13"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJMh0g6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJMh0w6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJMh1A6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJMh1Q6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJL6wg6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJL6ww6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJL6xA6CEeWqWv0BcAgUIA" points="[59, 17, -256, -88]$[316, 17, 1, -88]$[316, 72, 1, -33]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJMh1g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJMh1w6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJMh2A6CEeWqWv0BcAgUIA" type="4001" element="_HH46TA6CEeWqWv0BcAgUIA" source="_HIxEAA6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJNI4A6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNI4Q6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJNI4g6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNI4w6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJNI5A6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNI5Q6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJMh2Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJMh2g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJMh2w6CEeWqWv0BcAgUIA" points="[-34, -33, -434, 192]$[-34, -213, -434, 12]$[341, -213, -59, 12]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJNI5g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJNI6A6CEeWqWv0BcAgUIA" type="4001" element="_HH5hXA6CEeWqWv0BcAgUIA" source="_HIySIA6CEeWqWv0BcAgUIA" target="_HI0HVA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJNv8A6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNv8Q6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJNv8g6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNv8w6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJNv9A6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJNv9Q6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJNI6Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJNI6g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJNI6w6CEeWqWv0BcAgUIA" points="[475, 231, 475, 231]$[535, 291, 535, 291]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJNv9g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJNv9w6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJNv-A6CEeWqWv0BcAgUIA" type="4001" element="_HH6IbA6CEeWqWv0BcAgUIA" source="_HIySIA6CEeWqWv0BcAgUIA" target="_HIxEAA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJOXAA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJOXAQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJOXAg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJOXAw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJOXBA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJOXBQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJNv-Q6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJNv-g6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJNv-w6CEeWqWv0BcAgUIA" points="[475, 231, 475, 231]$[445, 201, 445, 201]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJOXBg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJOXBw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJOXCA6CEeWqWv0BcAgUIA" type="4001" element="_HH6vfA6CEeWqWv0BcAgUIA" source="_HIzgQw6CEeWqWv0BcAgUIA" target="_HI18hw6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJO-EA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJO-EQ6CEeWqWv0BcAgUIA" x="-51" y="-9"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJO-Eg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJO-Ew6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJO-FA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJO-FQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJOXCQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJOXCg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJOXCw6CEeWqWv0BcAgUIA" points="[-5, 0, -52, 103]$[-5, -100, -52, 3]$[45, -100, -2, 3]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJO-Fg6CEeWqWv0BcAgUIA" id="(0.9102564102564102,0.0)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJO-Fw6CEeWqWv0BcAgUIA" id="(0.025,0.59)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJO-GA6CEeWqWv0BcAgUIA" type="4001" element="_HH7WjA6CEeWqWv0BcAgUIA" source="_HI0HVA6CEeWqWv0BcAgUIA" target="_HIzgQw6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJPlIA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJPlIQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJPlIg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJPlIw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJPlJA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJPlJQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJO-GQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJO-Gg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJO-Gw6CEeWqWv0BcAgUIA" points="[535, 291, 535, 291]$[505, 261, 505, 261]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJPlJg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJPlJw6CEeWqWv0BcAgUIA" id="(0.33974358974358976,0.16)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJPlKA6CEeWqWv0BcAgUIA" visible="false" type="4001" element="_HH8koA6CEeWqWv0BcAgUIA" source="_HI1VcA6CEeWqWv0BcAgUIA" target="_HI6N8w6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJQMMA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQMMQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJQMMg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQMMw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJQMNA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQMNQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJPlKQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJPlKg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJPlKw6CEeWqWv0BcAgUIA" points="[565, 321, 565, 321]$[865, 621, 865, 621]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQMNg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQMNw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJQMOA6CEeWqWv0BcAgUIA" type="4001" element="_HH9LsA6CEeWqWv0BcAgUIA" source="_HI18hw6CEeWqWv0BcAgUIA" target="_HI4_1w6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJQzQA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQzQQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJQzQg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQzQw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJQzRA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJQzRQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJQMOQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJQMOg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJQMOw6CEeWqWv0BcAgUIA" points="[625, 381, 625, 381]$[805, 561, 805, 561]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQzRg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJQzRw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJQzSA6CEeWqWv0BcAgUIA" type="4001" element="_HH9yzA6CEeWqWv0BcAgUIA" source="_HI2jlA6CEeWqWv0BcAgUIA" target="_HI18gA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJRaUA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJRaUQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJRaUg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJRaUw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJRaVA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJRaVQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJQzSQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJQzSg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJQzSw6CEeWqWv0BcAgUIA" points="[655, 411, 655, 411]$[595, 351, 595, 351]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJRaVg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJRaVw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJRaWA6CEeWqWv0BcAgUIA" type="4001" element="_HH_A4A6CEeWqWv0BcAgUIA" source="_HI3Kow6CEeWqWv0BcAgUIA" target="_HI2jlA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJSBYA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJSBYQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJSBYg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJSBYw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJSBZA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJSBZQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJRaWQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJRaWg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJRaWw6CEeWqWv0BcAgUIA" points="[685, 441, 685, 441]$[655, 411, 655, 411]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJSocA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJSocQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJSocg6CEeWqWv0BcAgUIA" type="4001" element="_HIAPAA6CEeWqWv0BcAgUIA" source="_HI4YwA6CEeWqWv0BcAgUIA" target="_HI18gA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJTPgA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJTPgQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJTPgg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJTPgw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJTPhA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJTPhQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJSocw6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJSodA6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJSodQ6CEeWqWv0BcAgUIA" points="[745, 501, 745, 501]$[595, 351, 595, 351]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJT2kA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJT2kQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJT2kg6CEeWqWv0BcAgUIA" type="4001" element="_HIA2EA6CEeWqWv0BcAgUIA" source="_HI4_0A6CEeWqWv0BcAgUIA" target="_HI4YwA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJT2lg6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJT2lw6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJUdoA6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJUdoQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJUdog6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJUdow6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJT2kw6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJT2lA6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJT2lQ6CEeWqWv0BcAgUIA" points="[775, 531, 775, 531]$[745, 501, 745, 501]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJUdpA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJUdpQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJVEsA6CEeWqWv0BcAgUIA" type="4001" element="_HIBdKg6CEeWqWv0BcAgUIA" source="_HI5m5A6CEeWqWv0BcAgUIA" target="_HI18hw6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJVEtA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJVEtQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJVEtg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJVEtw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJVrwA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJVrwQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJVEsQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJVEsg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJVEsw6CEeWqWv0BcAgUIA" points="[835, 591, 835, 591]$[625, 381, 625, 381]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJVrwg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJVrww6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJVrxA6CEeWqWv0BcAgUIA" type="4001" element="_HICEPA6CEeWqWv0BcAgUIA" source="_HI6N8w6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJWS0A6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJWS0Q6CEeWqWv0BcAgUIA" x="-5" y="22"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJWS0g6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJWS0w6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJWS1A6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJWS1Q6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJVrxQ6CEeWqWv0BcAgUIA" routing="Rectilinear" jumpLinkStatus="Above"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJVrxg6CEeWqWv0BcAgUIA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJVrxw6CEeWqWv0BcAgUIA" points="[1, 33, 32, -71]$[1, 82, 32, -22]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJWS1g6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJWS1w6CEeWqWv0BcAgUIA" id="(0.03333333333333333,0.3382352941176471)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJW54A6CEeWqWv0BcAgUIA" type="4001" element="_HIDSUA6CEeWqWv0BcAgUIA" source="_HIsykA6CEeWqWv0BcAgUIA" target="_HI3xsA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJYIAA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJYIAQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJYvEA6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJYvEQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJYvEg6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJYvEw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJW54Q6CEeWqWv0BcAgUIA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJW54g6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJW54w6CEeWqWv0BcAgUIA" points="[0, -49, -5, 91]$[0, -59, -5, 81]$[6, -59, 1, 81]$[6, -91, 1, 49]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJZWIA6CEeWqWv0BcAgUIA" id="(0.5583333333333333,0.01)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJZWIQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJZWIg6CEeWqWv0BcAgUIA" type="4001" element="_HIEgcA6CEeWqWv0BcAgUIA" source="_HIySIA6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJZ9MA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJZ9MQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJZ9Mg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJZ9Mw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJakQA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJakQQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJZWIw6CEeWqWv0BcAgUIA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJZWJA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJZWJQ6CEeWqWv0BcAgUIA" points="[475, 231, 475, 231]$[415, 171, 415, 171]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJakQg6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJakQw6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJakRA6CEeWqWv0BcAgUIA" type="4001" element="_HIFHhg6CEeWqWv0BcAgUIA" source="_HI2jlA6CEeWqWv0BcAgUIA" target="_HI3xsA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJbLUA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJbLUQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJbLUg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJbLUw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJbLVA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJbLVQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJakRQ6CEeWqWv0BcAgUIA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJakRg6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJakRw6CEeWqWv0BcAgUIA" points="[0, -49, 160, 326]$[0, -309, 160, 66]$[-159, -309, 1, 66]$[-159, -326, 1, 49]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJbyYA6CEeWqWv0BcAgUIA" id="(0.8666666666666667,0.01)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJbyYQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJbyYg6CEeWqWv0BcAgUIA" type="4001" element="_HIFulg6CEeWqWv0BcAgUIA" source="_HI4YwA6CEeWqWv0BcAgUIA" target="_HI3xsA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJcZcA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJcZcQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJcZcg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJcZcw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJcZdA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJcZdQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJbyYw6CEeWqWv0BcAgUIA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJbyZA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJbyZQ6CEeWqWv0BcAgUIA" points="[0, -58, 355, 415]$[0, -343, 355, 130]$[-366, -343, -11, 130]$[-366, -375, -11, 98]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJcZdg6CEeWqWv0BcAgUIA" id="(0.11666666666666667,0.02)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJcZdw6CEeWqWv0BcAgUIA" id="(0.6083333333333333,0.0)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_HJdAgA6CEeWqWv0BcAgUIA" type="4001" element="_HIG8sA6CEeWqWv0BcAgUIA" source="_HI5m5A6CEeWqWv0BcAgUIA" target="_HIsykA6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_HJdAhA6CEeWqWv0BcAgUIA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJdAhQ6CEeWqWv0BcAgUIA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJdAhg6CEeWqWv0BcAgUIA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJdAhw6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_HJdAiA6CEeWqWv0BcAgUIA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HJdAiQ6CEeWqWv0BcAgUIA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_HJdAgQ6CEeWqWv0BcAgUIA" routing="Tree"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_HJdAgg6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HJdAgw6CEeWqWv0BcAgUIA" points="[835, 591, 835, 591]$[415, 171, 415, 171]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJdnkA6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_HJdnkQ6CEeWqWv0BcAgUIA" id="(0.5,0.5)"/>
+          </edges>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_HHlYQA6CEeWqWv0BcAgUIA" source="DANNOTATION_CUSTOMIZATION_KEY">
+        <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_HHl_UA6CEeWqWv0BcAgUIA">
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHnNcg6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHpCog6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHqQww6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHre4w6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHsF9w6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:BundledImageDescription" xmi:id="_HHtUEw6CEeWqWv0BcAgUIA" labelFormat="bold" labelExpression="service:render" labelAlignment="LEFT" tooltipExpression="service:renderTooltip" sizeComputationExpression="1">
+            <borderColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <color xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH128w6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH129A6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH129Q6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH46Qg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH46Qw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH46RA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH5hUg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH5hUw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH5hVA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH6IYg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH6IYw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH6IZA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH6vcg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH6vcw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH6vdA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH7Wgg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH7Wgw6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH7WhA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH79kg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH79kw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH79lA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH8kow6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH8kpA6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH8kpQ6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH9ywg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH9yww6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH9yxA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH-Z0g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH-Z0w6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH-Z1A6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HH_n8g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HH_n8w6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HH_n9A6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HIAPAw6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HIAPBA6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HIAPBQ6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HIBdIA6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HIBdIQ6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HIBdIg6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HICEMg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HICEMw6CEeWqWv0BcAgUIA" labelFormat="bold" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HICENA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <computedStyleDescriptions xmi:type="style:EdgeStyleDescription" xmi:id="_HICrQg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" sizeComputationExpression="1" routingStyle="manhattan">
+            <strokeColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            <centerLabelStyleDescription xmi:type="style:CenterLabelStyleDescription" xmi:id="_HICrQw6CEeWqWv0BcAgUIA" showIcon="false" labelExpression="service:render">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+            <endLabelStyleDescription xmi:type="style:EndLabelStyleDescription" xmi:id="_HICrRA6CEeWqWv0BcAgUIA" labelSize="6" showIcon="false" labelExpression="service:eKeysLabel">
+              <labelColor xmi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='dark_blue']"/>
+            </endLabelStyleDescription>
+          </computedStyleDescriptions>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_HHmmYA6CEeWqWv0BcAgUIA">
+            <key xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHnNcA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceId"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHnNcQ6CEeWqWv0BcAgUIA" key="_HHkKJA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHnNcw6CEeWqWv0BcAgUIA" value="_HHnNcg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHpCoA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetId"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHpCoQ6CEeWqWv0BcAgUIA" key="_HHoblA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHpCow6CEeWqWv0BcAgUIA" value="_HHpCog6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHqQwQ6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//Failure/type"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHqQwg6CEeWqWv0BcAgUIA" key="_HHqQwA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHqQxA6CEeWqWv0BcAgUIA" value="_HHqQww6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EClass" href="flaxml.ecore#//Failure"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHre4Q6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/id"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHre4g6CEeWqWv0BcAgUIA" key="_HHre4A6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHre5A6CEeWqWv0BcAgUIA" value="_HHre4w6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHsF9Q6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/name"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHsF9g6CEeWqWv0BcAgUIA" key="_HHsF9A6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHsF-A6CEeWqWv0BcAgUIA" value="_HHsF9w6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HHtUEQ6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EAttribute" href="flaxml.ecore#//RuleString/pattern"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HHtUEg6CEeWqWv0BcAgUIA" key="_HHtUEA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HHtUFA6CEeWqWv0BcAgUIA" value="_HHtUEw6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EClass" href="flaxml.ecore#//RuleString"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+          <cache xmi:type="diagram:DiagramElementMapping2ModelElement" xmi:id="_HH128A6CEeWqWv0BcAgUIA">
+            <key xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH128Q6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//Component/inputPorts"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH128g6CEeWqWv0BcAgUIA" key="_HH1P4A6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH129g6CEeWqWv0BcAgUIA" value="_HH128w6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH46QA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//Component/outputPorts"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH46QQ6CEeWqWv0BcAgUIA" key="_HH4TMA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH46RQ6CEeWqWv0BcAgUIA" value="_HH46Qg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH5hUA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//Components/component"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH5hUQ6CEeWqWv0BcAgUIA" key="_HH46TA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH5hVQ6CEeWqWv0BcAgUIA" value="_HH5hUg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH6IYA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/connections"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH6IYQ6CEeWqWv0BcAgUIA" key="_HH5hXA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH6IZQ6CEeWqWv0BcAgUIA" value="_HH6IYg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH6vcA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/components"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH6vcQ6CEeWqWv0BcAgUIA" key="_HH6IbA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH6vdQ6CEeWqWv0BcAgUIA" value="_HH6vcg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH7WgA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//Connection/rules"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH7WgQ6CEeWqWv0BcAgUIA" key="_HH6vfA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH7WhQ6CEeWqWv0BcAgUIA" value="_HH7Wgg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH79kA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//Connections/connection"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH79kQ6CEeWqWv0BcAgUIA" key="_HH7WjA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH79lQ6CEeWqWv0BcAgUIA" value="_HH79kg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH8koQ6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//DocumentRoot/system"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH8kog6CEeWqWv0BcAgUIA" key="_HH8koA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH8kpg6CEeWqWv0BcAgUIA" value="_HH8kow6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH9ywA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//FptcRules/rule"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH9ywQ6CEeWqWv0BcAgUIA" key="_HH9LsA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH9yxQ6CEeWqWv0BcAgUIA" value="_HH9ywg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH-Z0A6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//InputPort/inputFailure"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH-Z0Q6CEeWqWv0BcAgUIA" key="_HH9yzA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH-Z1Q6CEeWqWv0BcAgUIA" value="_HH-Z0g6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HH_n8A6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//InputPorts/inputPort"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HH_n8Q6CEeWqWv0BcAgUIA" key="_HH_A4A6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HH_n9Q6CEeWqWv0BcAgUIA" value="_HH_n8g6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HIAPAQ6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPort/outputFailure"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HIAPAg6CEeWqWv0BcAgUIA" key="_HIAPAA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HIAPBg6CEeWqWv0BcAgUIA" value="_HIAPAw6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HIA2EQ6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPorts/outputPort"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HIA2Eg6CEeWqWv0BcAgUIA" key="_HIA2EA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HIBdIw6CEeWqWv0BcAgUIA" value="_HIBdIA6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HICEMA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//SimpleComponent/rules"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HICEMQ6CEeWqWv0BcAgUIA" key="_HIBdKg6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HICENQ6CEeWqWv0BcAgUIA" value="_HICEMg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+            <value xmi:type="diagram:ModelElement2ViewVariable" xmi:id="_HICrQA6CEeWqWv0BcAgUIA">
+              <key xmi:type="ecore:EReference" href="flaxml.ecore#//System/component"/>
+              <value xmi:type="diagram:ViewVariable2ContainerVariable" xmi:id="_HICrQQ6CEeWqWv0BcAgUIA" key="_HICEPA6CEeWqWv0BcAgUIA">
+                <value xmi:type="diagram:ContainerVariable2StyleDescription" xmi:id="_HICrRQ6CEeWqWv0BcAgUIA" value="_HICrQg6CEeWqWv0BcAgUIA">
+                  <key xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+                </value>
+              </value>
+            </value>
+          </cache>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HG7Q8A6CEeWqWv0BcAgUIA" name="Component" tooltipText="" outgoingEdges="_HH1P4A6CEeWqWv0BcAgUIA _HH4TMA6CEeWqWv0BcAgUIA _HIDSUA6CEeWqWv0BcAgUIA" incomingEdges="_HH46TA6CEeWqWv0BcAgUIA _HICEPA6CEeWqWv0BcAgUIA _HIEgcA6CEeWqWv0BcAgUIA _HIG8sA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//Component"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Component"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HG-7UA6CEeWqWv0BcAgUIA" labelFormat="italic" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7UQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7Ug6CEeWqWv0BcAgUIA" red="125" green="125" blue="125"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7Uw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HG-7VA6CEeWqWv0BcAgUIA" red="228" green="228" blue="228"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHAJcA6CEeWqWv0BcAgUIA" name="Components" tooltipText="" outgoingEdges="_HH46TA6CEeWqWv0BcAgUIA" incomingEdges="_HH6IbA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//Components"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Components"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHAJcQ6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJcg6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJcw6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJdA6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHAJdQ6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHAwgA6CEeWqWv0BcAgUIA" name="CompositeComponent" tooltipText="" outgoingEdges="_HH5hXA6CEeWqWv0BcAgUIA _HH6IbA6CEeWqWv0BcAgUIA _HIEgcA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//CompositeComponent"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//CompositeComponent"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHBXkA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXkQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXkg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXkw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHBXlA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHB-oA6CEeWqWv0BcAgUIA" name="Connection" tooltipText="" outgoingEdges="_HH6vfA6CEeWqWv0BcAgUIA" incomingEdges="_HH7WjA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Connection"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHB-oQ6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-og6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-ow6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-pA6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHB-pQ6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHiU8A6CEeWqWv0BcAgUIA" name="sourceComponent : String" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceComponent"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceComponent"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHkKIA6CEeWqWv0BcAgUIA" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHkKIQ6CEeWqWv0BcAgUIA"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHkKIg6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHkKIw6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHkKJA6CEeWqWv0BcAgUIA" name="sourceId : String" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceId"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/sourceId"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHn0gA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHnNcg6CEeWqWv0BcAgUIA">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHn0gQ6CEeWqWv0BcAgUIA"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHn0gg6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHn0gw6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHn0hA6CEeWqWv0BcAgUIA" name="targetComponent : String" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetComponent"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetComponent"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHobkA6CEeWqWv0BcAgUIA" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHobkQ6CEeWqWv0BcAgUIA"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHobkg6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHobkw6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHoblA6CEeWqWv0BcAgUIA" name="targetId : String" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetId"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Connection/targetId"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHpCpA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHpCog6CEeWqWv0BcAgUIA">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHpCpQ6CEeWqWv0BcAgUIA"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHpCpg6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHpCpw6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHClsA6CEeWqWv0BcAgUIA" name="Connections" tooltipText="" outgoingEdges="_HH7WjA6CEeWqWv0BcAgUIA" incomingEdges="_HH5hXA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//Connections"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Connections"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHDMwA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMwQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMwg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMww6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDMxA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHDz0A6CEeWqWv0BcAgUIA" name="DocumentRoot" visible="false" tooltipText="" outgoingEdges="_HH8koA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//DocumentRoot"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//DocumentRoot"/>
+        <graphicalFilters xmi:type="diagram:HideFilter" xmi:id="_86ntoA6EEeWqWv0BcAgUIA"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHDz0Q6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz0g6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz0w6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz1A6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHDz1Q6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHppsA6CEeWqWv0BcAgUIA" name="mixed : EFeatureMapEntry" visible="false" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//DocumentRoot/mixed"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//DocumentRoot/mixed"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHppsQ6CEeWqWv0BcAgUIA" labelAlignment="LEFT">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHppsg6CEeWqWv0BcAgUIA"/>
+            <description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']/@style"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHppsw6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHpptA6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHEa4A6CEeWqWv0BcAgUIA" name="Failure" tooltipText="" incomingEdges="_HH9yzA6CEeWqWv0BcAgUIA _HIAPAA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//Failure"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//Failure"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHFB8A6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB8Q6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB8g6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB8w6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFB9A6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHqQwA6CEeWqWv0BcAgUIA" name="type : FailureType = noFailure" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//Failure/type"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//Failure/type"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHq30A6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHqQww6CEeWqWv0BcAgUIA">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHq30Q6CEeWqWv0BcAgUIA"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHq30g6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHq30w6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHFB9Q6CEeWqWv0BcAgUIA" name="FptcRules" tooltipText="" outgoingEdges="_HH9LsA6CEeWqWv0BcAgUIA" incomingEdges="_HH6vfA6CEeWqWv0BcAgUIA _HIBdKg6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//FptcRules"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//FptcRules"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHFpAA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpAQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpAg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpAw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHFpBA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHGQEA6CEeWqWv0BcAgUIA" name="InputPort" tooltipText="" outgoingEdges="_HH9yzA6CEeWqWv0BcAgUIA _HIFHhg6CEeWqWv0BcAgUIA" incomingEdges="_HH_A4A6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//InputPort"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//InputPort"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHG3IA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3IQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3Ig6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3Iw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHG3JA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHHeMA6CEeWqWv0BcAgUIA" name="InputPorts" tooltipText="" outgoingEdges="_HH_A4A6CEeWqWv0BcAgUIA" incomingEdges="_HH1P4A6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//InputPorts"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//InputPorts"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHIFQA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFQQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFQg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFQw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIFRA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHIFRQ6CEeWqWv0BcAgUIA" name="NamedElement" tooltipText="" incomingEdges="_HIDSUA6CEeWqWv0BcAgUIA _HIFHhg6CEeWqWv0BcAgUIA _HIFulg6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//NamedElement"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHIsUA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsUQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsUg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsUw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHIsVA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHre4A6CEeWqWv0BcAgUIA" name="id : String" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/id"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/id"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHsF8A6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHre4w6CEeWqWv0BcAgUIA">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHsF8Q6CEeWqWv0BcAgUIA"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHsF8g6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHsF8w6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHsF9A6CEeWqWv0BcAgUIA" name="name : String" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/name"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//NamedElement/name"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHstAA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHsF9w6CEeWqWv0BcAgUIA">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHstAQ6CEeWqWv0BcAgUIA"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHstAg6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHstAw6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHJ6cA6CEeWqWv0BcAgUIA" name="OutputPort" tooltipText="" outgoingEdges="_HIAPAA6CEeWqWv0BcAgUIA _HIFulg6CEeWqWv0BcAgUIA" incomingEdges="_HIA2EA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPort"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPort"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHKhgA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhgQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhgg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhgw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHKhhA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHKhhQ6CEeWqWv0BcAgUIA" name="OutputPorts" tooltipText="" outgoingEdges="_HIA2EA6CEeWqWv0BcAgUIA" incomingEdges="_HH4TMA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPorts"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPorts"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHLIkA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIkQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIkg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIkw6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLIlA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHLvoA6CEeWqWv0BcAgUIA" name="RuleString" tooltipText="" incomingEdges="_HH9LsA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//RuleString"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//RuleString"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHLvoQ6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvog6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvow6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvpA6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHLvpQ6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+        <ownedElements xmi:type="diagram:DNodeListElement" xmi:id="_HHtUEA6CEeWqWv0BcAgUIA" name="pattern : PatternType" tooltipText="">
+          <target xmi:type="ecore:EAttribute" href="flaxml.ecore#//RuleString/pattern"/>
+          <semanticElements xmi:type="ecore:EAttribute" href="flaxml.ecore#//RuleString/pattern"/>
+          <ownedStyle xmi:type="diagram:BundledImage" xmi:id="_HHt7IA6CEeWqWv0BcAgUIA" labelFormat="bold" labelAlignment="LEFT" description="_HHtUEw6CEeWqWv0BcAgUIA">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHt7IQ6CEeWqWv0BcAgUIA"/>
+            <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHt7Ig6CEeWqWv0BcAgUIA"/>
+            <color xmi:type="viewpoint:RGBValues" xmi:id="_HHt7Iw6CEeWqWv0BcAgUIA"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
+        </ownedElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHMWsA6CEeWqWv0BcAgUIA" name="SimpleComponent" tooltipText="" outgoingEdges="_HIBdKg6CEeWqWv0BcAgUIA _HIG8sA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//SimpleComponent"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//SimpleComponent"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHM9wA6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9wQ6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9wg6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9ww6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHM9xA6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DNodeList" xmi:id="_HHNk0A6CEeWqWv0BcAgUIA" name="System" tooltipText="" outgoingEdges="_HICEPA6CEeWqWv0BcAgUIA" incomingEdges="_HH8koA6CEeWqWv0BcAgUIA" width="12" height="10">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//System"/>
+        <semanticElements xmi:type="ecore:EClass" href="flaxml.ecore#//System"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HHOL4A6CEeWqWv0BcAgUIA" backgroundStyle="Liquid">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL4Q6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL4g6CEeWqWv0BcAgUIA"/>
+          <backgroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL4w6CEeWqWv0BcAgUIA" red="255" green="255" blue="255"/>
+          <foregroundColor xmi:type="viewpoint:RGBValues" xmi:id="_HHOL5A6CEeWqWv0BcAgUIA" red="255" green="252" blue="216"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH1P4A6CEeWqWv0BcAgUIA" name="[1..1] inputPorts" sourceNode="_HG7Q8A6CEeWqWv0BcAgUIA" targetNode="_HHHeMA6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//Component/inputPorts"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Component/inputPorts"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH3sIA6CEeWqWv0BcAgUIA" description="_HH128w6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH3sIQ6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH3sIg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH3sIw6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH3sJA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH3sJQ6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH4TMA6CEeWqWv0BcAgUIA" name="[1..1] outputPorts" sourceNode="_HG7Q8A6CEeWqWv0BcAgUIA" targetNode="_HHKhhQ6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//Component/outputPorts"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Component/outputPorts"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH46Rg6CEeWqWv0BcAgUIA" description="_HH46Qg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH46Rw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH46SA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH46SQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH46Sg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH46Sw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH46TA6CEeWqWv0BcAgUIA" name="[1..*] component" sourceNode="_HHAJcA6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//Components/component"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Components/component"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH5hVg6CEeWqWv0BcAgUIA" description="_HH5hUg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH5hVw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH5hWA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH5hWQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH5hWg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH5hWw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH5hXA6CEeWqWv0BcAgUIA" name="[1..1] connections" sourceNode="_HHAwgA6CEeWqWv0BcAgUIA" targetNode="_HHClsA6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/connections"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/connections"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH6IZg6CEeWqWv0BcAgUIA" description="_HH6IYg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6IZw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH6IaA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6IaQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH6Iag6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6Iaw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH6IbA6CEeWqWv0BcAgUIA" name="[1..1] components" sourceNode="_HHAwgA6CEeWqWv0BcAgUIA" targetNode="_HHAJcA6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/components"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//CompositeComponent/components"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH6vdg6CEeWqWv0BcAgUIA" description="_HH6vcg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6vdw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH6veA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6veQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH6veg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH6vew6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH6vfA6CEeWqWv0BcAgUIA" name="[0..1] rules" sourceNode="_HHB-oA6CEeWqWv0BcAgUIA" targetNode="_HHFB9Q6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//Connection/rules"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Connection/rules"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH7Whg6CEeWqWv0BcAgUIA" description="_HH7Wgg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH7Whw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH7WiA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH7WiQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH7Wig6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH7Wiw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH7WjA6CEeWqWv0BcAgUIA" name="[1..*] connection" sourceNode="_HHClsA6CEeWqWv0BcAgUIA" targetNode="_HHB-oA6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//Connections/connection"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//Connections/connection"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH79lg6CEeWqWv0BcAgUIA" description="_HH79kg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH79lw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH79mA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH79mQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH79mg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH79mw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH8koA6CEeWqWv0BcAgUIA" name="[0..-2] /system" visible="false" sourceNode="_HHDz0A6CEeWqWv0BcAgUIA" targetNode="_HHNk0A6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//DocumentRoot/system"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//DocumentRoot/system"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH8kpw6CEeWqWv0BcAgUIA" description="_HH8kow6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH8kqA6CEeWqWv0BcAgUIA" red="114" green="159" blue="207"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH8kqQ6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH8kqg6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH8kqw6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH8krA6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH9LsA6CEeWqWv0BcAgUIA" name="[1..*] rule" sourceNode="_HHFB9Q6CEeWqWv0BcAgUIA" targetNode="_HHLvoA6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//FptcRules/rule"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//FptcRules/rule"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH9yxg6CEeWqWv0BcAgUIA" description="_HH9ywg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH9yxw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH9yyA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH9yyQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH9yyg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH9yyw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH9yzA6CEeWqWv0BcAgUIA" name="[0..*] inputFailure" sourceNode="_HHGQEA6CEeWqWv0BcAgUIA" targetNode="_HHEa4A6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//InputPort/inputFailure"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//InputPort/inputFailure"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH-Z1g6CEeWqWv0BcAgUIA" description="_HH-Z0g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH-Z1w6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH-Z2A6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH-Z2Q6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH-Z2g6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH-Z2w6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HH_A4A6CEeWqWv0BcAgUIA" name="[0..*] inputPort" sourceNode="_HHHeMA6CEeWqWv0BcAgUIA" targetNode="_HHGQEA6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//InputPorts/inputPort"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//InputPorts/inputPort"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HH_n9g6CEeWqWv0BcAgUIA" description="_HH_n8g6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HH_n9w6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HH_n-A6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH_n-Q6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HH_n-g6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HH_n-w6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIAPAA6CEeWqWv0BcAgUIA" name="[0..*] outputFailure" sourceNode="_HHJ6cA6CEeWqWv0BcAgUIA" targetNode="_HHEa4A6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPort/outputFailure"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPort/outputFailure"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIAPBw6CEeWqWv0BcAgUIA" description="_HIAPAw6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIAPCA6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIAPCQ6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIAPCg6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HIAPCw6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIAPDA6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIA2EA6CEeWqWv0BcAgUIA" name="[0..*] outputPort" sourceNode="_HHKhhQ6CEeWqWv0BcAgUIA" targetNode="_HHJ6cA6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPorts/outputPort"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//OutputPorts/outputPort"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIBdJA6CEeWqWv0BcAgUIA" description="_HIBdIA6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIBdJQ6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIBdJg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIBdJw6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HIBdKA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIBdKQ6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIBdKg6CEeWqWv0BcAgUIA" name="[1..1] rules" sourceNode="_HHMWsA6CEeWqWv0BcAgUIA" targetNode="_HHFB9Q6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//SimpleComponent/rules"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//SimpleComponent/rules"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HICENg6CEeWqWv0BcAgUIA" description="_HICEMg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HICENw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HICEOA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICEOQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HICEOg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICEOw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HICEPA6CEeWqWv0BcAgUIA" name="[0..1] component" sourceNode="_HHNk0A6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EReference" href="flaxml.ecore#//System/component"/>
+        <semanticElements xmi:type="ecore:EReference" href="flaxml.ecore#//System/component"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HICrRg6CEeWqWv0BcAgUIA" description="_HICrQg6CEeWqWv0BcAgUIA" sourceArrow="FillDiamond" routingStyle="manhattan">
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HICrRw6CEeWqWv0BcAgUIA"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HICrSA6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICrSQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+          <endLabelStyle xmi:type="diagram:EndLabelStyle" xmi:id="_HICrSg6CEeWqWv0BcAgUIA" showIcon="false">
+            <customFeatures>labelSize</customFeatures>
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HICrSw6CEeWqWv0BcAgUIA" red="39" green="76" blue="114"/>
+          </endLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIDSUA6CEeWqWv0BcAgUIA" sourceNode="_HG7Q8A6CEeWqWv0BcAgUIA" targetNode="_HHIFRQ6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//Component"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//Component/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HID5YA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HID5YQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HID5Yg6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HID5Yw6CEeWqWv0BcAgUIA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HID5ZA6CEeWqWv0BcAgUIA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HID5ZQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIEgcA6CEeWqWv0BcAgUIA" sourceNode="_HHAwgA6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//CompositeComponent"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//CompositeComponent/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIFHgA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFHgQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIFHgg6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFHgw6CEeWqWv0BcAgUIA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIFHhA6CEeWqWv0BcAgUIA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFHhQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIFHhg6CEeWqWv0BcAgUIA" sourceNode="_HHGQEA6CEeWqWv0BcAgUIA" targetNode="_HHIFRQ6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//InputPort"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//InputPort/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIFukA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFukQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIFukg6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFukw6CEeWqWv0BcAgUIA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIFulA6CEeWqWv0BcAgUIA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIFulQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIFulg6CEeWqWv0BcAgUIA" sourceNode="_HHJ6cA6CEeWqWv0BcAgUIA" targetNode="_HHIFRQ6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//OutputPort"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//OutputPort/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIGVoA6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIGVoQ6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIGVog6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIGVow6CEeWqWv0BcAgUIA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIGVpA6CEeWqWv0BcAgUIA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIGVpQ6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_HIG8sA6CEeWqWv0BcAgUIA" sourceNode="_HHMWsA6CEeWqWv0BcAgUIA" targetNode="_HG7Q8A6CEeWqWv0BcAgUIA">
+        <target xmi:type="ecore:EClass" href="flaxml.ecore#//SimpleComponent"/>
+        <semanticElements xmi:type="ecore:EGenericType" href="flaxml.ecore#//SimpleComponent/@eGenericSuperTypes.0"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_HIG8sQ6CEeWqWv0BcAgUIA" targetArrow="InputClosedArrow" routingStyle="tree">
+          <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+          <strokeColor xmi:type="viewpoint:RGBValues" xmi:id="_HIG8sg6CEeWqWv0BcAgUIA" red="136" green="136" blue="136"/>
+          <beginLabelStyle xmi:type="diagram:BeginLabelStyle" xmi:id="_HIG8sw6CEeWqWv0BcAgUIA" labelFormat="italic" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIG8tA6CEeWqWv0BcAgUIA"/>
+          </beginLabelStyle>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_HIG8tQ6CEeWqWv0BcAgUIA" showIcon="false">
+            <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_HIG8tg6CEeWqWv0BcAgUIA"/>
+          </centerLabelStyle>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_DyH4VQ6CEeWqWv0BcAgUIA"/>
+      <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+      <target xmi:type="ecore:EPackage" href="flaxml.ecore#/"/>
+    </ownedRepresentations>
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_D4dJ0A6CEeWqWv0BcAgUIA" name="type class diagram">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_D4dw4A6CEeWqWv0BcAgUIA" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_D4dw4Q6CEeWqWv0BcAgUIA" type="Sirius" element="_D4dJ0A6CEeWqWv0BcAgUIA" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_D4dw4w6CEeWqWv0BcAgUIA" type="2001" element="_D4dJ0Q6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_D4dw5g6CEeWqWv0BcAgUIA" type="5002">
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_D4dw5w6CEeWqWv0BcAgUIA" y="5"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_D4eX8A6CEeWqWv0BcAgUIA" type="3005" element="_D4dJ0g6CEeWqWv0BcAgUIA">
+              <styles xmi:type="notation:ShapeStyle" xmi:id="_D4eX8Q6CEeWqWv0BcAgUIA" fontName="Segoe UI"/>
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4eX8g6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_D4dw5A6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4dw5Q6CEeWqWv0BcAgUIA" width="672" height="67"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_D4dw4g6CEeWqWv0BcAgUIA"/>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_D4dJ0Q6CEeWqWv0BcAgUIA" width="-1" height="-1">
+        <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+        <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+        <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_D4dJ0g6CEeWqWv0BcAgUIA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_D4dJ0w6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_D4dJ1A6CEeWqWv0BcAgUIA"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_D4dJ1Q6CEeWqWv0BcAgUIA"/>
+      <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+      <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2003/XMLType#/"/>
+    </ownedRepresentations>
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_D4lssA6CEeWqWv0BcAgUIA" name="ecore class diagram">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_D4mTwA6CEeWqWv0BcAgUIA" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_D4mTwQ6CEeWqWv0BcAgUIA" type="Sirius" element="_D4lssA6CEeWqWv0BcAgUIA" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_D4mTww6CEeWqWv0BcAgUIA" type="2001" element="_D4lssQ6CEeWqWv0BcAgUIA">
+            <children xmi:type="notation:Node" xmi:id="_D4m60A6CEeWqWv0BcAgUIA" type="5002">
+              <layoutConstraint xmi:type="notation:Location" xmi:id="_D4m60Q6CEeWqWv0BcAgUIA" y="5"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_D4nh4A6CEeWqWv0BcAgUIA" type="3005" element="_D4lssg6CEeWqWv0BcAgUIA">
+              <styles xmi:type="notation:ShapeStyle" xmi:id="_D4nh4Q6CEeWqWv0BcAgUIA" fontName="Segoe UI"/>
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4nh4g6CEeWqWv0BcAgUIA"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_D4mTxA6CEeWqWv0BcAgUIA" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D4mTxQ6CEeWqWv0BcAgUIA" width="672" height="67"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_D4mTwg6CEeWqWv0BcAgUIA"/>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNode" xmi:id="_D4lssQ6CEeWqWv0BcAgUIA" width="-1" height="-1">
+        <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+        <semanticElements xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+        <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_D4lssg6CEeWqWv0BcAgUIA" showIcon="false" labelPosition="node" workspacePath="/org.eclipse.emf.ecoretools.design/icons/full/back/empty.svg">
+          <labelColor xmi:type="viewpoint:RGBValues" xmi:id="_D4lssw6CEeWqWv0BcAgUIA"/>
+          <description xmi:type="style:WorkspaceImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']/@style"/>
+          <borderColor xmi:type="viewpoint:RGBValues" xmi:id="_D4lstA6CEeWqWv0BcAgUIA"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@nodeMappings[name='Empty%20Diagram']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_D4lstQ6CEeWqWv0BcAgUIA"/>
+      <activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Package']"/>
+      <activatedLayers xmi:type="description_1:AdditionalLayer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@additionalLayers[name='Validation']"/>
+      <target xmi:type="ecore:EPackage" href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+    </ownedRepresentations>
+    <viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
+  </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.ecore b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.ecore
new file mode 100644
index 0000000..8e15dea
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.ecore
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="flaxml" nsURI="http://www.polarsys.org/chess/fla/flaxml" nsPrefix="flaxml">
+  <eClassifiers xsi:type="ecore:EClass" name="Component" abstract="true" eSuperTypes="#//NamedElement">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="component"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPorts" lowerBound="1"
+        eType="#//InputPorts" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="inputPorts"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPorts" lowerBound="1"
+        eType="#//OutputPorts" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="outputPorts"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Components">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="components"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="component" lowerBound="1"
+        upperBound="-1" eType="#//Component" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CompositeComponent" eSuperTypes="#//Component">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="compositeComponent"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="connections" lowerBound="1"
+        eType="#//Connections" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="connections"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="components" lowerBound="1"
+        eType="#//Components" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="components"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Connection">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="connection"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sourceComponent" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="sourceComponent"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="sourceId" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="sourceId"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetComponent" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="targetComponent"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="targetId" lowerBound="1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="targetId"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rules" eType="#//FptcRules"
+        containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Connections">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="connections"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="connection" lowerBound="1"
+        upperBound="-1" eType="#//Connection" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="connection"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="DocumentRoot">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value=""/>
+      <details key="kind" value="mixed"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="mixed" unique="false" upperBound="-1"
+        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EFeatureMapEntry">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="elementWildcard"/>
+        <details key="name" value=":mixed"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xMLNSPrefixMap" upperBound="-1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xmlns:prefix"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="xSISchemaLocation" upperBound="-1"
+        eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EStringToStringMapEntry"
+        transient="true" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="xsi:schemaLocation"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="system" upperBound="-2"
+        eType="#//System" volatile="true" transient="true" derived="true" containment="true"
+        resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="system"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Failure">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="failure"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" lowerBound="1" eType="#//FailureType"
+        unsettable="true">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="type"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EEnum" name="FailureType">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="failureType"/>
+    </eAnnotations>
+    <eLiterals name="noFailure"/>
+    <eLiterals name="late" value="1"/>
+    <eLiterals name="early" value="2"/>
+    <eLiterals name="valueSubtle" value="3"/>
+    <eLiterals name="valueCoarse" value="4"/>
+    <eLiterals name="omission" value="5"/>
+    <eLiterals name="commission" value="6"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="FailureTypeObject" instanceClassName="org.eclipse.emf.common.util.Enumerator">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="failureType:Object"/>
+      <details key="baseType" value="failureType"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FptcRules">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="fptcRules"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rule" lowerBound="1" upperBound="-1"
+        eType="#//RuleString" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="rule"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InputPort" eSuperTypes="#//NamedElement">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="inputPort"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputFailure" upperBound="-1"
+        eType="#//Failure" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="inputFailure"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="InputPorts">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="inputPorts"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="inputPort" upperBound="-1"
+        eType="#//InputPort" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="inputPort"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="NamedElement">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="namedElement"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="id"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2003/XMLType#//String">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="name"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OutputPort" eSuperTypes="#//NamedElement">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="outputPort"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputFailure" upperBound="-1"
+        eType="#//Failure" containment="true" resolveProxies="false"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="OutputPorts">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="outputPorts"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="outputPort" upperBound="-1"
+        eType="#//OutputPort" containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="outputPort"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EDataType" name="PatternType" instanceClassName="java.lang.String">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="pattern_._type"/>
+      <details key="baseType" value="http://www.eclipse.org/emf/2003/XMLType#string"/>
+      <details key="pattern" value="[^>]+\.[^>]+->[^>]+\.[^>]+"/>
+    </eAnnotations>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="RuleString">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="ruleString"/>
+      <details key="kind" value="empty"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="pattern" lowerBound="1"
+        eType="#//PatternType">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="attribute"/>
+        <details key="name" value="pattern"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="SimpleComponent" eSuperTypes="#//Component">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="simpleComponent"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="rules" lowerBound="1" eType="#//FptcRules"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="rules"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="System">
+    <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+      <details key="name" value="system"/>
+      <details key="kind" value="elementOnly"/>
+    </eAnnotations>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="component" eType="#//Component"
+        containment="true" resolveProxies="false">
+      <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
+        <details key="kind" value="element"/>
+        <details key="name" value="component"/>
+        <details key="namespace" value="##targetNamespace"/>
+      </eAnnotations>
+    </eStructuralFeatures>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.genmodel b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.genmodel
new file mode 100644
index 0000000..74d873f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.genmodel
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.polarsys.chess.fla.flaxml/src" modelPluginID="org.polarsys.chess.fla.flaxml"
+    modelName="Flaxml" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.emf.importer.ecore" complianceLevel="8.0" copyrightFields="false"
+    operationReflection="true" importOrganizing="true">
+  <foreignModel>flaxml.ecore</foreignModel>
+  <genPackages prefix="Flaxml" basePackage="org.polarsys.chess.fla" resource="XML"
+      disposableProviderFactory="true" ecorePackage="flaxml.ecore#/" publicationLocation="">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="flaxml.ecore#//FailureType">
+      <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/noFailure"/>
+      <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/late"/>
+      <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/early"/>
+      <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/valueSubtle"/>
+      <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/valueCoarse"/>
+      <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/omission"/>
+      <genEnumLiterals ecoreEnumLiteral="flaxml.ecore#//FailureType/commission"/>
+    </genEnums>
+    <genDataTypes ecoreDataType="flaxml.ecore#//FailureTypeObject"/>
+    <genDataTypes ecoreDataType="flaxml.ecore#//PatternType"/>
+    <genClasses image="false" ecoreClass="flaxml.ecore#//Component">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Component/inputPorts"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Component/outputPorts"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//Components">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Components/component"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//CompositeComponent">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//CompositeComponent/connections"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//CompositeComponent/components"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//Connection">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/sourceComponent"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/sourceId"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/targetComponent"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Connection/targetId"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Connection/rules"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//Connections">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//Connections/connection"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//DocumentRoot">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//DocumentRoot/mixed"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference flaxml.ecore#//DocumentRoot/xMLNSPrefixMap"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference flaxml.ecore#//DocumentRoot/xSISchemaLocation"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//DocumentRoot/system"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//Failure">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//Failure/type"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//FptcRules">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//FptcRules/rule"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//InputPort">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//InputPort/inputFailure"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//InputPorts">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//InputPorts/inputPort"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//NamedElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//NamedElement/id"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//NamedElement/name"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//OutputPort">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//OutputPort/outputFailure"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//OutputPorts">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//OutputPorts/outputPort"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//RuleString">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute flaxml.ecore#//RuleString/pattern"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//SimpleComponent">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//SimpleComponent/rules"/>
+    </genClasses>
+    <genClasses ecoreClass="flaxml.ecore#//System">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference flaxml.ecore#//System/component"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.xsd b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.xsd
new file mode 100644
index 0000000..fdbee31
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/model/flaxml.xsd
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<xsd:schema xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:flaxml="http://www.polarsys.org/chess/fla/flaxml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ecore:nsPrefix="flaxml" ecore:package="org.polarsys.chess.fla.flaxml" targetNamespace="http://www.polarsys.org/chess/fla/flaxml">
+  <xsd:element name="system" type="flaxml:system"/>
+  <xsd:complexType abstract="true" ecore:name="Component" name="component">
+    <xsd:complexContent>
+      <xsd:extension base="flaxml:namedElement">
+        <xsd:sequence>
+          <xsd:element form="qualified" name="inputPorts" type="flaxml:inputPorts"/>
+          <xsd:element form="qualified" name="outputPorts" type="flaxml:outputPorts"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="Components" name="components">
+    <xsd:sequence>
+      <xsd:element form="qualified" maxOccurs="unbounded" name="component" type="flaxml:component"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="CompositeComponent" name="compositeComponent">
+    <xsd:complexContent>
+      <xsd:extension base="flaxml:component">
+        <xsd:sequence>
+          <xsd:element form="qualified" name="connections" type="flaxml:connections"/>
+          <xsd:element form="qualified" name="components" type="flaxml:components"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="Connection" name="connection">
+    <xsd:sequence>
+      <xsd:element ecore:resolveProxies="true" minOccurs="0" name="rules" type="flaxml:fptcRules"/>
+    </xsd:sequence>
+    <xsd:attribute name="sourceComponent" type="xsd:string"/>
+    <xsd:attribute name="sourceId" type="xsd:string" use="required"/>
+    <xsd:attribute name="targetComponent" type="xsd:string"/>
+    <xsd:attribute name="targetId" type="xsd:string" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="Connections" name="connections">
+    <xsd:sequence>
+      <xsd:element form="qualified" maxOccurs="unbounded" name="connection" type="flaxml:connection"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="Failure" name="failure">
+    <xsd:attribute name="type" type="flaxml:failureType" use="required"/>
+  </xsd:complexType>
+  <xsd:simpleType ecore:name="FailureType" name="failureType">
+    <xsd:restriction base="xsd:string">
+      <xsd:enumeration value="noFailure"/>
+      <xsd:enumeration value="late"/>
+      <xsd:enumeration value="early"/>
+      <xsd:enumeration value="valueSubtle"/>
+      <xsd:enumeration value="valueCoarse"/>
+      <xsd:enumeration value="omission"/>
+      <xsd:enumeration value="commission"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:complexType ecore:name="FptcRules" name="fptcRules">
+    <xsd:sequence>
+      <xsd:element form="qualified" maxOccurs="unbounded" name="rule" type="flaxml:ruleString"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="InputPort" name="inputPort">
+    <xsd:complexContent>
+      <xsd:extension base="flaxml:namedElement">
+        <xsd:sequence>
+          <xsd:element form="qualified" maxOccurs="unbounded" minOccurs="0" name="inputFailure" type="flaxml:failure"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="InputPorts" name="inputPorts">
+    <xsd:sequence>
+      <xsd:element form="qualified" maxOccurs="unbounded" minOccurs="0" name="inputPort" type="flaxml:inputPort"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="NamedElement" name="namedElement">
+    <xsd:attribute name="id" type="xsd:string" use="required"/>
+    <xsd:attribute name="name" type="xsd:string" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="OutputPort" name="outputPort">
+    <xsd:complexContent>
+      <xsd:extension base="flaxml:namedElement">
+        <xsd:sequence>
+          <xsd:element maxOccurs="unbounded" minOccurs="0" name="outputFailure" type="flaxml:failure"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="OutputPorts" name="outputPorts">
+    <xsd:sequence>
+      <xsd:element form="qualified" maxOccurs="unbounded" minOccurs="0" name="outputPort" type="flaxml:outputPort"/>
+    </xsd:sequence>
+  </xsd:complexType>
+  <xsd:simpleType ecore:name="PatternType" name="pattern_._type">
+    <xsd:restriction base="xsd:string">
+      <xsd:pattern value="[^&gt;]+\.[^&gt;]+-&gt;[^&gt;]+\.[^&gt;]+"/>
+    </xsd:restriction>
+  </xsd:simpleType>
+  <xsd:complexType ecore:name="RuleString" name="ruleString">
+    <xsd:attribute name="pattern" type="flaxml:pattern_._type" use="required"/>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="SimpleComponent" name="simpleComponent">
+    <xsd:complexContent>
+      <xsd:extension base="flaxml:component">
+        <xsd:sequence>
+          <xsd:element form="qualified" name="rules" type="flaxml:fptcRules"/>
+        </xsd:sequence>
+      </xsd:extension>
+    </xsd:complexContent>
+  </xsd:complexType>
+  <xsd:complexType ecore:name="System" name="system">
+    <xsd:sequence>
+      <xsd:element form="qualified" minOccurs="0" name="component" type="flaxml:component"/>
+    </xsd:sequence>
+  </xsd:complexType>
+</xsd:schema>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/plugin.properties b/plugins/org.polarsys.chess.fla.flaxml/plugin.properties
new file mode 100644
index 0000000..0250386
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/plugin.properties
@@ -0,0 +1,16 @@
+###############################################################################
+#                  CHESS core plugin
+#
+#               Copyright (C) 2011-2015
+#            Mälardalen University, Sweden
+#
+#
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License
+#  v1.0 which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+#
+
+pluginName = Flaxml Model
+providerName = www.example.org
diff --git a/plugins/org.polarsys.chess.fla.flaxml/plugin.xml b/plugins/org.polarsys.chess.fla.flaxml/plugin.xml
new file mode 100644
index 0000000..89b8e77
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/plugin.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated flaxml -->
+      <package
+            uri="http://www.polarsys.org/chess/fla/flaxml"
+            class="org.polarsys.chess.fla.flaxml.FlaxmlPackage"
+            genModel="model/flaxml.genmodel"/>
+   </extension>
+
+   <extension point="org.eclipse.emf.ecore.extension_parser">
+      <!-- @generated flaxml -->
+      <parser
+            type="flaxml"
+            class="org.polarsys.chess.fla.flaxml.util.FlaxmlResourceFactoryImpl"/>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Component.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Component.java
new file mode 100644
index 0000000..545c65c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Component.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Component#getInputPorts <em>Input Ports</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Component#getOutputPorts <em>Output Ports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponent()
+ * @model abstract="true"
+ *        extendedMetaData="name='component' kind='empty'"
+ * @generated
+ */
+public interface Component extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Input Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Input Ports</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Input Ports</em>' containment reference.
+	 * @see #setInputPorts(InputPorts)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponent_InputPorts()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='inputPorts' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	InputPorts getInputPorts();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Component#getInputPorts <em>Input Ports</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Input Ports</em>' containment reference.
+	 * @see #getInputPorts()
+	 * @generated
+	 */
+	void setInputPorts(InputPorts value);
+
+	/**
+	 * Returns the value of the '<em><b>Output Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output Ports</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output Ports</em>' containment reference.
+	 * @see #setOutputPorts(OutputPorts)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponent_OutputPorts()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='outputPorts' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	OutputPorts getOutputPorts();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Component#getOutputPorts <em>Output Ports</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Output Ports</em>' containment reference.
+	 * @see #getOutputPorts()
+	 * @generated
+	 */
+	void setOutputPorts(OutputPorts value);
+
+} // Component
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Components.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Components.java
new file mode 100644
index 0000000..dd77f0f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Components.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Components</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Components#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponents()
+ * @model extendedMetaData="name='components' kind='elementOnly'"
+ * @generated
+ */
+public interface Components extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Component</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Component}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Component</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Component</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getComponents_Component()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='component' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	EList<Component> getComponent();
+
+} // Components
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/CompositeComponent.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/CompositeComponent.java
new file mode 100644
index 0000000..ed98949
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/CompositeComponent.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Composite Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections <em>Connections</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents <em>Components</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getCompositeComponent()
+ * @model extendedMetaData="name='compositeComponent' kind='elementOnly'"
+ * @generated
+ */
+public interface CompositeComponent extends Component {
+	/**
+	 * Returns the value of the '<em><b>Connections</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Connections</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Connections</em>' containment reference.
+	 * @see #setConnections(Connections)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getCompositeComponent_Connections()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='connections' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	Connections getConnections();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections <em>Connections</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Connections</em>' containment reference.
+	 * @see #getConnections()
+	 * @generated
+	 */
+	void setConnections(Connections value);
+
+	/**
+	 * Returns the value of the '<em><b>Components</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Components</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Components</em>' containment reference.
+	 * @see #setComponents(Components)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getCompositeComponent_Components()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='components' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	Components getComponents();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents <em>Components</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Components</em>' containment reference.
+	 * @see #getComponents()
+	 * @generated
+	 */
+	void setComponents(Components value);
+
+} // CompositeComponent
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connection.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connection.java
new file mode 100644
index 0000000..ed3d345
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connection.java
@@ -0,0 +1,174 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connection</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Connection#getSourceComponent <em>Source Component</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Connection#getSourceId <em>Source Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Connection#getTargetComponent <em>Target Component</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Connection#getTargetId <em>Target Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Connection#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection()
+ * @model extendedMetaData="name='connection' kind='empty'"
+ * @generated
+ */
+public interface Connection extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Source Component</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source Component</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Source Component</em>' attribute.
+	 * @see #setSourceComponent(String)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_SourceComponent()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='sourceComponent'"
+	 * @generated
+	 */
+	String getSourceComponent();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceComponent <em>Source Component</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source Component</em>' attribute.
+	 * @see #getSourceComponent()
+	 * @generated
+	 */
+	void setSourceComponent(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Source Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Source Id</em>' attribute.
+	 * @see #setSourceId(String)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_SourceId()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='attribute' name='sourceId'"
+	 * @generated
+	 */
+	String getSourceId();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceId <em>Source Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source Id</em>' attribute.
+	 * @see #getSourceId()
+	 * @generated
+	 */
+	void setSourceId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Target Component</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Target Component</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Target Component</em>' attribute.
+	 * @see #setTargetComponent(String)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_TargetComponent()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String"
+	 *        extendedMetaData="kind='attribute' name='targetComponent'"
+	 * @generated
+	 */
+	String getTargetComponent();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetComponent <em>Target Component</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Target Component</em>' attribute.
+	 * @see #getTargetComponent()
+	 * @generated
+	 */
+	void setTargetComponent(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Target Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Target Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Target Id</em>' attribute.
+	 * @see #setTargetId(String)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_TargetId()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='attribute' name='targetId'"
+	 * @generated
+	 */
+	String getTargetId();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetId <em>Target Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Target Id</em>' attribute.
+	 * @see #getTargetId()
+	 * @generated
+	 */
+	void setTargetId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Rules</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rules</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rules</em>' containment reference.
+	 * @see #setRules(FptcRules)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnection_Rules()
+	 * @model containment="true"
+	 * @generated
+	 */
+	FptcRules getRules();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Connection#getRules <em>Rules</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rules</em>' containment reference.
+	 * @see #getRules()
+	 * @generated
+	 */
+	void setRules(FptcRules value);
+
+} // Connection
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connections.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connections.java
new file mode 100644
index 0000000..014a57a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Connections.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Connections</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Connections#getConnection <em>Connection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnections()
+ * @model extendedMetaData="name='connections' kind='elementOnly'"
+ * @generated
+ */
+public interface Connections extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Connection</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Connection}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Connection</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Connection</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getConnections_Connection()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='connection' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	EList<Connection> getConnection();
+
+} // Connections
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/DocumentRoot.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/DocumentRoot.java
new file mode 100644
index 0000000..84a2b09
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/DocumentRoot.java
@@ -0,0 +1,123 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EMap;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.util.FeatureMap;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem <em>System</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot()
+ * @model extendedMetaData="name='' kind='mixed'"
+ * @generated
+ */
+public interface DocumentRoot extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Mixed</b></em>' attribute list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.util.FeatureMap.Entry}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mixed</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mixed</em>' attribute list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_Mixed()
+	 * @model unique="false" dataType="org.eclipse.emf.ecore.EFeatureMapEntry" many="true"
+	 *        extendedMetaData="kind='elementWildcard' name=':mixed'"
+	 * @generated
+	 */
+	FeatureMap getMixed();
+
+	/**
+	 * Returns the value of the '<em><b>XMLNS Prefix Map</b></em>' map.
+	 * The key is of type {@link java.lang.String},
+	 * and the value is of type {@link java.lang.String},
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>XMLNS Prefix Map</em>' map isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>XMLNS Prefix Map</em>' map.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_XMLNSPrefixMap()
+	 * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
+	 *        extendedMetaData="kind='attribute' name='xmlns:prefix'"
+	 * @generated
+	 */
+	EMap<String, String> getXMLNSPrefixMap();
+
+	/**
+	 * Returns the value of the '<em><b>XSI Schema Location</b></em>' map.
+	 * The key is of type {@link java.lang.String},
+	 * and the value is of type {@link java.lang.String},
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>XSI Schema Location</em>' map isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>XSI Schema Location</em>' map.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_XSISchemaLocation()
+	 * @model mapType="org.eclipse.emf.ecore.EStringToStringMapEntry<org.eclipse.emf.ecore.EString, org.eclipse.emf.ecore.EString>" transient="true"
+	 *        extendedMetaData="kind='attribute' name='xsi:schemaLocation'"
+	 * @generated
+	 */
+	EMap<String, String> getXSISchemaLocation();
+
+	/**
+	 * Returns the value of the '<em><b>System</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>System</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>System</em>' containment reference.
+	 * @see #setSystem(org.polarsys.chess.fla.flaxml.System)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getDocumentRoot_System()
+	 * @model containment="true" upper="-2" transient="true" volatile="true" derived="true"
+	 *        extendedMetaData="kind='element' name='system' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	org.polarsys.chess.fla.flaxml.System getSystem();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem <em>System</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>System</em>' containment reference.
+	 * @see #getSystem()
+	 * @generated
+	 */
+	void setSystem(org.polarsys.chess.fla.flaxml.System value);
+
+} // DocumentRoot
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Failure.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Failure.java
new file mode 100644
index 0000000..bae4c94
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/Failure.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Failure</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFailure()
+ * @model extendedMetaData="name='failure' kind='empty'"
+ * @generated
+ */
+public interface Failure extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.polarsys.chess.fla.flaxml.FailureType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see org.polarsys.chess.fla.flaxml.FailureType
+	 * @see #isSetType()
+	 * @see #unsetType()
+	 * @see #setType(FailureType)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFailure_Type()
+	 * @model unsettable="true" required="true"
+	 *        extendedMetaData="kind='attribute' name='type'"
+	 * @generated
+	 */
+	FailureType getType();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see org.polarsys.chess.fla.flaxml.FailureType
+	 * @see #isSetType()
+	 * @see #unsetType()
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(FailureType value);
+
+	/**
+	 * Unsets the value of the '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSetType()
+	 * @see #getType()
+	 * @see #setType(FailureType)
+	 * @generated
+	 */
+	void unsetType();
+
+	/**
+	 * Returns whether the value of the '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}' attribute is set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return whether the value of the '<em>Type</em>' attribute is set.
+	 * @see #unsetType()
+	 * @see #getType()
+	 * @see #setType(FailureType)
+	 * @generated
+	 */
+	boolean isSetType();
+
+} // Failure
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FailureType.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FailureType.java
new file mode 100644
index 0000000..16a81ac
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FailureType.java
@@ -0,0 +1,355 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>Failure Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFailureType()
+ * @model extendedMetaData="name='failureType'"
+ * @generated
+ */
+public enum FailureType implements Enumerator {
+	/**
+	 * The '<em><b>No Failure</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #NO_FAILURE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	NO_FAILURE(0, "noFailure", "noFailure"),
+
+	/**
+	 * The '<em><b>Late</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LATE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LATE(1, "late", "late"),
+
+	/**
+	 * The '<em><b>Early</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #EARLY_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	EARLY(2, "early", "early"),
+
+	/**
+	 * The '<em><b>Value Subtle</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #VALUE_SUBTLE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	VALUE_SUBTLE(3, "valueSubtle", "valueSubtle"),
+
+	/**
+	 * The '<em><b>Value Coarse</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #VALUE_COARSE_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	VALUE_COARSE(4, "valueCoarse", "valueCoarse"),
+
+	/**
+	 * The '<em><b>Omission</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #OMISSION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	OMISSION(5, "omission", "omission"),
+
+	/**
+	 * The '<em><b>Commission</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #COMMISSION_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	COMMISSION(6, "commission", "commission");
+
+	/**
+	 * The '<em><b>No Failure</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>No Failure</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #NO_FAILURE
+	 * @model name="noFailure"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int NO_FAILURE_VALUE = 0;
+
+	/**
+	 * The '<em><b>Late</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Late</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #LATE
+	 * @model name="late"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LATE_VALUE = 1;
+
+	/**
+	 * The '<em><b>Early</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Early</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #EARLY
+	 * @model name="early"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int EARLY_VALUE = 2;
+
+	/**
+	 * The '<em><b>Value Subtle</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Value Subtle</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #VALUE_SUBTLE
+	 * @model name="valueSubtle"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int VALUE_SUBTLE_VALUE = 3;
+
+	/**
+	 * The '<em><b>Value Coarse</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Value Coarse</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #VALUE_COARSE
+	 * @model name="valueCoarse"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int VALUE_COARSE_VALUE = 4;
+
+	/**
+	 * The '<em><b>Omission</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Omission</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #OMISSION
+	 * @model name="omission"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int OMISSION_VALUE = 5;
+
+	/**
+	 * The '<em><b>Commission</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of '<em><b>Commission</b></em>' literal object isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @see #COMMISSION
+	 * @model name="commission"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int COMMISSION_VALUE = 6;
+
+	/**
+	 * An array of all the '<em><b>Failure Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final FailureType[] VALUES_ARRAY =
+		new FailureType[] {
+			NO_FAILURE,
+			LATE,
+			EARLY,
+			VALUE_SUBTLE,
+			VALUE_COARSE,
+			OMISSION,
+			COMMISSION,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>Failure Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<FailureType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>Failure Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FailureType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FailureType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Failure Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FailureType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			FailureType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>Failure Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FailureType get(int value) {
+		switch (value) {
+			case NO_FAILURE_VALUE: return NO_FAILURE;
+			case LATE_VALUE: return LATE;
+			case EARLY_VALUE: return EARLY;
+			case VALUE_SUBTLE_VALUE: return VALUE_SUBTLE;
+			case VALUE_COARSE_VALUE: return VALUE_COARSE;
+			case OMISSION_VALUE: return OMISSION;
+			case COMMISSION_VALUE: return COMMISSION;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private FailureType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //FailureType
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlFactory.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlFactory.java
new file mode 100644
index 0000000..b44e44b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlFactory.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public interface FlaxmlFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	FlaxmlFactory eINSTANCE = org.polarsys.chess.fla.flaxml.impl.FlaxmlFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Components</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Components</em>'.
+	 * @generated
+	 */
+	Components createComponents();
+
+	/**
+	 * Returns a new object of class '<em>Composite Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Composite Component</em>'.
+	 * @generated
+	 */
+	CompositeComponent createCompositeComponent();
+
+	/**
+	 * Returns a new object of class '<em>Connection</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Connection</em>'.
+	 * @generated
+	 */
+	Connection createConnection();
+
+	/**
+	 * Returns a new object of class '<em>Connections</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Connections</em>'.
+	 * @generated
+	 */
+	Connections createConnections();
+
+	/**
+	 * Returns a new object of class '<em>Document Root</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Document Root</em>'.
+	 * @generated
+	 */
+	DocumentRoot createDocumentRoot();
+
+	/**
+	 * Returns a new object of class '<em>Failure</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Failure</em>'.
+	 * @generated
+	 */
+	Failure createFailure();
+
+	/**
+	 * Returns a new object of class '<em>Fptc Rules</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Fptc Rules</em>'.
+	 * @generated
+	 */
+	FptcRules createFptcRules();
+
+	/**
+	 * Returns a new object of class '<em>Input Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Input Port</em>'.
+	 * @generated
+	 */
+	InputPort createInputPort();
+
+	/**
+	 * Returns a new object of class '<em>Input Ports</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Input Ports</em>'.
+	 * @generated
+	 */
+	InputPorts createInputPorts();
+
+	/**
+	 * Returns a new object of class '<em>Named Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Named Element</em>'.
+	 * @generated
+	 */
+	NamedElement createNamedElement();
+
+	/**
+	 * Returns a new object of class '<em>Output Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Output Port</em>'.
+	 * @generated
+	 */
+	OutputPort createOutputPort();
+
+	/**
+	 * Returns a new object of class '<em>Output Ports</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Output Ports</em>'.
+	 * @generated
+	 */
+	OutputPorts createOutputPorts();
+
+	/**
+	 * Returns a new object of class '<em>Rule String</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Rule String</em>'.
+	 * @generated
+	 */
+	RuleString createRuleString();
+
+	/**
+	 * Returns a new object of class '<em>Simple Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Simple Component</em>'.
+	 * @generated
+	 */
+	SimpleComponent createSimpleComponent();
+
+	/**
+	 * Returns a new object of class '<em>System</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>System</em>'.
+	 * @generated
+	 */
+	System createSystem();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	FlaxmlPackage getFlaxmlPackage();
+
+} //FlaxmlFactory
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlPackage.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlPackage.java
new file mode 100644
index 0000000..4f3883e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FlaxmlPackage.java
@@ -0,0 +1,1815 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface FlaxmlPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "flaxml";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.polarsys.org/chess/fla/flaxml";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "flaxml";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	FlaxmlPackage eINSTANCE = org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl <em>Named Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.NamedElementImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getNamedElement()
+	 * @generated
+	 */
+	int NAMED_ELEMENT = 10;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT__ID = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT__NAME = 1;
+
+	/**
+	 * The number of structural features of the '<em>Named Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT_FEATURE_COUNT = 2;
+
+	/**
+	 * The number of operations of the '<em>Named Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NAMED_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl <em>Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.ComponentImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponent()
+	 * @generated
+	 */
+	int COMPONENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__ID = NAMED_ELEMENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__INPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Output Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT__OUTPUT_PORTS = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentsImpl <em>Components</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.ComponentsImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponents()
+	 * @generated
+	 */
+	int COMPONENTS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Component</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENTS__COMPONENT = 0;
+
+	/**
+	 * The number of structural features of the '<em>Components</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENTS_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Components</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPONENTS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl <em>Composite Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getCompositeComponent()
+	 * @generated
+	 */
+	int COMPOSITE_COMPONENT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT__ID = COMPONENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT__NAME = COMPONENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Output Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Connections</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT__CONNECTIONS = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Components</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT__COMPONENTS = COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Composite Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Composite Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPOSITE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl <em>Connection</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.ConnectionImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnection()
+	 * @generated
+	 */
+	int CONNECTION = 3;
+
+	/**
+	 * The feature id for the '<em><b>Source Component</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTION__SOURCE_COMPONENT = 0;
+
+	/**
+	 * The feature id for the '<em><b>Source Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTION__SOURCE_ID = 1;
+
+	/**
+	 * The feature id for the '<em><b>Target Component</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTION__TARGET_COMPONENT = 2;
+
+	/**
+	 * The feature id for the '<em><b>Target Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTION__TARGET_ID = 3;
+
+	/**
+	 * The feature id for the '<em><b>Rules</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTION__RULES = 4;
+
+	/**
+	 * The number of structural features of the '<em>Connection</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTION_FEATURE_COUNT = 5;
+
+	/**
+	 * The number of operations of the '<em>Connection</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTION_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl <em>Connections</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnections()
+	 * @generated
+	 */
+	int CONNECTIONS = 4;
+
+	/**
+	 * The feature id for the '<em><b>Connection</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTIONS__CONNECTION = 0;
+
+	/**
+	 * The number of structural features of the '<em>Connections</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTIONS_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Connections</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONNECTIONS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl <em>Document Root</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getDocumentRoot()
+	 * @generated
+	 */
+	int DOCUMENT_ROOT = 5;
+
+	/**
+	 * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__MIXED = 0;
+
+	/**
+	 * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = 1;
+
+	/**
+	 * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = 2;
+
+	/**
+	 * The feature id for the '<em><b>System</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT__SYSTEM = 3;
+
+	/**
+	 * The number of structural features of the '<em>Document Root</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT_FEATURE_COUNT = 4;
+
+	/**
+	 * The number of operations of the '<em>Document Root</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DOCUMENT_ROOT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.FailureImpl <em>Failure</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.FailureImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailure()
+	 * @generated
+	 */
+	int FAILURE = 6;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FAILURE__TYPE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Failure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FAILURE_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Failure</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FAILURE_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl <em>Fptc Rules</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFptcRules()
+	 * @generated
+	 */
+	int FPTC_RULES = 7;
+
+	/**
+	 * The feature id for the '<em><b>Rule</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FPTC_RULES__RULE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Fptc Rules</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FPTC_RULES_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Fptc Rules</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FPTC_RULES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortImpl <em>Input Port</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.InputPortImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPort()
+	 * @generated
+	 */
+	int INPUT_PORT = 8;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORT__ID = NAMED_ELEMENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORT__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Input Failure</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORT__INPUT_FAILURE = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Input Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Input Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortsImpl <em>Input Ports</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.InputPortsImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPorts()
+	 * @generated
+	 */
+	int INPUT_PORTS = 9;
+
+	/**
+	 * The feature id for the '<em><b>Input Port</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORTS__INPUT_PORT = 0;
+
+	/**
+	 * The number of structural features of the '<em>Input Ports</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORTS_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Input Ports</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INPUT_PORTS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortImpl <em>Output Port</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.OutputPortImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPort()
+	 * @generated
+	 */
+	int OUTPUT_PORT = 11;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORT__ID = NAMED_ELEMENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORT__NAME = NAMED_ELEMENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Output Failure</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORT__OUTPUT_FAILURE = NAMED_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Output Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORT_FEATURE_COUNT = NAMED_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Output Port</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORT_OPERATION_COUNT = NAMED_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl <em>Output Ports</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPorts()
+	 * @generated
+	 */
+	int OUTPUT_PORTS = 12;
+
+	/**
+	 * The feature id for the '<em><b>Output Port</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORTS__OUTPUT_PORT = 0;
+
+	/**
+	 * The number of structural features of the '<em>Output Ports</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORTS_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Output Ports</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int OUTPUT_PORTS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.RuleStringImpl <em>Rule String</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.RuleStringImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getRuleString()
+	 * @generated
+	 */
+	int RULE_STRING = 13;
+
+	/**
+	 * The feature id for the '<em><b>Pattern</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RULE_STRING__PATTERN = 0;
+
+	/**
+	 * The number of structural features of the '<em>Rule String</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RULE_STRING_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Rule String</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RULE_STRING_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl <em>Simple Component</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSimpleComponent()
+	 * @generated
+	 */
+	int SIMPLE_COMPONENT = 14;
+
+	/**
+	 * The feature id for the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_COMPONENT__ID = COMPONENT__ID;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_COMPONENT__NAME = COMPONENT__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Input Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_COMPONENT__INPUT_PORTS = COMPONENT__INPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Output Ports</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_COMPONENT__OUTPUT_PORTS = COMPONENT__OUTPUT_PORTS;
+
+	/**
+	 * The feature id for the '<em><b>Rules</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_COMPONENT__RULES = COMPONENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Simple Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_COMPONENT_FEATURE_COUNT = COMPONENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Simple Component</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIMPLE_COMPONENT_OPERATION_COUNT = COMPONENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.impl.SystemImpl <em>System</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.impl.SystemImpl
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSystem()
+	 * @generated
+	 */
+	int SYSTEM = 15;
+
+	/**
+	 * The feature id for the '<em><b>Component</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYSTEM__COMPONENT = 0;
+
+	/**
+	 * The number of structural features of the '<em>System</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYSTEM_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>System</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYSTEM_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.FailureType
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureType()
+	 * @generated
+	 */
+	int FAILURE_TYPE = 16;
+
+	/**
+	 * The meta object id for the '<em>Failure Type Object</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.polarsys.chess.fla.flaxml.FailureType
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureTypeObject()
+	 * @generated
+	 */
+	int FAILURE_TYPE_OBJECT = 17;
+
+	/**
+	 * The meta object id for the '<em>Pattern Type</em>' data type.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see java.lang.String
+	 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getPatternType()
+	 * @generated
+	 */
+	int PATTERN_TYPE = 18;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Component <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Component</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Component
+	 * @generated
+	 */
+	EClass getComponent();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.Component#getInputPorts <em>Input Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Input Ports</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Component#getInputPorts()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_InputPorts();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.Component#getOutputPorts <em>Output Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Output Ports</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Component#getOutputPorts()
+	 * @see #getComponent()
+	 * @generated
+	 */
+	EReference getComponent_OutputPorts();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Components <em>Components</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Components</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Components
+	 * @generated
+	 */
+	EClass getComponents();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.Components#getComponent <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Component</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Components#getComponent()
+	 * @see #getComponents()
+	 * @generated
+	 */
+	EReference getComponents_Component();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.CompositeComponent <em>Composite Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Composite Component</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.CompositeComponent
+	 * @generated
+	 */
+	EClass getCompositeComponent();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections <em>Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Connections</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.CompositeComponent#getConnections()
+	 * @see #getCompositeComponent()
+	 * @generated
+	 */
+	EReference getCompositeComponent_Connections();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents <em>Components</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Components</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.CompositeComponent#getComponents()
+	 * @see #getCompositeComponent()
+	 * @generated
+	 */
+	EReference getCompositeComponent_Components();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Connection <em>Connection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Connection</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connection
+	 * @generated
+	 */
+	EClass getConnection();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceComponent <em>Source Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Source Component</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connection#getSourceComponent()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	EAttribute getConnection_SourceComponent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getSourceId <em>Source Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Source Id</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connection#getSourceId()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	EAttribute getConnection_SourceId();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetComponent <em>Target Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Target Component</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connection#getTargetComponent()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	EAttribute getConnection_TargetComponent();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Connection#getTargetId <em>Target Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Target Id</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connection#getTargetId()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	EAttribute getConnection_TargetId();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.Connection#getRules <em>Rules</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Rules</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connection#getRules()
+	 * @see #getConnection()
+	 * @generated
+	 */
+	EReference getConnection_Rules();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Connections <em>Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Connections</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connections
+	 * @generated
+	 */
+	EClass getConnections();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.Connections#getConnection <em>Connection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Connection</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Connections#getConnection()
+	 * @see #getConnections()
+	 * @generated
+	 */
+	EReference getConnections_Connection();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.DocumentRoot <em>Document Root</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Document Root</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.DocumentRoot
+	 * @generated
+	 */
+	EClass getDocumentRoot();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getMixed <em>Mixed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Mixed</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getMixed()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EAttribute getDocumentRoot_Mixed();
+
+	/**
+	 * Returns the meta object for the map '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the map '<em>XMLNS Prefix Map</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getXMLNSPrefixMap()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_XMLNSPrefixMap();
+
+	/**
+	 * Returns the meta object for the map '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getXSISchemaLocation <em>XSI Schema Location</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the map '<em>XSI Schema Location</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getXSISchemaLocation()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_XSISchemaLocation();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem <em>System</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>System</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.DocumentRoot#getSystem()
+	 * @see #getDocumentRoot()
+	 * @generated
+	 */
+	EReference getDocumentRoot_System();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.Failure <em>Failure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Failure</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Failure
+	 * @generated
+	 */
+	EClass getFailure();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.Failure#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.Failure#getType()
+	 * @see #getFailure()
+	 * @generated
+	 */
+	EAttribute getFailure_Type();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.FptcRules <em>Fptc Rules</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fptc Rules</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.FptcRules
+	 * @generated
+	 */
+	EClass getFptcRules();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.FptcRules#getRule <em>Rule</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Rule</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.FptcRules#getRule()
+	 * @see #getFptcRules()
+	 * @generated
+	 */
+	EReference getFptcRules_Rule();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.InputPort <em>Input Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Input Port</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.InputPort
+	 * @generated
+	 */
+	EClass getInputPort();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.InputPort#getInputFailure <em>Input Failure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Input Failure</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.InputPort#getInputFailure()
+	 * @see #getInputPort()
+	 * @generated
+	 */
+	EReference getInputPort_InputFailure();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.InputPorts <em>Input Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Input Ports</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.InputPorts
+	 * @generated
+	 */
+	EClass getInputPorts();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.InputPorts#getInputPort <em>Input Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Input Port</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.InputPorts#getInputPort()
+	 * @see #getInputPorts()
+	 * @generated
+	 */
+	EReference getInputPorts_InputPort();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Named Element</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.NamedElement
+	 * @generated
+	 */
+	EClass getNamedElement();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.NamedElement#getId <em>Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Id</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.NamedElement#getId()
+	 * @see #getNamedElement()
+	 * @generated
+	 */
+	EAttribute getNamedElement_Id();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.NamedElement#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.NamedElement#getName()
+	 * @see #getNamedElement()
+	 * @generated
+	 */
+	EAttribute getNamedElement_Name();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.OutputPort <em>Output Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Output Port</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.OutputPort
+	 * @generated
+	 */
+	EClass getOutputPort();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.OutputPort#getOutputFailure <em>Output Failure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Output Failure</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.OutputPort#getOutputFailure()
+	 * @see #getOutputPort()
+	 * @generated
+	 */
+	EReference getOutputPort_OutputFailure();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.OutputPorts <em>Output Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Output Ports</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.OutputPorts
+	 * @generated
+	 */
+	EClass getOutputPorts();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.polarsys.chess.fla.flaxml.OutputPorts#getOutputPort <em>Output Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Output Port</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.OutputPorts#getOutputPort()
+	 * @see #getOutputPorts()
+	 * @generated
+	 */
+	EReference getOutputPorts_OutputPort();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.RuleString <em>Rule String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Rule String</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.RuleString
+	 * @generated
+	 */
+	EClass getRuleString();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.polarsys.chess.fla.flaxml.RuleString#getPattern <em>Pattern</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Pattern</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.RuleString#getPattern()
+	 * @see #getRuleString()
+	 * @generated
+	 */
+	EAttribute getRuleString_Pattern();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.SimpleComponent <em>Simple Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Simple Component</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.SimpleComponent
+	 * @generated
+	 */
+	EClass getSimpleComponent();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.SimpleComponent#getRules <em>Rules</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Rules</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.SimpleComponent#getRules()
+	 * @see #getSimpleComponent()
+	 * @generated
+	 */
+	EReference getSimpleComponent_Rules();
+
+	/**
+	 * Returns the meta object for class '{@link org.polarsys.chess.fla.flaxml.System <em>System</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>System</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.System
+	 * @generated
+	 */
+	EClass getSystem();
+
+	/**
+	 * Returns the meta object for the containment reference '{@link org.polarsys.chess.fla.flaxml.System#getComponent <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference '<em>Component</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.System#getComponent()
+	 * @see #getSystem()
+	 * @generated
+	 */
+	EReference getSystem_Component();
+
+	/**
+	 * Returns the meta object for enum '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>Failure Type</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.FailureType
+	 * @generated
+	 */
+	EEnum getFailureType();
+
+	/**
+	 * Returns the meta object for data type '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type Object</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Failure Type Object</em>'.
+	 * @see org.polarsys.chess.fla.flaxml.FailureType
+	 * @model instanceClass="org.polarsys.chess.fla.flaxml.FailureType"
+	 *        extendedMetaData="name='failureType:Object' baseType='failureType'"
+	 * @generated
+	 */
+	EDataType getFailureTypeObject();
+
+	/**
+	 * Returns the meta object for data type '{@link java.lang.String <em>Pattern Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for data type '<em>Pattern Type</em>'.
+	 * @see java.lang.String
+	 * @model instanceClass="java.lang.String"
+	 *        extendedMetaData="name='pattern_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string' pattern='[^>]+\\.[^>]+->[^>]+\\.[^>]+'"
+	 * @generated
+	 */
+	EDataType getPatternType();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	FlaxmlFactory getFlaxmlFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl <em>Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.ComponentImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponent()
+		 * @generated
+		 */
+		EClass COMPONENT = eINSTANCE.getComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Input Ports</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENT__INPUT_PORTS = eINSTANCE.getComponent_InputPorts();
+
+		/**
+		 * The meta object literal for the '<em><b>Output Ports</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENT__OUTPUT_PORTS = eINSTANCE.getComponent_OutputPorts();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ComponentsImpl <em>Components</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.ComponentsImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getComponents()
+		 * @generated
+		 */
+		EClass COMPONENTS = eINSTANCE.getComponents();
+
+		/**
+		 * The meta object literal for the '<em><b>Component</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPONENTS__COMPONENT = eINSTANCE.getComponents_Component();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl <em>Composite Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getCompositeComponent()
+		 * @generated
+		 */
+		EClass COMPOSITE_COMPONENT = eINSTANCE.getCompositeComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Connections</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPOSITE_COMPONENT__CONNECTIONS = eINSTANCE.getCompositeComponent_Connections();
+
+		/**
+		 * The meta object literal for the '<em><b>Components</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference COMPOSITE_COMPONENT__COMPONENTS = eINSTANCE.getCompositeComponent_Components();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl <em>Connection</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.ConnectionImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnection()
+		 * @generated
+		 */
+		EClass CONNECTION = eINSTANCE.getConnection();
+
+		/**
+		 * The meta object literal for the '<em><b>Source Component</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONNECTION__SOURCE_COMPONENT = eINSTANCE.getConnection_SourceComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Source Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONNECTION__SOURCE_ID = eINSTANCE.getConnection_SourceId();
+
+		/**
+		 * The meta object literal for the '<em><b>Target Component</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONNECTION__TARGET_COMPONENT = eINSTANCE.getConnection_TargetComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Target Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONNECTION__TARGET_ID = eINSTANCE.getConnection_TargetId();
+
+		/**
+		 * The meta object literal for the '<em><b>Rules</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CONNECTION__RULES = eINSTANCE.getConnection_Rules();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl <em>Connections</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getConnections()
+		 * @generated
+		 */
+		EClass CONNECTIONS = eINSTANCE.getConnections();
+
+		/**
+		 * The meta object literal for the '<em><b>Connection</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CONNECTIONS__CONNECTION = eINSTANCE.getConnections_Connection();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl <em>Document Root</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getDocumentRoot()
+		 * @generated
+		 */
+		EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+		/**
+		 * The meta object literal for the '<em><b>Mixed</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DOCUMENT_ROOT__MIXED = eINSTANCE.getDocumentRoot_Mixed();
+
+		/**
+		 * The meta object literal for the '<em><b>XMLNS Prefix Map</b></em>' map feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DOCUMENT_ROOT__XMLNS_PREFIX_MAP = eINSTANCE.getDocumentRoot_XMLNSPrefixMap();
+
+		/**
+		 * The meta object literal for the '<em><b>XSI Schema Location</b></em>' map feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = eINSTANCE.getDocumentRoot_XSISchemaLocation();
+
+		/**
+		 * The meta object literal for the '<em><b>System</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DOCUMENT_ROOT__SYSTEM = eINSTANCE.getDocumentRoot_System();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.FailureImpl <em>Failure</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.FailureImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailure()
+		 * @generated
+		 */
+		EClass FAILURE = eINSTANCE.getFailure();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FAILURE__TYPE = eINSTANCE.getFailure_Type();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl <em>Fptc Rules</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFptcRules()
+		 * @generated
+		 */
+		EClass FPTC_RULES = eINSTANCE.getFptcRules();
+
+		/**
+		 * The meta object literal for the '<em><b>Rule</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference FPTC_RULES__RULE = eINSTANCE.getFptcRules_Rule();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortImpl <em>Input Port</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.InputPortImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPort()
+		 * @generated
+		 */
+		EClass INPUT_PORT = eINSTANCE.getInputPort();
+
+		/**
+		 * The meta object literal for the '<em><b>Input Failure</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference INPUT_PORT__INPUT_FAILURE = eINSTANCE.getInputPort_InputFailure();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.InputPortsImpl <em>Input Ports</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.InputPortsImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getInputPorts()
+		 * @generated
+		 */
+		EClass INPUT_PORTS = eINSTANCE.getInputPorts();
+
+		/**
+		 * The meta object literal for the '<em><b>Input Port</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference INPUT_PORTS__INPUT_PORT = eINSTANCE.getInputPorts_InputPort();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl <em>Named Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.NamedElementImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getNamedElement()
+		 * @generated
+		 */
+		EClass NAMED_ELEMENT = eINSTANCE.getNamedElement();
+
+		/**
+		 * The meta object literal for the '<em><b>Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NAMED_ELEMENT__ID = eINSTANCE.getNamedElement_Id();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NAMED_ELEMENT__NAME = eINSTANCE.getNamedElement_Name();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortImpl <em>Output Port</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.OutputPortImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPort()
+		 * @generated
+		 */
+		EClass OUTPUT_PORT = eINSTANCE.getOutputPort();
+
+		/**
+		 * The meta object literal for the '<em><b>Output Failure</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference OUTPUT_PORT__OUTPUT_FAILURE = eINSTANCE.getOutputPort_OutputFailure();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl <em>Output Ports</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getOutputPorts()
+		 * @generated
+		 */
+		EClass OUTPUT_PORTS = eINSTANCE.getOutputPorts();
+
+		/**
+		 * The meta object literal for the '<em><b>Output Port</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference OUTPUT_PORTS__OUTPUT_PORT = eINSTANCE.getOutputPorts_OutputPort();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.RuleStringImpl <em>Rule String</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.RuleStringImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getRuleString()
+		 * @generated
+		 */
+		EClass RULE_STRING = eINSTANCE.getRuleString();
+
+		/**
+		 * The meta object literal for the '<em><b>Pattern</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RULE_STRING__PATTERN = eINSTANCE.getRuleString_Pattern();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl <em>Simple Component</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSimpleComponent()
+		 * @generated
+		 */
+		EClass SIMPLE_COMPONENT = eINSTANCE.getSimpleComponent();
+
+		/**
+		 * The meta object literal for the '<em><b>Rules</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SIMPLE_COMPONENT__RULES = eINSTANCE.getSimpleComponent_Rules();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.impl.SystemImpl <em>System</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.impl.SystemImpl
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getSystem()
+		 * @generated
+		 */
+		EClass SYSTEM = eINSTANCE.getSystem();
+
+		/**
+		 * The meta object literal for the '<em><b>Component</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference SYSTEM__COMPONENT = eINSTANCE.getSystem_Component();
+
+		/**
+		 * The meta object literal for the '{@link org.polarsys.chess.fla.flaxml.FailureType <em>Failure Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.FailureType
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureType()
+		 * @generated
+		 */
+		EEnum FAILURE_TYPE = eINSTANCE.getFailureType();
+
+		/**
+		 * The meta object literal for the '<em>Failure Type Object</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.polarsys.chess.fla.flaxml.FailureType
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getFailureTypeObject()
+		 * @generated
+		 */
+		EDataType FAILURE_TYPE_OBJECT = eINSTANCE.getFailureTypeObject();
+
+		/**
+		 * The meta object literal for the '<em>Pattern Type</em>' data type.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see java.lang.String
+		 * @see org.polarsys.chess.fla.flaxml.impl.FlaxmlPackageImpl#getPatternType()
+		 * @generated
+		 */
+		EDataType PATTERN_TYPE = eINSTANCE.getPatternType();
+
+	}
+
+} //FlaxmlPackage
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FptcRules.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FptcRules.java
new file mode 100644
index 0000000..0fe17d8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/FptcRules.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fptc Rules</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.FptcRules#getRule <em>Rule</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFptcRules()
+ * @model extendedMetaData="name='fptcRules' kind='elementOnly'"
+ * @generated
+ */
+public interface FptcRules extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Rule</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flaxml.RuleString}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rule</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rule</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getFptcRules_Rule()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='rule' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	EList<RuleString> getRule();
+
+} // FptcRules
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPort.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPort.java
new file mode 100644
index 0000000..87f7ecb
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPort.java
@@ -0,0 +1,53 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Input Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.InputPort#getInputFailure <em>Input Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPort()
+ * @model extendedMetaData="name='inputPort' kind='elementOnly'"
+ * @generated
+ */
+public interface InputPort extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Input Failure</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Failure}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Input Failure</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Input Failure</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPort_InputFailure()
+	 * @model containment="true"
+	 *        extendedMetaData="kind='element' name='inputFailure' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	EList<Failure> getInputFailure();
+
+} // InputPort
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPorts.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPorts.java
new file mode 100644
index 0000000..1913da8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/InputPorts.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Input Ports</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.InputPorts#getInputPort <em>Input Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPorts()
+ * @model extendedMetaData="name='inputPorts' kind='elementOnly'"
+ * @generated
+ */
+public interface InputPorts extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Input Port</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flaxml.InputPort}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Input Port</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Input Port</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getInputPorts_InputPort()
+	 * @model containment="true"
+	 *        extendedMetaData="kind='element' name='inputPort' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	EList<InputPort> getInputPort();
+
+} // InputPorts
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/NamedElement.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/NamedElement.java
new file mode 100644
index 0000000..90b068e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/NamedElement.java
@@ -0,0 +1,91 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.NamedElement#getId <em>Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.NamedElement#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getNamedElement()
+ * @model extendedMetaData="name='namedElement' kind='empty'"
+ * @generated
+ */
+public interface NamedElement extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Id</em>' attribute.
+	 * @see #setId(String)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getNamedElement_Id()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='attribute' name='id'"
+	 * @generated
+	 */
+	String getId();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.NamedElement#getId <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Id</em>' attribute.
+	 * @see #getId()
+	 * @generated
+	 */
+	void setId(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getNamedElement_Name()
+	 * @model dataType="org.eclipse.emf.ecore.xml.type.String" required="true"
+	 *        extendedMetaData="kind='attribute' name='name'"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.NamedElement#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+} // NamedElement
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPort.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPort.java
new file mode 100644
index 0000000..4322ab5
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPort.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Output Port</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.OutputPort#getOutputFailure <em>Output Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPort()
+ * @model extendedMetaData="name='outputPort' kind='elementOnly'"
+ * @generated
+ */
+public interface OutputPort extends NamedElement {
+	/**
+	 * Returns the value of the '<em><b>Output Failure</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flaxml.Failure}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output Failure</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output Failure</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPort_OutputFailure()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Failure> getOutputFailure();
+
+} // OutputPort
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPorts.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPorts.java
new file mode 100644
index 0000000..dd9738f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/OutputPorts.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Output Ports</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.OutputPorts#getOutputPort <em>Output Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPorts()
+ * @model extendedMetaData="name='outputPorts' kind='elementOnly'"
+ * @generated
+ */
+public interface OutputPorts extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Output Port</b></em>' containment reference list.
+	 * The list contents are of type {@link org.polarsys.chess.fla.flaxml.OutputPort}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output Port</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output Port</em>' containment reference list.
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getOutputPorts_OutputPort()
+	 * @model containment="true"
+	 *        extendedMetaData="kind='element' name='outputPort' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	EList<OutputPort> getOutputPort();
+
+} // OutputPorts
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/RuleString.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/RuleString.java
new file mode 100644
index 0000000..493cd3e
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/RuleString.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Rule String</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.RuleString#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getRuleString()
+ * @model extendedMetaData="name='ruleString' kind='empty'"
+ * @generated
+ */
+public interface RuleString extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Pattern</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pattern</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pattern</em>' attribute.
+	 * @see #setPattern(String)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getRuleString_Pattern()
+	 * @model dataType="org.polarsys.chess.fla.flaxml.PatternType" required="true"
+	 *        extendedMetaData="kind='attribute' name='pattern'"
+	 * @generated
+	 */
+	String getPattern();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.RuleString#getPattern <em>Pattern</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pattern</em>' attribute.
+	 * @see #getPattern()
+	 * @generated
+	 */
+	void setPattern(String value);
+
+} // RuleString
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/SimpleComponent.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/SimpleComponent.java
new file mode 100644
index 0000000..68620fc
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/SimpleComponent.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Simple Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.SimpleComponent#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSimpleComponent()
+ * @model extendedMetaData="name='simpleComponent' kind='elementOnly'"
+ * @generated
+ */
+public interface SimpleComponent extends Component {
+	/**
+	 * Returns the value of the '<em><b>Rules</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rules</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rules</em>' containment reference.
+	 * @see #setRules(FptcRules)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSimpleComponent_Rules()
+	 * @model containment="true" required="true"
+	 *        extendedMetaData="kind='element' name='rules' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	FptcRules getRules();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.SimpleComponent#getRules <em>Rules</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rules</em>' containment reference.
+	 * @see #getRules()
+	 * @generated
+	 */
+	void setRules(FptcRules value);
+
+} // SimpleComponent
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/System.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/System.java
new file mode 100644
index 0000000..8d77383
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/System.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>System</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.System#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSystem()
+ * @model extendedMetaData="name='system' kind='elementOnly'"
+ * @generated
+ */
+public interface System extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Component</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Component</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Component</em>' containment reference.
+	 * @see #setComponent(Component)
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#getSystem_Component()
+	 * @model containment="true"
+	 *        extendedMetaData="kind='element' name='component' namespace='##targetNamespace'"
+	 * @generated
+	 */
+	Component getComponent();
+
+	/**
+	 * Sets the value of the '{@link org.polarsys.chess.fla.flaxml.System#getComponent <em>Component</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Component</em>' containment reference.
+	 * @see #getComponent()
+	 * @generated
+	 */
+	void setComponent(Component value);
+
+} // System
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentImpl.java
new file mode 100644
index 0000000..17ab644
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentImpl.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl#getInputPorts <em>Input Ports</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ComponentImpl#getOutputPorts <em>Output Ports</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public abstract class ComponentImpl extends NamedElementImpl implements Component {
+	/**
+	 * The cached value of the '{@link #getInputPorts() <em>Input Ports</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInputPorts()
+	 * @generated
+	 * @ordered
+	 */
+	protected InputPorts inputPorts;
+
+	/**
+	 * The cached value of the '{@link #getOutputPorts() <em>Output Ports</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutputPorts()
+	 * @generated
+	 * @ordered
+	 */
+	protected OutputPorts outputPorts;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InputPorts getInputPorts() {
+		return inputPorts;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetInputPorts(InputPorts newInputPorts, NotificationChain msgs) {
+		InputPorts oldInputPorts = inputPorts;
+		inputPorts = newInputPorts;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__INPUT_PORTS, oldInputPorts, newInputPorts);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setInputPorts(InputPorts newInputPorts) {
+		if (newInputPorts != inputPorts) {
+			NotificationChain msgs = null;
+			if (inputPorts != null)
+				msgs = ((InternalEObject)inputPorts).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__INPUT_PORTS, null, msgs);
+			if (newInputPorts != null)
+				msgs = ((InternalEObject)newInputPorts).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__INPUT_PORTS, null, msgs);
+			msgs = basicSetInputPorts(newInputPorts, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__INPUT_PORTS, newInputPorts, newInputPorts));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OutputPorts getOutputPorts() {
+		return outputPorts;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetOutputPorts(OutputPorts newOutputPorts, NotificationChain msgs) {
+		OutputPorts oldOutputPorts = outputPorts;
+		outputPorts = newOutputPorts;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__OUTPUT_PORTS, oldOutputPorts, newOutputPorts);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOutputPorts(OutputPorts newOutputPorts) {
+		if (newOutputPorts != outputPorts) {
+			NotificationChain msgs = null;
+			if (outputPorts != null)
+				msgs = ((InternalEObject)outputPorts).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__OUTPUT_PORTS, null, msgs);
+			if (newOutputPorts != null)
+				msgs = ((InternalEObject)newOutputPorts).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPONENT__OUTPUT_PORTS, null, msgs);
+			msgs = basicSetOutputPorts(newOutputPorts, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPONENT__OUTPUT_PORTS, newOutputPorts, newOutputPorts));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+				return basicSetInputPorts(null, msgs);
+			case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+				return basicSetOutputPorts(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+				return getInputPorts();
+			case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+				return getOutputPorts();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+				setInputPorts((InputPorts)newValue);
+				return;
+			case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+				setOutputPorts((OutputPorts)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+				setInputPorts((InputPorts)null);
+				return;
+			case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+				setOutputPorts((OutputPorts)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENT__INPUT_PORTS:
+				return inputPorts != null;
+			case FlaxmlPackage.COMPONENT__OUTPUT_PORTS:
+				return outputPorts != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ComponentImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentsImpl.java
new file mode 100644
index 0000000..d349368
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ComponentsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Components</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ComponentsImpl#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ComponentsImpl extends MinimalEObjectImpl.Container implements Components {
+	/**
+	 * The cached value of the '{@link #getComponent() <em>Component</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Component> component;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ComponentsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.COMPONENTS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Component> getComponent() {
+		if (component == null) {
+			component = new EObjectContainmentEList<Component>(Component.class, this, FlaxmlPackage.COMPONENTS__COMPONENT);
+		}
+		return component;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENTS__COMPONENT:
+				return ((InternalEList<?>)getComponent()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENTS__COMPONENT:
+				return getComponent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENTS__COMPONENT:
+				getComponent().clear();
+				getComponent().addAll((Collection<? extends Component>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENTS__COMPONENT:
+				getComponent().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPONENTS__COMPONENT:
+				return component != null && !component.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ComponentsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/CompositeComponentImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/CompositeComponentImpl.java
new file mode 100644
index 0000000..4a8768a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/CompositeComponentImpl.java
@@ -0,0 +1,251 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Composite Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl#getConnections <em>Connections</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.CompositeComponentImpl#getComponents <em>Components</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CompositeComponentImpl extends ComponentImpl implements CompositeComponent {
+	/**
+	 * The cached value of the '{@link #getConnections() <em>Connections</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConnections()
+	 * @generated
+	 * @ordered
+	 */
+	protected Connections connections;
+
+	/**
+	 * The cached value of the '{@link #getComponents() <em>Components</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComponents()
+	 * @generated
+	 * @ordered
+	 */
+	protected Components components;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CompositeComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.COMPOSITE_COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Connections getConnections() {
+		return connections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetConnections(Connections newConnections, NotificationChain msgs) {
+		Connections oldConnections = connections;
+		connections = newConnections;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, oldConnections, newConnections);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setConnections(Connections newConnections) {
+		if (newConnections != connections) {
+			NotificationChain msgs = null;
+			if (connections != null)
+				msgs = ((InternalEObject)connections).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, null, msgs);
+			if (newConnections != null)
+				msgs = ((InternalEObject)newConnections).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, null, msgs);
+			msgs = basicSetConnections(newConnections, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS, newConnections, newConnections));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Components getComponents() {
+		return components;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetComponents(Components newComponents, NotificationChain msgs) {
+		Components oldComponents = components;
+		components = newComponents;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, oldComponents, newComponents);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setComponents(Components newComponents) {
+		if (newComponents != components) {
+			NotificationChain msgs = null;
+			if (components != null)
+				msgs = ((InternalEObject)components).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, null, msgs);
+			if (newComponents != null)
+				msgs = ((InternalEObject)newComponents).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, null, msgs);
+			msgs = basicSetComponents(newComponents, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS, newComponents, newComponents));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				return basicSetConnections(null, msgs);
+			case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				return basicSetComponents(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				return getConnections();
+			case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				return getComponents();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				setConnections((Connections)newValue);
+				return;
+			case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				setComponents((Components)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				setConnections((Connections)null);
+				return;
+			case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				setComponents((Components)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.COMPOSITE_COMPONENT__CONNECTIONS:
+				return connections != null;
+			case FlaxmlPackage.COMPOSITE_COMPONENT__COMPONENTS:
+				return components != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CompositeComponentImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionImpl.java
new file mode 100644
index 0000000..045cbf4
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionImpl.java
@@ -0,0 +1,415 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Connection</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getSourceComponent <em>Source Component</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getSourceId <em>Source Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getTargetComponent <em>Target Component</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getTargetId <em>Target Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionImpl#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConnectionImpl extends MinimalEObjectImpl.Container implements Connection {
+	/**
+	 * The default value of the '{@link #getSourceComponent() <em>Source Component</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceComponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SOURCE_COMPONENT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSourceComponent() <em>Source Component</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceComponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected String sourceComponent = SOURCE_COMPONENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getSourceId() <em>Source Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SOURCE_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getSourceId() <em>Source Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSourceId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String sourceId = SOURCE_ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTargetComponent() <em>Target Component</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTargetComponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TARGET_COMPONENT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTargetComponent() <em>Target Component</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTargetComponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected String targetComponent = TARGET_COMPONENT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getTargetId() <em>Target Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTargetId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TARGET_ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getTargetId() <em>Target Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTargetId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String targetId = TARGET_ID_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRules()
+	 * @generated
+	 * @ordered
+	 */
+	protected FptcRules rules;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConnectionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.CONNECTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSourceComponent() {
+		return sourceComponent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSourceComponent(String newSourceComponent) {
+		String oldSourceComponent = sourceComponent;
+		sourceComponent = newSourceComponent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__SOURCE_COMPONENT, oldSourceComponent, sourceComponent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSourceId() {
+		return sourceId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSourceId(String newSourceId) {
+		String oldSourceId = sourceId;
+		sourceId = newSourceId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__SOURCE_ID, oldSourceId, sourceId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTargetComponent() {
+		return targetComponent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTargetComponent(String newTargetComponent) {
+		String oldTargetComponent = targetComponent;
+		targetComponent = newTargetComponent;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__TARGET_COMPONENT, oldTargetComponent, targetComponent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getTargetId() {
+		return targetId;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTargetId(String newTargetId) {
+		String oldTargetId = targetId;
+		targetId = newTargetId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__TARGET_ID, oldTargetId, targetId));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FptcRules getRules() {
+		return rules;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRules(FptcRules newRules, NotificationChain msgs) {
+		FptcRules oldRules = rules;
+		rules = newRules;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__RULES, oldRules, newRules);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRules(FptcRules newRules) {
+		if (newRules != rules) {
+			NotificationChain msgs = null;
+			if (rules != null)
+				msgs = ((InternalEObject)rules).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.CONNECTION__RULES, null, msgs);
+			if (newRules != null)
+				msgs = ((InternalEObject)newRules).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.CONNECTION__RULES, null, msgs);
+			msgs = basicSetRules(newRules, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.CONNECTION__RULES, newRules, newRules));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTION__RULES:
+				return basicSetRules(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+				return getSourceComponent();
+			case FlaxmlPackage.CONNECTION__SOURCE_ID:
+				return getSourceId();
+			case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+				return getTargetComponent();
+			case FlaxmlPackage.CONNECTION__TARGET_ID:
+				return getTargetId();
+			case FlaxmlPackage.CONNECTION__RULES:
+				return getRules();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+				setSourceComponent((String)newValue);
+				return;
+			case FlaxmlPackage.CONNECTION__SOURCE_ID:
+				setSourceId((String)newValue);
+				return;
+			case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+				setTargetComponent((String)newValue);
+				return;
+			case FlaxmlPackage.CONNECTION__TARGET_ID:
+				setTargetId((String)newValue);
+				return;
+			case FlaxmlPackage.CONNECTION__RULES:
+				setRules((FptcRules)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+				setSourceComponent(SOURCE_COMPONENT_EDEFAULT);
+				return;
+			case FlaxmlPackage.CONNECTION__SOURCE_ID:
+				setSourceId(SOURCE_ID_EDEFAULT);
+				return;
+			case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+				setTargetComponent(TARGET_COMPONENT_EDEFAULT);
+				return;
+			case FlaxmlPackage.CONNECTION__TARGET_ID:
+				setTargetId(TARGET_ID_EDEFAULT);
+				return;
+			case FlaxmlPackage.CONNECTION__RULES:
+				setRules((FptcRules)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTION__SOURCE_COMPONENT:
+				return SOURCE_COMPONENT_EDEFAULT == null ? sourceComponent != null : !SOURCE_COMPONENT_EDEFAULT.equals(sourceComponent);
+			case FlaxmlPackage.CONNECTION__SOURCE_ID:
+				return SOURCE_ID_EDEFAULT == null ? sourceId != null : !SOURCE_ID_EDEFAULT.equals(sourceId);
+			case FlaxmlPackage.CONNECTION__TARGET_COMPONENT:
+				return TARGET_COMPONENT_EDEFAULT == null ? targetComponent != null : !TARGET_COMPONENT_EDEFAULT.equals(targetComponent);
+			case FlaxmlPackage.CONNECTION__TARGET_ID:
+				return TARGET_ID_EDEFAULT == null ? targetId != null : !TARGET_ID_EDEFAULT.equals(targetId);
+			case FlaxmlPackage.CONNECTION__RULES:
+				return rules != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (sourceComponent: ");
+		result.append(sourceComponent);
+		result.append(", sourceId: ");
+		result.append(sourceId);
+		result.append(", targetComponent: ");
+		result.append(targetComponent);
+		result.append(", targetId: ");
+		result.append(targetId);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ConnectionImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionsImpl.java
new file mode 100644
index 0000000..22da212
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/ConnectionsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Connections</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.ConnectionsImpl#getConnection <em>Connection</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class ConnectionsImpl extends MinimalEObjectImpl.Container implements Connections {
+	/**
+	 * The cached value of the '{@link #getConnection() <em>Connection</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getConnection()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Connection> connection;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConnectionsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.CONNECTIONS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Connection> getConnection() {
+		if (connection == null) {
+			connection = new EObjectContainmentEList<Connection>(Connection.class, this, FlaxmlPackage.CONNECTIONS__CONNECTION);
+		}
+		return connection;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTIONS__CONNECTION:
+				return ((InternalEList<?>)getConnection()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTIONS__CONNECTION:
+				return getConnection();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTIONS__CONNECTION:
+				getConnection().clear();
+				getConnection().addAll((Collection<? extends Connection>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTIONS__CONNECTION:
+				getConnection().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.CONNECTIONS__CONNECTION:
+				return connection != null && !connection.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ConnectionsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/DocumentRootImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/DocumentRootImpl.java
new file mode 100644
index 0000000..42808d7
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/DocumentRootImpl.java
@@ -0,0 +1,288 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EMap;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.EcorePackage;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.BasicFeatureMap;
+import org.eclipse.emf.ecore.util.EcoreEMap;
+import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Document Root</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getMixed <em>Mixed</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getXMLNSPrefixMap <em>XMLNS Prefix Map</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getXSISchemaLocation <em>XSI Schema Location</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.DocumentRootImpl#getSystem <em>System</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class DocumentRootImpl extends MinimalEObjectImpl.Container implements DocumentRoot {
+	/**
+	 * The cached value of the '{@link #getMixed() <em>Mixed</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMixed()
+	 * @generated
+	 * @ordered
+	 */
+	protected FeatureMap mixed;
+
+	/**
+	 * The cached value of the '{@link #getXMLNSPrefixMap() <em>XMLNS Prefix Map</em>}' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getXMLNSPrefixMap()
+	 * @generated
+	 * @ordered
+	 */
+	protected EMap<String, String> xMLNSPrefixMap;
+
+	/**
+	 * The cached value of the '{@link #getXSISchemaLocation() <em>XSI Schema Location</em>}' map.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getXSISchemaLocation()
+	 * @generated
+	 * @ordered
+	 */
+	protected EMap<String, String> xSISchemaLocation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DocumentRootImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.DOCUMENT_ROOT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FeatureMap getMixed() {
+		if (mixed == null) {
+			mixed = new BasicFeatureMap(this, FlaxmlPackage.DOCUMENT_ROOT__MIXED);
+		}
+		return mixed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EMap<String, String> getXMLNSPrefixMap() {
+		if (xMLNSPrefixMap == null) {
+			xMLNSPrefixMap = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+		}
+		return xMLNSPrefixMap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EMap<String, String> getXSISchemaLocation() {
+		if (xSISchemaLocation == null) {
+			xSISchemaLocation = new EcoreEMap<String,String>(EcorePackage.Literals.ESTRING_TO_STRING_MAP_ENTRY, EStringToStringMapEntryImpl.class, this, FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+		}
+		return xSISchemaLocation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.polarsys.chess.fla.flaxml.System getSystem() {
+		return (org.polarsys.chess.fla.flaxml.System)getMixed().get(FlaxmlPackage.Literals.DOCUMENT_ROOT__SYSTEM, true);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetSystem(org.polarsys.chess.fla.flaxml.System newSystem, NotificationChain msgs) {
+		return ((FeatureMap.Internal)getMixed()).basicAdd(FlaxmlPackage.Literals.DOCUMENT_ROOT__SYSTEM, newSystem, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSystem(org.polarsys.chess.fla.flaxml.System newSystem) {
+		((FeatureMap.Internal)getMixed()).set(FlaxmlPackage.Literals.DOCUMENT_ROOT__SYSTEM, newSystem);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+				return ((InternalEList<?>)getMixed()).basicRemove(otherEnd, msgs);
+			case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+				return ((InternalEList<?>)getXMLNSPrefixMap()).basicRemove(otherEnd, msgs);
+			case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+				return ((InternalEList<?>)getXSISchemaLocation()).basicRemove(otherEnd, msgs);
+			case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+				return basicSetSystem(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+				if (coreType) return getMixed();
+				return ((FeatureMap.Internal)getMixed()).getWrapper();
+			case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+				if (coreType) return getXMLNSPrefixMap();
+				else return getXMLNSPrefixMap().map();
+			case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+				if (coreType) return getXSISchemaLocation();
+				else return getXSISchemaLocation().map();
+			case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+				return getSystem();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+				((FeatureMap.Internal)getMixed()).set(newValue);
+				return;
+			case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+				((EStructuralFeature.Setting)getXMLNSPrefixMap()).set(newValue);
+				return;
+			case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+				((EStructuralFeature.Setting)getXSISchemaLocation()).set(newValue);
+				return;
+			case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+				setSystem((org.polarsys.chess.fla.flaxml.System)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+				getMixed().clear();
+				return;
+			case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+				getXMLNSPrefixMap().clear();
+				return;
+			case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+				getXSISchemaLocation().clear();
+				return;
+			case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+				setSystem((org.polarsys.chess.fla.flaxml.System)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.DOCUMENT_ROOT__MIXED:
+				return mixed != null && !mixed.isEmpty();
+			case FlaxmlPackage.DOCUMENT_ROOT__XMLNS_PREFIX_MAP:
+				return xMLNSPrefixMap != null && !xMLNSPrefixMap.isEmpty();
+			case FlaxmlPackage.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION:
+				return xSISchemaLocation != null && !xSISchemaLocation.isEmpty();
+			case FlaxmlPackage.DOCUMENT_ROOT__SYSTEM:
+				return getSystem() != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (mixed: ");
+		result.append(mixed);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DocumentRootImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FailureImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FailureImpl.java
new file mode 100644
index 0000000..7d59958
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FailureImpl.java
@@ -0,0 +1,207 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Failure</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.FailureImpl#getType <em>Type</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FailureImpl extends MinimalEObjectImpl.Container implements Failure {
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final FailureType TYPE_EDEFAULT = FailureType.NO_FAILURE;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected FailureType type = TYPE_EDEFAULT;
+
+	/**
+	 * This is true if the Type attribute has been set.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean typeESet;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FailureImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.FAILURE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FailureType getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setType(FailureType newType) {
+		FailureType oldType = type;
+		type = newType == null ? TYPE_EDEFAULT : newType;
+		boolean oldTypeESet = typeESet;
+		typeESet = true;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.FAILURE__TYPE, oldType, type, !oldTypeESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void unsetType() {
+		FailureType oldType = type;
+		boolean oldTypeESet = typeESet;
+		type = TYPE_EDEFAULT;
+		typeESet = false;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.UNSET, FlaxmlPackage.FAILURE__TYPE, oldType, TYPE_EDEFAULT, oldTypeESet));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean isSetType() {
+		return typeESet;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.FAILURE__TYPE:
+				return getType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.FAILURE__TYPE:
+				setType((FailureType)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.FAILURE__TYPE:
+				unsetType();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.FAILURE__TYPE:
+				return isSetType();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (type: ");
+		if (typeESet) result.append(type); else result.append("<unset>");
+		result.append(')');
+		return result.toString();
+	}
+
+} //FailureImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlFactoryImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlFactoryImpl.java
new file mode 100644
index 0000000..8cc664c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlFactoryImpl.java
@@ -0,0 +1,371 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlFactory;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlaxmlFactoryImpl extends EFactoryImpl implements FlaxmlFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static FlaxmlFactory init() {
+		try {
+			FlaxmlFactory theFlaxmlFactory = (FlaxmlFactory)EPackage.Registry.INSTANCE.getEFactory(FlaxmlPackage.eNS_URI);
+			if (theFlaxmlFactory != null) {
+				return theFlaxmlFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new FlaxmlFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case FlaxmlPackage.COMPONENTS: return createComponents();
+			case FlaxmlPackage.COMPOSITE_COMPONENT: return createCompositeComponent();
+			case FlaxmlPackage.CONNECTION: return createConnection();
+			case FlaxmlPackage.CONNECTIONS: return createConnections();
+			case FlaxmlPackage.DOCUMENT_ROOT: return createDocumentRoot();
+			case FlaxmlPackage.FAILURE: return createFailure();
+			case FlaxmlPackage.FPTC_RULES: return createFptcRules();
+			case FlaxmlPackage.INPUT_PORT: return createInputPort();
+			case FlaxmlPackage.INPUT_PORTS: return createInputPorts();
+			case FlaxmlPackage.NAMED_ELEMENT: return createNamedElement();
+			case FlaxmlPackage.OUTPUT_PORT: return createOutputPort();
+			case FlaxmlPackage.OUTPUT_PORTS: return createOutputPorts();
+			case FlaxmlPackage.RULE_STRING: return createRuleString();
+			case FlaxmlPackage.SIMPLE_COMPONENT: return createSimpleComponent();
+			case FlaxmlPackage.SYSTEM: return createSystem();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case FlaxmlPackage.FAILURE_TYPE:
+				return createFailureTypeFromString(eDataType, initialValue);
+			case FlaxmlPackage.FAILURE_TYPE_OBJECT:
+				return createFailureTypeObjectFromString(eDataType, initialValue);
+			case FlaxmlPackage.PATTERN_TYPE:
+				return createPatternTypeFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case FlaxmlPackage.FAILURE_TYPE:
+				return convertFailureTypeToString(eDataType, instanceValue);
+			case FlaxmlPackage.FAILURE_TYPE_OBJECT:
+				return convertFailureTypeObjectToString(eDataType, instanceValue);
+			case FlaxmlPackage.PATTERN_TYPE:
+				return convertPatternTypeToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Components createComponents() {
+		ComponentsImpl components = new ComponentsImpl();
+		return components;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeComponent createCompositeComponent() {
+		CompositeComponentImpl compositeComponent = new CompositeComponentImpl();
+		return compositeComponent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Connection createConnection() {
+		ConnectionImpl connection = new ConnectionImpl();
+		return connection;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Connections createConnections() {
+		ConnectionsImpl connections = new ConnectionsImpl();
+		return connections;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DocumentRoot createDocumentRoot() {
+		DocumentRootImpl documentRoot = new DocumentRootImpl();
+		return documentRoot;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Failure createFailure() {
+		FailureImpl failure = new FailureImpl();
+		return failure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FptcRules createFptcRules() {
+		FptcRulesImpl fptcRules = new FptcRulesImpl();
+		return fptcRules;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InputPort createInputPort() {
+		InputPortImpl inputPort = new InputPortImpl();
+		return inputPort;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public InputPorts createInputPorts() {
+		InputPortsImpl inputPorts = new InputPortsImpl();
+		return inputPorts;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NamedElement createNamedElement() {
+		NamedElementImpl namedElement = new NamedElementImpl();
+		return namedElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OutputPort createOutputPort() {
+		OutputPortImpl outputPort = new OutputPortImpl();
+		return outputPort;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public OutputPorts createOutputPorts() {
+		OutputPortsImpl outputPorts = new OutputPortsImpl();
+		return outputPorts;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RuleString createRuleString() {
+		RuleStringImpl ruleString = new RuleStringImpl();
+		return ruleString;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SimpleComponent createSimpleComponent() {
+		SimpleComponentImpl simpleComponent = new SimpleComponentImpl();
+		return simpleComponent;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.polarsys.chess.fla.flaxml.System createSystem() {
+		SystemImpl system = new SystemImpl();
+		return system;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FailureType createFailureTypeFromString(EDataType eDataType, String initialValue) {
+		FailureType result = FailureType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'");
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertFailureTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FailureType createFailureTypeObjectFromString(EDataType eDataType, String initialValue) {
+		return createFailureTypeFromString(FlaxmlPackage.Literals.FAILURE_TYPE, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertFailureTypeObjectToString(EDataType eDataType, Object instanceValue) {
+		return convertFailureTypeToString(FlaxmlPackage.Literals.FAILURE_TYPE, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String createPatternTypeFromString(EDataType eDataType, String initialValue) {
+		return (String)XMLTypeFactory.eINSTANCE.createFromString(XMLTypePackage.Literals.STRING, initialValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertPatternTypeToString(EDataType eDataType, Object instanceValue) {
+		return XMLTypeFactory.eINSTANCE.convertToString(XMLTypePackage.Literals.STRING, instanceValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlPackage getFlaxmlPackage() {
+		return (FlaxmlPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static FlaxmlPackage getPackage() {
+		return FlaxmlPackage.eINSTANCE;
+	}
+
+} //FlaxmlFactoryImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlPackageImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlPackageImpl.java
new file mode 100644
index 0000000..e59ac10
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FlaxmlPackageImpl.java
@@ -0,0 +1,1200 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EValidator;
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlFactory;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+import org.polarsys.chess.fla.flaxml.util.FlaxmlValidator;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlaxmlPackageImpl extends EPackageImpl implements FlaxmlPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass componentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass componentsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass compositeComponentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass connectionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass connectionsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass documentRootEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass failureEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass fptcRulesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass inputPortEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass inputPortsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass namedElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass outputPortEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass outputPortsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass ruleStringEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass simpleComponentEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass systemEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum failureTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType failureTypeObjectEDataType = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDataType patternTypeEDataType = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private FlaxmlPackageImpl() {
+		super(eNS_URI, FlaxmlFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link FlaxmlPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static FlaxmlPackage init() {
+		if (isInited) return (FlaxmlPackage)EPackage.Registry.INSTANCE.getEPackage(FlaxmlPackage.eNS_URI);
+
+		// Obtain or create and register package
+		FlaxmlPackageImpl theFlaxmlPackage = (FlaxmlPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof FlaxmlPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new FlaxmlPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		XMLTypePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theFlaxmlPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theFlaxmlPackage.initializePackageContents();
+
+		// Register package validator
+		EValidator.Registry.INSTANCE.put
+			(theFlaxmlPackage, 
+			 new EValidator.Descriptor() {
+				 public EValidator getEValidator() {
+					 return FlaxmlValidator.INSTANCE;
+				 }
+			 });
+
+		// Mark meta-data to indicate it can't be changed
+		theFlaxmlPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(FlaxmlPackage.eNS_URI, theFlaxmlPackage);
+		return theFlaxmlPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getComponent() {
+		return componentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponent_InputPorts() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponent_OutputPorts() {
+		return (EReference)componentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getComponents() {
+		return componentsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getComponents_Component() {
+		return (EReference)componentsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCompositeComponent() {
+		return compositeComponentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCompositeComponent_Connections() {
+		return (EReference)compositeComponentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCompositeComponent_Components() {
+		return (EReference)compositeComponentEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getConnection() {
+		return connectionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getConnection_SourceComponent() {
+		return (EAttribute)connectionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getConnection_SourceId() {
+		return (EAttribute)connectionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getConnection_TargetComponent() {
+		return (EAttribute)connectionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getConnection_TargetId() {
+		return (EAttribute)connectionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getConnection_Rules() {
+		return (EReference)connectionEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getConnections() {
+		return connectionsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getConnections_Connection() {
+		return (EReference)connectionsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDocumentRoot() {
+		return documentRootEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getDocumentRoot_Mixed() {
+		return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDocumentRoot_XMLNSPrefixMap() {
+		return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDocumentRoot_XSISchemaLocation() {
+		return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getDocumentRoot_System() {
+		return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFailure() {
+		return failureEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFailure_Type() {
+		return (EAttribute)failureEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFptcRules() {
+		return fptcRulesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getFptcRules_Rule() {
+		return (EReference)fptcRulesEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getInputPort() {
+		return inputPortEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getInputPort_InputFailure() {
+		return (EReference)inputPortEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getInputPorts() {
+		return inputPortsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getInputPorts_InputPort() {
+		return (EReference)inputPortsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getNamedElement() {
+		return namedElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getNamedElement_Id() {
+		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getNamedElement_Name() {
+		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getOutputPort() {
+		return outputPortEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getOutputPort_OutputFailure() {
+		return (EReference)outputPortEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getOutputPorts() {
+		return outputPortsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getOutputPorts_OutputPort() {
+		return (EReference)outputPortsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRuleString() {
+		return ruleStringEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getRuleString_Pattern() {
+		return (EAttribute)ruleStringEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSimpleComponent() {
+		return simpleComponentEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSimpleComponent_Rules() {
+		return (EReference)simpleComponentEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getSystem() {
+		return systemEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getSystem_Component() {
+		return (EReference)systemEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EEnum getFailureType() {
+		return failureTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getFailureTypeObject() {
+		return failureTypeObjectEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDataType getPatternType() {
+		return patternTypeEDataType;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlFactory getFlaxmlFactory() {
+		return (FlaxmlFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		componentEClass = createEClass(COMPONENT);
+		createEReference(componentEClass, COMPONENT__INPUT_PORTS);
+		createEReference(componentEClass, COMPONENT__OUTPUT_PORTS);
+
+		componentsEClass = createEClass(COMPONENTS);
+		createEReference(componentsEClass, COMPONENTS__COMPONENT);
+
+		compositeComponentEClass = createEClass(COMPOSITE_COMPONENT);
+		createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__CONNECTIONS);
+		createEReference(compositeComponentEClass, COMPOSITE_COMPONENT__COMPONENTS);
+
+		connectionEClass = createEClass(CONNECTION);
+		createEAttribute(connectionEClass, CONNECTION__SOURCE_COMPONENT);
+		createEAttribute(connectionEClass, CONNECTION__SOURCE_ID);
+		createEAttribute(connectionEClass, CONNECTION__TARGET_COMPONENT);
+		createEAttribute(connectionEClass, CONNECTION__TARGET_ID);
+		createEReference(connectionEClass, CONNECTION__RULES);
+
+		connectionsEClass = createEClass(CONNECTIONS);
+		createEReference(connectionsEClass, CONNECTIONS__CONNECTION);
+
+		documentRootEClass = createEClass(DOCUMENT_ROOT);
+		createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
+		createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
+		createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
+		createEReference(documentRootEClass, DOCUMENT_ROOT__SYSTEM);
+
+		failureEClass = createEClass(FAILURE);
+		createEAttribute(failureEClass, FAILURE__TYPE);
+
+		fptcRulesEClass = createEClass(FPTC_RULES);
+		createEReference(fptcRulesEClass, FPTC_RULES__RULE);
+
+		inputPortEClass = createEClass(INPUT_PORT);
+		createEReference(inputPortEClass, INPUT_PORT__INPUT_FAILURE);
+
+		inputPortsEClass = createEClass(INPUT_PORTS);
+		createEReference(inputPortsEClass, INPUT_PORTS__INPUT_PORT);
+
+		namedElementEClass = createEClass(NAMED_ELEMENT);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__ID);
+		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);
+
+		outputPortEClass = createEClass(OUTPUT_PORT);
+		createEReference(outputPortEClass, OUTPUT_PORT__OUTPUT_FAILURE);
+
+		outputPortsEClass = createEClass(OUTPUT_PORTS);
+		createEReference(outputPortsEClass, OUTPUT_PORTS__OUTPUT_PORT);
+
+		ruleStringEClass = createEClass(RULE_STRING);
+		createEAttribute(ruleStringEClass, RULE_STRING__PATTERN);
+
+		simpleComponentEClass = createEClass(SIMPLE_COMPONENT);
+		createEReference(simpleComponentEClass, SIMPLE_COMPONENT__RULES);
+
+		systemEClass = createEClass(SYSTEM);
+		createEReference(systemEClass, SYSTEM__COMPONENT);
+
+		// Create enums
+		failureTypeEEnum = createEEnum(FAILURE_TYPE);
+
+		// Create data types
+		failureTypeObjectEDataType = createEDataType(FAILURE_TYPE_OBJECT);
+		patternTypeEDataType = createEDataType(PATTERN_TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		componentEClass.getESuperTypes().add(this.getNamedElement());
+		compositeComponentEClass.getESuperTypes().add(this.getComponent());
+		inputPortEClass.getESuperTypes().add(this.getNamedElement());
+		outputPortEClass.getESuperTypes().add(this.getNamedElement());
+		simpleComponentEClass.getESuperTypes().add(this.getComponent());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(componentEClass, Component.class, "Component", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getComponent_InputPorts(), this.getInputPorts(), null, "inputPorts", null, 1, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComponent_OutputPorts(), this.getOutputPorts(), null, "outputPorts", null, 1, 1, Component.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(componentsEClass, Components.class, "Components", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getComponents_Component(), this.getComponent(), null, "component", null, 1, -1, Components.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(compositeComponentEClass, CompositeComponent.class, "CompositeComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCompositeComponent_Connections(), this.getConnections(), null, "connections", null, 1, 1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCompositeComponent_Components(), this.getComponents(), null, "components", null, 1, 1, CompositeComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(connectionEClass, Connection.class, "Connection", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getConnection_SourceComponent(), theXMLTypePackage.getString(), "sourceComponent", null, 0, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getConnection_SourceId(), theXMLTypePackage.getString(), "sourceId", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getConnection_TargetComponent(), theXMLTypePackage.getString(), "targetComponent", null, 0, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getConnection_TargetId(), theXMLTypePackage.getString(), "targetId", null, 1, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getConnection_Rules(), this.getFptcRules(), null, "rules", null, 0, 1, Connection.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(connectionsEClass, Connections.class, "Connections", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getConnections_Connection(), this.getConnection(), null, "connection", null, 1, -1, Connections.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getDocumentRoot_System(), this.getSystem(), null, "system", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+
+		initEClass(failureEClass, Failure.class, "Failure", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFailure_Type(), this.getFailureType(), "type", null, 1, 1, Failure.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(fptcRulesEClass, FptcRules.class, "FptcRules", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getFptcRules_Rule(), this.getRuleString(), null, "rule", null, 1, -1, FptcRules.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(inputPortEClass, InputPort.class, "InputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getInputPort_InputFailure(), this.getFailure(), null, "inputFailure", null, 0, -1, InputPort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(inputPortsEClass, InputPorts.class, "InputPorts", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getInputPorts_InputPort(), this.getInputPort(), null, "inputPort", null, 0, -1, InputPorts.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(namedElementEClass, NamedElement.class, "NamedElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getNamedElement_Id(), theXMLTypePackage.getString(), "id", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getNamedElement_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(outputPortEClass, OutputPort.class, "OutputPort", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getOutputPort_OutputFailure(), this.getFailure(), null, "outputFailure", null, 0, -1, OutputPort.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(outputPortsEClass, OutputPorts.class, "OutputPorts", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getOutputPorts_OutputPort(), this.getOutputPort(), null, "outputPort", null, 0, -1, OutputPorts.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(ruleStringEClass, RuleString.class, "RuleString", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getRuleString_Pattern(), this.getPatternType(), "pattern", null, 1, 1, RuleString.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(simpleComponentEClass, SimpleComponent.class, "SimpleComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSimpleComponent_Rules(), this.getFptcRules(), null, "rules", null, 1, 1, SimpleComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(systemEClass, org.polarsys.chess.fla.flaxml.System.class, "System", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getSystem_Component(), this.getComponent(), null, "component", null, 0, 1, org.polarsys.chess.fla.flaxml.System.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Initialize enums and add enum literals
+		initEEnum(failureTypeEEnum, FailureType.class, "FailureType");
+		addEEnumLiteral(failureTypeEEnum, FailureType.NO_FAILURE);
+		addEEnumLiteral(failureTypeEEnum, FailureType.LATE);
+		addEEnumLiteral(failureTypeEEnum, FailureType.EARLY);
+		addEEnumLiteral(failureTypeEEnum, FailureType.VALUE_SUBTLE);
+		addEEnumLiteral(failureTypeEEnum, FailureType.VALUE_COARSE);
+		addEEnumLiteral(failureTypeEEnum, FailureType.OMISSION);
+		addEEnumLiteral(failureTypeEEnum, FailureType.COMMISSION);
+
+		// Initialize data types
+		initEDataType(failureTypeObjectEDataType, FailureType.class, "FailureTypeObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS);
+		initEDataType(patternTypeEDataType, String.class, "PatternType", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
+		createExtendedMetaDataAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createExtendedMetaDataAnnotations() {
+		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";	
+		addAnnotation
+		  (componentEClass, 
+		   source, 
+		   new String[] {
+			 "name", "component",
+			 "kind", "empty"
+		   });	
+		addAnnotation
+		  (getComponent_InputPorts(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "inputPorts",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getComponent_OutputPorts(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "outputPorts",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (componentsEClass, 
+		   source, 
+		   new String[] {
+			 "name", "components",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getComponents_Component(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "component",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (compositeComponentEClass, 
+		   source, 
+		   new String[] {
+			 "name", "compositeComponent",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getCompositeComponent_Connections(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "connections",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (getCompositeComponent_Components(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "components",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (connectionEClass, 
+		   source, 
+		   new String[] {
+			 "name", "connection",
+			 "kind", "empty"
+		   });	
+		addAnnotation
+		  (getConnection_SourceComponent(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "sourceComponent"
+		   });	
+		addAnnotation
+		  (getConnection_SourceId(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "sourceId"
+		   });	
+		addAnnotation
+		  (getConnection_TargetComponent(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "targetComponent"
+		   });	
+		addAnnotation
+		  (getConnection_TargetId(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "targetId"
+		   });	
+		addAnnotation
+		  (connectionsEClass, 
+		   source, 
+		   new String[] {
+			 "name", "connections",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getConnections_Connection(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "connection",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (documentRootEClass, 
+		   source, 
+		   new String[] {
+			 "name", "",
+			 "kind", "mixed"
+		   });	
+		addAnnotation
+		  (getDocumentRoot_Mixed(), 
+		   source, 
+		   new String[] {
+			 "kind", "elementWildcard",
+			 "name", ":mixed"
+		   });	
+		addAnnotation
+		  (getDocumentRoot_XMLNSPrefixMap(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "xmlns:prefix"
+		   });	
+		addAnnotation
+		  (getDocumentRoot_XSISchemaLocation(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "xsi:schemaLocation"
+		   });	
+		addAnnotation
+		  (getDocumentRoot_System(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "system",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (failureEClass, 
+		   source, 
+		   new String[] {
+			 "name", "failure",
+			 "kind", "empty"
+		   });	
+		addAnnotation
+		  (getFailure_Type(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "type"
+		   });	
+		addAnnotation
+		  (failureTypeEEnum, 
+		   source, 
+		   new String[] {
+			 "name", "failureType"
+		   });	
+		addAnnotation
+		  (failureTypeObjectEDataType, 
+		   source, 
+		   new String[] {
+			 "name", "failureType:Object",
+			 "baseType", "failureType"
+		   });	
+		addAnnotation
+		  (fptcRulesEClass, 
+		   source, 
+		   new String[] {
+			 "name", "fptcRules",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getFptcRules_Rule(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "rule",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (inputPortEClass, 
+		   source, 
+		   new String[] {
+			 "name", "inputPort",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getInputPort_InputFailure(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "inputFailure",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (inputPortsEClass, 
+		   source, 
+		   new String[] {
+			 "name", "inputPorts",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getInputPorts_InputPort(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "inputPort",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (namedElementEClass, 
+		   source, 
+		   new String[] {
+			 "name", "namedElement",
+			 "kind", "empty"
+		   });	
+		addAnnotation
+		  (getNamedElement_Id(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "id"
+		   });	
+		addAnnotation
+		  (getNamedElement_Name(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "name"
+		   });	
+		addAnnotation
+		  (outputPortEClass, 
+		   source, 
+		   new String[] {
+			 "name", "outputPort",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (outputPortsEClass, 
+		   source, 
+		   new String[] {
+			 "name", "outputPorts",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getOutputPorts_OutputPort(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "outputPort",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (patternTypeEDataType, 
+		   source, 
+		   new String[] {
+			 "name", "pattern_._type",
+			 "baseType", "http://www.eclipse.org/emf/2003/XMLType#string",
+			 "pattern", "[^>]+\\.[^>]+->[^>]+\\.[^>]+"
+		   });	
+		addAnnotation
+		  (ruleStringEClass, 
+		   source, 
+		   new String[] {
+			 "name", "ruleString",
+			 "kind", "empty"
+		   });	
+		addAnnotation
+		  (getRuleString_Pattern(), 
+		   source, 
+		   new String[] {
+			 "kind", "attribute",
+			 "name", "pattern"
+		   });	
+		addAnnotation
+		  (simpleComponentEClass, 
+		   source, 
+		   new String[] {
+			 "name", "simpleComponent",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getSimpleComponent_Rules(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "rules",
+			 "namespace", "##targetNamespace"
+		   });	
+		addAnnotation
+		  (systemEClass, 
+		   source, 
+		   new String[] {
+			 "name", "system",
+			 "kind", "elementOnly"
+		   });	
+		addAnnotation
+		  (getSystem_Component(), 
+		   source, 
+		   new String[] {
+			 "kind", "element",
+			 "name", "component",
+			 "namespace", "##targetNamespace"
+		   });
+	}
+
+} //FlaxmlPackageImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FptcRulesImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FptcRulesImpl.java
new file mode 100644
index 0000000..6ed7a0f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/FptcRulesImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.RuleString;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fptc Rules</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.FptcRulesImpl#getRule <em>Rule</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class FptcRulesImpl extends MinimalEObjectImpl.Container implements FptcRules {
+	/**
+	 * The cached value of the '{@link #getRule() <em>Rule</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRule()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<RuleString> rule;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FptcRulesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.FPTC_RULES;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<RuleString> getRule() {
+		if (rule == null) {
+			rule = new EObjectContainmentEList<RuleString>(RuleString.class, this, FlaxmlPackage.FPTC_RULES__RULE);
+		}
+		return rule;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.FPTC_RULES__RULE:
+				return ((InternalEList<?>)getRule()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.FPTC_RULES__RULE:
+				return getRule();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.FPTC_RULES__RULE:
+				getRule().clear();
+				getRule().addAll((Collection<? extends RuleString>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.FPTC_RULES__RULE:
+				getRule().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.FPTC_RULES__RULE:
+				return rule != null && !rule.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //FptcRulesImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortImpl.java
new file mode 100644
index 0000000..61f1142
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortImpl.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.InputPort;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Input Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.InputPortImpl#getInputFailure <em>Input Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InputPortImpl extends NamedElementImpl implements InputPort {
+	/**
+	 * The cached value of the '{@link #getInputFailure() <em>Input Failure</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInputFailure()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Failure> inputFailure;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InputPortImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.INPUT_PORT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Failure> getInputFailure() {
+		if (inputFailure == null) {
+			inputFailure = new EObjectContainmentEList<Failure>(Failure.class, this, FlaxmlPackage.INPUT_PORT__INPUT_FAILURE);
+		}
+		return inputFailure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+				return ((InternalEList<?>)getInputFailure()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+				return getInputFailure();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+				getInputFailure().clear();
+				getInputFailure().addAll((Collection<? extends Failure>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+				getInputFailure().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORT__INPUT_FAILURE:
+				return inputFailure != null && !inputFailure.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //InputPortImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortsImpl.java
new file mode 100644
index 0000000..1ccf19b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/InputPortsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Input Ports</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.InputPortsImpl#getInputPort <em>Input Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class InputPortsImpl extends MinimalEObjectImpl.Container implements InputPorts {
+	/**
+	 * The cached value of the '{@link #getInputPort() <em>Input Port</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInputPort()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<InputPort> inputPort;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InputPortsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.INPUT_PORTS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<InputPort> getInputPort() {
+		if (inputPort == null) {
+			inputPort = new EObjectContainmentEList<InputPort>(InputPort.class, this, FlaxmlPackage.INPUT_PORTS__INPUT_PORT);
+		}
+		return inputPort;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+				return ((InternalEList<?>)getInputPort()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+				return getInputPort();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+				getInputPort().clear();
+				getInputPort().addAll((Collection<? extends InputPort>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+				getInputPort().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.INPUT_PORTS__INPUT_PORT:
+				return inputPort != null && !inputPort.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //InputPortsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/NamedElementImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/NamedElementImpl.java
new file mode 100644
index 0000000..802bc32
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/NamedElementImpl.java
@@ -0,0 +1,226 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Named Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl#getId <em>Id</em>}</li>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.NamedElementImpl#getName <em>Name</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class NamedElementImpl extends MinimalEObjectImpl.Container implements NamedElement {
+	/**
+	 * The default value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ID_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getId() <em>Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getId()
+	 * @generated
+	 * @ordered
+	 */
+	protected String id = ID_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NamedElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.NAMED_ELEMENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setId(String newId) {
+		String oldId = id;
+		id = newId;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.NAMED_ELEMENT__ID, oldId, id));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.NAMED_ELEMENT__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.NAMED_ELEMENT__ID:
+				return getId();
+			case FlaxmlPackage.NAMED_ELEMENT__NAME:
+				return getName();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.NAMED_ELEMENT__ID:
+				setId((String)newValue);
+				return;
+			case FlaxmlPackage.NAMED_ELEMENT__NAME:
+				setName((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.NAMED_ELEMENT__ID:
+				setId(ID_EDEFAULT);
+				return;
+			case FlaxmlPackage.NAMED_ELEMENT__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.NAMED_ELEMENT__ID:
+				return ID_EDEFAULT == null ? id != null : !ID_EDEFAULT.equals(id);
+			case FlaxmlPackage.NAMED_ELEMENT__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (id: ");
+		result.append(id);
+		result.append(", name: ");
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //NamedElementImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortImpl.java
new file mode 100644
index 0000000..dbf4186
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortImpl.java
@@ -0,0 +1,158 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Output Port</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.OutputPortImpl#getOutputFailure <em>Output Failure</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OutputPortImpl extends NamedElementImpl implements OutputPort {
+	/**
+	 * The cached value of the '{@link #getOutputFailure() <em>Output Failure</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutputFailure()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Failure> outputFailure;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OutputPortImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.OUTPUT_PORT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<Failure> getOutputFailure() {
+		if (outputFailure == null) {
+			outputFailure = new EObjectContainmentEList<Failure>(Failure.class, this, FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE);
+		}
+		return outputFailure;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+				return ((InternalEList<?>)getOutputFailure()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+				return getOutputFailure();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+				getOutputFailure().clear();
+				getOutputFailure().addAll((Collection<? extends Failure>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+				getOutputFailure().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORT__OUTPUT_FAILURE:
+				return outputFailure != null && !outputFailure.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //OutputPortImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortsImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortsImpl.java
new file mode 100644
index 0000000..ad51197
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/OutputPortsImpl.java
@@ -0,0 +1,159 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Output Ports</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.OutputPortsImpl#getOutputPort <em>Output Port</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class OutputPortsImpl extends MinimalEObjectImpl.Container implements OutputPorts {
+	/**
+	 * The cached value of the '{@link #getOutputPort() <em>Output Port</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutputPort()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<OutputPort> outputPort;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected OutputPortsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.OUTPUT_PORTS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<OutputPort> getOutputPort() {
+		if (outputPort == null) {
+			outputPort = new EObjectContainmentEList<OutputPort>(OutputPort.class, this, FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT);
+		}
+		return outputPort;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+				return ((InternalEList<?>)getOutputPort()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+				return getOutputPort();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+				getOutputPort().clear();
+				getOutputPort().addAll((Collection<? extends OutputPort>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+				getOutputPort().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.OUTPUT_PORTS__OUTPUT_PORT:
+				return outputPort != null && !outputPort.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //OutputPortsImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/RuleStringImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/RuleStringImpl.java
new file mode 100644
index 0000000..9bcc71a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/RuleStringImpl.java
@@ -0,0 +1,172 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.RuleString;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Rule String</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.RuleStringImpl#getPattern <em>Pattern</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class RuleStringImpl extends MinimalEObjectImpl.Container implements RuleString {
+	/**
+	 * The default value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPattern()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PATTERN_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPattern() <em>Pattern</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPattern()
+	 * @generated
+	 * @ordered
+	 */
+	protected String pattern = PATTERN_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RuleStringImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.RULE_STRING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getPattern() {
+		return pattern;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setPattern(String newPattern) {
+		String oldPattern = pattern;
+		pattern = newPattern;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.RULE_STRING__PATTERN, oldPattern, pattern));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.RULE_STRING__PATTERN:
+				return getPattern();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.RULE_STRING__PATTERN:
+				setPattern((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.RULE_STRING__PATTERN:
+				setPattern(PATTERN_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.RULE_STRING__PATTERN:
+				return PATTERN_EDEFAULT == null ? pattern != null : !PATTERN_EDEFAULT.equals(pattern);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (pattern: ");
+		result.append(pattern);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RuleStringImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SimpleComponentImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SimpleComponentImpl.java
new file mode 100644
index 0000000..48252d0
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SimpleComponentImpl.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Simple Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.SimpleComponentImpl#getRules <em>Rules</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SimpleComponentImpl extends ComponentImpl implements SimpleComponent {
+	/**
+	 * The cached value of the '{@link #getRules() <em>Rules</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRules()
+	 * @generated
+	 * @ordered
+	 */
+	protected FptcRules rules;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SimpleComponentImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.SIMPLE_COMPONENT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FptcRules getRules() {
+		return rules;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetRules(FptcRules newRules, NotificationChain msgs) {
+		FptcRules oldRules = rules;
+		rules = newRules;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SIMPLE_COMPONENT__RULES, oldRules, newRules);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRules(FptcRules newRules) {
+		if (newRules != rules) {
+			NotificationChain msgs = null;
+			if (rules != null)
+				msgs = ((InternalEObject)rules).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SIMPLE_COMPONENT__RULES, null, msgs);
+			if (newRules != null)
+				msgs = ((InternalEObject)newRules).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SIMPLE_COMPONENT__RULES, null, msgs);
+			msgs = basicSetRules(newRules, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SIMPLE_COMPONENT__RULES, newRules, newRules));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+				return basicSetRules(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+				return getRules();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+				setRules((FptcRules)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+				setRules((FptcRules)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.SIMPLE_COMPONENT__RULES:
+				return rules != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SimpleComponentImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SystemImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SystemImpl.java
new file mode 100644
index 0000000..1347f5f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/impl/SystemImpl.java
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>System</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.polarsys.chess.fla.flaxml.impl.SystemImpl#getComponent <em>Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SystemImpl extends MinimalEObjectImpl.Container implements org.polarsys.chess.fla.flaxml.System {
+	/**
+	 * The cached value of the '{@link #getComponent() <em>Component</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getComponent()
+	 * @generated
+	 * @ordered
+	 */
+	protected Component component;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SystemImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return FlaxmlPackage.Literals.SYSTEM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Component getComponent() {
+		return component;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NotificationChain basicSetComponent(Component newComponent, NotificationChain msgs) {
+		Component oldComponent = component;
+		component = newComponent;
+		if (eNotificationRequired()) {
+			ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SYSTEM__COMPONENT, oldComponent, newComponent);
+			if (msgs == null) msgs = notification; else msgs.add(notification);
+		}
+		return msgs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setComponent(Component newComponent) {
+		if (newComponent != component) {
+			NotificationChain msgs = null;
+			if (component != null)
+				msgs = ((InternalEObject)component).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SYSTEM__COMPONENT, null, msgs);
+			if (newComponent != null)
+				msgs = ((InternalEObject)newComponent).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - FlaxmlPackage.SYSTEM__COMPONENT, null, msgs);
+			msgs = basicSetComponent(newComponent, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, FlaxmlPackage.SYSTEM__COMPONENT, newComponent, newComponent));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case FlaxmlPackage.SYSTEM__COMPONENT:
+				return basicSetComponent(null, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case FlaxmlPackage.SYSTEM__COMPONENT:
+				return getComponent();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case FlaxmlPackage.SYSTEM__COMPONENT:
+				setComponent((Component)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.SYSTEM__COMPONENT:
+				setComponent((Component)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case FlaxmlPackage.SYSTEM__COMPONENT:
+				return component != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //SystemImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlAdapterFactory.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlAdapterFactory.java
new file mode 100644
index 0000000..34c901b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlAdapterFactory.java
@@ -0,0 +1,414 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+import org.eclipse.emf.ecore.EObject;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public class FlaxmlAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static FlaxmlPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = FlaxmlPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FlaxmlSwitch<Adapter> modelSwitch =
+		new FlaxmlSwitch<Adapter>() {
+			@Override
+			public Adapter caseComponent(Component object) {
+				return createComponentAdapter();
+			}
+			@Override
+			public Adapter caseComponents(Components object) {
+				return createComponentsAdapter();
+			}
+			@Override
+			public Adapter caseCompositeComponent(CompositeComponent object) {
+				return createCompositeComponentAdapter();
+			}
+			@Override
+			public Adapter caseConnection(Connection object) {
+				return createConnectionAdapter();
+			}
+			@Override
+			public Adapter caseConnections(Connections object) {
+				return createConnectionsAdapter();
+			}
+			@Override
+			public Adapter caseDocumentRoot(DocumentRoot object) {
+				return createDocumentRootAdapter();
+			}
+			@Override
+			public Adapter caseFailure(Failure object) {
+				return createFailureAdapter();
+			}
+			@Override
+			public Adapter caseFptcRules(FptcRules object) {
+				return createFptcRulesAdapter();
+			}
+			@Override
+			public Adapter caseInputPort(InputPort object) {
+				return createInputPortAdapter();
+			}
+			@Override
+			public Adapter caseInputPorts(InputPorts object) {
+				return createInputPortsAdapter();
+			}
+			@Override
+			public Adapter caseNamedElement(NamedElement object) {
+				return createNamedElementAdapter();
+			}
+			@Override
+			public Adapter caseOutputPort(OutputPort object) {
+				return createOutputPortAdapter();
+			}
+			@Override
+			public Adapter caseOutputPorts(OutputPorts object) {
+				return createOutputPortsAdapter();
+			}
+			@Override
+			public Adapter caseRuleString(RuleString object) {
+				return createRuleStringAdapter();
+			}
+			@Override
+			public Adapter caseSimpleComponent(SimpleComponent object) {
+				return createSimpleComponentAdapter();
+			}
+			@Override
+			public Adapter caseSystem(org.polarsys.chess.fla.flaxml.System object) {
+				return createSystemAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Component <em>Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.Component
+	 * @generated
+	 */
+	public Adapter createComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Components <em>Components</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.Components
+	 * @generated
+	 */
+	public Adapter createComponentsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.CompositeComponent <em>Composite Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.CompositeComponent
+	 * @generated
+	 */
+	public Adapter createCompositeComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Connection <em>Connection</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.Connection
+	 * @generated
+	 */
+	public Adapter createConnectionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Connections <em>Connections</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.Connections
+	 * @generated
+	 */
+	public Adapter createConnectionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.DocumentRoot <em>Document Root</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.DocumentRoot
+	 * @generated
+	 */
+	public Adapter createDocumentRootAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.Failure <em>Failure</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.Failure
+	 * @generated
+	 */
+	public Adapter createFailureAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.FptcRules <em>Fptc Rules</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.FptcRules
+	 * @generated
+	 */
+	public Adapter createFptcRulesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.InputPort <em>Input Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.InputPort
+	 * @generated
+	 */
+	public Adapter createInputPortAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.InputPorts <em>Input Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.InputPorts
+	 * @generated
+	 */
+	public Adapter createInputPortsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.NamedElement <em>Named Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.NamedElement
+	 * @generated
+	 */
+	public Adapter createNamedElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.OutputPort <em>Output Port</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.OutputPort
+	 * @generated
+	 */
+	public Adapter createOutputPortAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.OutputPorts <em>Output Ports</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.OutputPorts
+	 * @generated
+	 */
+	public Adapter createOutputPortsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.RuleString <em>Rule String</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.RuleString
+	 * @generated
+	 */
+	public Adapter createRuleStringAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.SimpleComponent <em>Simple Component</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.SimpleComponent
+	 * @generated
+	 */
+	public Adapter createSimpleComponentAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.polarsys.chess.fla.flaxml.System <em>System</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.polarsys.chess.fla.flaxml.System
+	 * @generated
+	 */
+	public Adapter createSystemAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //FlaxmlAdapterFactory
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceFactoryImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceFactoryImpl.java
new file mode 100644
index 0000000..021513c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceFactoryImpl.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.resource.Resource;
+
+import org.eclipse.emf.ecore.resource.impl.ResourceFactoryImpl;
+
+import org.eclipse.emf.ecore.xmi.XMLResource;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource Factory</b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.util.FlaxmlResourceImpl
+ * @generated
+ */
+public class FlaxmlResourceFactoryImpl extends ResourceFactoryImpl {
+	/**
+	 * Creates an instance of the resource factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlResourceFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Resource createResource(URI uri) {
+		XMLResource result = new FlaxmlResourceImpl(uri);
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_EXTENDED_META_DATA, Boolean.TRUE);
+
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_SCHEMA_LOCATION, Boolean.TRUE);
+
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+		result.getDefaultSaveOptions().put(XMLResource.OPTION_USE_ENCODED_ATTRIBUTE_STYLE, Boolean.TRUE);
+
+		result.getDefaultLoadOptions().put(XMLResource.OPTION_USE_LEXICAL_HANDLER, Boolean.TRUE);
+		return result;
+	}
+
+} //FlaxmlResourceFactoryImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceImpl.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceImpl.java
new file mode 100644
index 0000000..c3f9124
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlResourceImpl.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.common.util.URI;
+
+import org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Resource </b> associated with the package.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.util.FlaxmlResourceFactoryImpl
+ * @generated
+ */
+public class FlaxmlResourceImpl extends XMLResourceImpl {
+	/**
+	 * Creates an instance of the resource.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param uri the URI of the new resource.
+	 * @generated
+	 */
+	public FlaxmlResourceImpl(URI uri) {
+		super(uri);
+	}
+
+} //FlaxmlResourceImpl
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlSwitch.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlSwitch.java
new file mode 100644
index 0000000..48f4527
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlSwitch.java
@@ -0,0 +1,457 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.Switch;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public class FlaxmlSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static FlaxmlPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlSwitch() {
+		if (modelPackage == null) {
+			modelPackage = FlaxmlPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case FlaxmlPackage.COMPONENT: {
+				Component component = (Component)theEObject;
+				T result = caseComponent(component);
+				if (result == null) result = caseNamedElement(component);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.COMPONENTS: {
+				Components components = (Components)theEObject;
+				T result = caseComponents(components);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.COMPOSITE_COMPONENT: {
+				CompositeComponent compositeComponent = (CompositeComponent)theEObject;
+				T result = caseCompositeComponent(compositeComponent);
+				if (result == null) result = caseComponent(compositeComponent);
+				if (result == null) result = caseNamedElement(compositeComponent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.CONNECTION: {
+				Connection connection = (Connection)theEObject;
+				T result = caseConnection(connection);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.CONNECTIONS: {
+				Connections connections = (Connections)theEObject;
+				T result = caseConnections(connections);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.DOCUMENT_ROOT: {
+				DocumentRoot documentRoot = (DocumentRoot)theEObject;
+				T result = caseDocumentRoot(documentRoot);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.FAILURE: {
+				Failure failure = (Failure)theEObject;
+				T result = caseFailure(failure);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.FPTC_RULES: {
+				FptcRules fptcRules = (FptcRules)theEObject;
+				T result = caseFptcRules(fptcRules);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.INPUT_PORT: {
+				InputPort inputPort = (InputPort)theEObject;
+				T result = caseInputPort(inputPort);
+				if (result == null) result = caseNamedElement(inputPort);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.INPUT_PORTS: {
+				InputPorts inputPorts = (InputPorts)theEObject;
+				T result = caseInputPorts(inputPorts);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.NAMED_ELEMENT: {
+				NamedElement namedElement = (NamedElement)theEObject;
+				T result = caseNamedElement(namedElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.OUTPUT_PORT: {
+				OutputPort outputPort = (OutputPort)theEObject;
+				T result = caseOutputPort(outputPort);
+				if (result == null) result = caseNamedElement(outputPort);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.OUTPUT_PORTS: {
+				OutputPorts outputPorts = (OutputPorts)theEObject;
+				T result = caseOutputPorts(outputPorts);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.RULE_STRING: {
+				RuleString ruleString = (RuleString)theEObject;
+				T result = caseRuleString(ruleString);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.SIMPLE_COMPONENT: {
+				SimpleComponent simpleComponent = (SimpleComponent)theEObject;
+				T result = caseSimpleComponent(simpleComponent);
+				if (result == null) result = caseComponent(simpleComponent);
+				if (result == null) result = caseNamedElement(simpleComponent);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case FlaxmlPackage.SYSTEM: {
+				org.polarsys.chess.fla.flaxml.System system = (org.polarsys.chess.fla.flaxml.System)theEObject;
+				T result = caseSystem(system);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseComponent(Component object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Components</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Components</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseComponents(Components object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Composite Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCompositeComponent(CompositeComponent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Connection</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Connection</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConnection(Connection object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Connections</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Connections</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConnections(Connections object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Document Root</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Document Root</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDocumentRoot(DocumentRoot object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Failure</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Failure</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFailure(Failure object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fptc Rules</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Fptc Rules</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFptcRules(FptcRules object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Input Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Input Port</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInputPort(InputPort object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Input Ports</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Input Ports</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInputPorts(InputPorts object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Named Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNamedElement(NamedElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Output Port</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Output Port</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOutputPort(OutputPort object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Output Ports</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Output Ports</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseOutputPorts(OutputPorts object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Rule String</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Rule String</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRuleString(RuleString object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Simple Component</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSimpleComponent(SimpleComponent object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>System</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>System</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSystem(org.polarsys.chess.fla.flaxml.System object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //FlaxmlSwitch
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlValidator.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlValidator.java
new file mode 100644
index 0000000..0009e35
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlValidator.java
@@ -0,0 +1,376 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.common.util.DiagnosticChain;
+import org.eclipse.emf.common.util.ResourceLocator;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.util.EObjectValidator;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeUtil;
+import org.eclipse.emf.ecore.xml.type.util.XMLTypeValidator;
+import org.polarsys.chess.fla.flaxml.Component;
+import org.polarsys.chess.fla.flaxml.Components;
+import org.polarsys.chess.fla.flaxml.CompositeComponent;
+import org.polarsys.chess.fla.flaxml.Connection;
+import org.polarsys.chess.fla.flaxml.Connections;
+import org.polarsys.chess.fla.flaxml.DocumentRoot;
+import org.polarsys.chess.fla.flaxml.Failure;
+import org.polarsys.chess.fla.flaxml.FailureType;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.FptcRules;
+import org.polarsys.chess.fla.flaxml.InputPort;
+import org.polarsys.chess.fla.flaxml.InputPorts;
+import org.polarsys.chess.fla.flaxml.NamedElement;
+import org.polarsys.chess.fla.flaxml.OutputPort;
+import org.polarsys.chess.fla.flaxml.OutputPorts;
+import org.polarsys.chess.fla.flaxml.RuleString;
+import org.polarsys.chess.fla.flaxml.SimpleComponent;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Validator</b> for the model.
+ * <!-- end-user-doc -->
+ * @see org.polarsys.chess.fla.flaxml.FlaxmlPackage
+ * @generated
+ */
+public class FlaxmlValidator extends EObjectValidator {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final FlaxmlValidator INSTANCE = new FlaxmlValidator();
+
+	/**
+	 * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.common.util.Diagnostic#getSource()
+	 * @see org.eclipse.emf.common.util.Diagnostic#getCode()
+	 * @generated
+	 */
+	public static final String DIAGNOSTIC_SOURCE = "org.polarsys.chess.fla.flaxml";
+
+	/**
+	 * A constant with a fixed name that can be used as the base value for additional hand written constants.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0;
+
+	/**
+	 * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static final int DIAGNOSTIC_CODE_COUNT = GENERATED_DIAGNOSTIC_CODE_COUNT;
+
+	/**
+	 * The cached base package validator.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected XMLTypeValidator xmlTypeValidator;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlValidator() {
+		super();
+		xmlTypeValidator = XMLTypeValidator.INSTANCE;
+	}
+
+	/**
+	 * Returns the package of this validator switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EPackage getEPackage() {
+	  return FlaxmlPackage.eINSTANCE;
+	}
+
+	/**
+	 * Calls <code>validateXXX</code> for the corresponding classifier of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		switch (classifierID) {
+			case FlaxmlPackage.COMPONENT:
+				return validateComponent((Component)value, diagnostics, context);
+			case FlaxmlPackage.COMPONENTS:
+				return validateComponents((Components)value, diagnostics, context);
+			case FlaxmlPackage.COMPOSITE_COMPONENT:
+				return validateCompositeComponent((CompositeComponent)value, diagnostics, context);
+			case FlaxmlPackage.CONNECTION:
+				return validateConnection((Connection)value, diagnostics, context);
+			case FlaxmlPackage.CONNECTIONS:
+				return validateConnections((Connections)value, diagnostics, context);
+			case FlaxmlPackage.DOCUMENT_ROOT:
+				return validateDocumentRoot((DocumentRoot)value, diagnostics, context);
+			case FlaxmlPackage.FAILURE:
+				return validateFailure((Failure)value, diagnostics, context);
+			case FlaxmlPackage.FPTC_RULES:
+				return validateFptcRules((FptcRules)value, diagnostics, context);
+			case FlaxmlPackage.INPUT_PORT:
+				return validateInputPort((InputPort)value, diagnostics, context);
+			case FlaxmlPackage.INPUT_PORTS:
+				return validateInputPorts((InputPorts)value, diagnostics, context);
+			case FlaxmlPackage.NAMED_ELEMENT:
+				return validateNamedElement((NamedElement)value, diagnostics, context);
+			case FlaxmlPackage.OUTPUT_PORT:
+				return validateOutputPort((OutputPort)value, diagnostics, context);
+			case FlaxmlPackage.OUTPUT_PORTS:
+				return validateOutputPorts((OutputPorts)value, diagnostics, context);
+			case FlaxmlPackage.RULE_STRING:
+				return validateRuleString((RuleString)value, diagnostics, context);
+			case FlaxmlPackage.SIMPLE_COMPONENT:
+				return validateSimpleComponent((SimpleComponent)value, diagnostics, context);
+			case FlaxmlPackage.SYSTEM:
+				return validateSystem((org.polarsys.chess.fla.flaxml.System)value, diagnostics, context);
+			case FlaxmlPackage.FAILURE_TYPE:
+				return validateFailureType((FailureType)value, diagnostics, context);
+			case FlaxmlPackage.FAILURE_TYPE_OBJECT:
+				return validateFailureTypeObject((FailureType)value, diagnostics, context);
+			case FlaxmlPackage.PATTERN_TYPE:
+				return validatePatternType((String)value, diagnostics, context);
+			default:
+				return true;
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateComponent(Component component, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(component, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateComponents(Components components, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(components, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateCompositeComponent(CompositeComponent compositeComponent, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(compositeComponent, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateConnection(Connection connection, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(connection, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateConnections(Connections connections, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(connections, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateDocumentRoot(DocumentRoot documentRoot, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(documentRoot, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateFailure(Failure failure, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(failure, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateFptcRules(FptcRules fptcRules, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(fptcRules, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateInputPort(InputPort inputPort, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(inputPort, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateInputPorts(InputPorts inputPorts, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(inputPorts, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateNamedElement(NamedElement namedElement, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(namedElement, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateOutputPort(OutputPort outputPort, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(outputPort, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateOutputPorts(OutputPorts outputPorts, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(outputPorts, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateRuleString(RuleString ruleString, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(ruleString, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateSimpleComponent(SimpleComponent simpleComponent, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(simpleComponent, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateSystem(org.polarsys.chess.fla.flaxml.System system, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validate_EveryDefaultConstraint(system, diagnostics, context);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateFailureType(FailureType failureType, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validateFailureTypeObject(FailureType failureTypeObject, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return true;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validatePatternType(String patternType, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		boolean result = validatePatternType_Pattern(patternType, diagnostics, context);
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @see #validatePatternType_Pattern
+	 */
+	public static final  PatternMatcher [][] PATTERN_TYPE__PATTERN__VALUES =
+		new PatternMatcher [][] {
+			new PatternMatcher [] {
+				XMLTypeUtil.createPatternMatcher("[^>]+\\.[^>]+->[^>]+\\.[^>]+")
+			}
+		};
+
+	/**
+	 * Validates the Pattern constraint of '<em>Pattern Type</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public boolean validatePatternType_Pattern(String patternType, DiagnosticChain diagnostics, Map<Object, Object> context) {
+		return validatePattern(FlaxmlPackage.Literals.PATTERN_TYPE, patternType, PATTERN_TYPE__PATTERN__VALUES, diagnostics, context);
+	}
+
+	/**
+	 * Returns the resource locator that will be used to fetch messages for this validator's diagnostics.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		// TODO
+		// Specialize this to return a resource locator for messages specific to this validator.
+		// Ensure that you remove @generated or mark it @generated NOT
+		return super.getResourceLocator();
+	}
+
+} //FlaxmlValidator
diff --git a/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlXMLProcessor.java b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlXMLProcessor.java
new file mode 100644
index 0000000..1b96443
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.flaxml/src/org/polarsys/chess/fla/flaxml/util/FlaxmlXMLProcessor.java
@@ -0,0 +1,59 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ */
+package org.polarsys.chess.fla.flaxml.util;
+
+import java.util.Map;
+
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.xmi.util.XMLProcessor;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+/**
+ * This class contains helper methods to serialize and deserialize XML documents
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class FlaxmlXMLProcessor extends XMLProcessor {
+
+	/**
+	 * Public constructor to instantiate the helper.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FlaxmlXMLProcessor() {
+		super((EPackage.Registry.INSTANCE));
+		FlaxmlPackage.eINSTANCE.eClass();
+	}
+	
+	/**
+	 * Register for "*" and "xml" file extensions the FlaxmlResourceFactoryImpl factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected Map<String, Resource.Factory> getRegistrations() {
+		if (registrations == null) {
+			super.getRegistrations();
+			registrations.put(XML_EXTENSION, new FlaxmlResourceFactoryImpl());
+			registrations.put(STAR_EXTENSION, new FlaxmlResourceFactoryImpl());
+		}
+		return registrations;
+	}
+
+} //FlaxmlXMLProcessor
diff --git a/plugins/org.polarsys.chess.fla.transformations/.classpath b/plugins/org.polarsys.chess.fla.transformations/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla.transformations/.project b/plugins/org.polarsys.chess.fla.transformations/.project
new file mode 100644
index 0000000..1816fd8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/.project
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.fla.transformations</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.m2m.qvt.oml.project.QVTOBuilder</name>
+			<arguments>
+				<dictionary>
+					<key>src_container</key>
+					<value>transforms</value>
+				</dictionary>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2m.qvt.oml.project.QVTONature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/org.polarsys.chess.fla.transformations/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap b/plugins/org.polarsys.chess.fla.transformations/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap
new file mode 100644
index 0000000..aa9cc5b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/.settings/org.eclipse.m2m.qvt.oml.mmodel.urimap
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="ASCII"?>
+<uriMap:MappingContainer xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:uriMap="http:///www.eclipse.org/m2m/qvt/oml/MModelUriMap/1.0.0">
+  <mapping sourceURI="http://www.polarsys.org/chess/fla/flaxml" targetURI="platform:/resource/org.polarsys.chess.fla.flaxml/model/flaxml.ecore"/>
+  <mapping sourceURI="http://www.polarsys.org/chess/fla/flamm" targetURI="platform:/resource/org.polarsys.chess.fla.flamm/model/flamm.ecore"/>
+</uriMap:MappingContainer>
diff --git a/plugins/org.polarsys.chess.fla.transformations/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla.transformations/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2a3f8eb
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Concerto-FLA Transformations Plug-in
+Bundle-SymbolicName: org.polarsys.chess.fla.transformations;singleton:=true
+Bundle-Version: 0.1.0.qualifier
+Bundle-Vendor: 
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.m2m.qvt.oml,
+ org.eclipse.m2m.qvt.oml.project,
+ org.eclipse.emf.ecore,
+ org.eclipse.uml2.uml;bundle-version="5.0.0",
+ org.polarsys.chess.chessmlprofile,
+ org.eclipse.m2m.qvt.oml.runtime,
+ org.polarsys.chess.fla.flamm
+Export-Package: org.polarsys.chess.fla.transformations.utilities
diff --git a/plugins/org.polarsys.chess.fla.transformations/about.html b/plugins/org.polarsys.chess.fla.transformations/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/about.html
@@ -0,0 +1,28 @@
+<!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 14, 2008</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 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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/plugins/org.polarsys.chess.fla.transformations/build.properties b/plugins/org.polarsys.chess.fla.transformations/build.properties
new file mode 100644
index 0000000..ca8ca05
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/build.properties
@@ -0,0 +1,18 @@
+###############################################################################
+#                  CHESS core plugin
+#
+#               Copyright (C) 2011-2015
+#            Mälardalen University, Sweden
+#
+#
+#  All rights reserved. This program and the accompanying materials
+#  are made available under the terms of the Eclipse Public License
+#  v1.0 which accompanies this distribution, and is available at
+#  http://www.eclipse.org/legal/epl-v10.html
+###############################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               transforms/,\
+               plugin.xml
diff --git a/plugins/org.polarsys.chess.fla.transformations/plugin.xml b/plugins/org.polarsys.chess.fla.transformations/plugin.xml
new file mode 100644
index 0000000..95a840b
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/plugin.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.m2m.qvt.oml.runtime.qvtTransformation">
+      <transformation
+            file="transforms/Chess2FlaMM.qvto"
+            id="org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM">
+      </transformation>
+      <transformation
+            file="transforms/FlaMM2Chess_BackPropagation.qvto"
+            id="org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation">
+      </transformation>
+      <transformation
+            file="transforms/FlaMM2FlaXML.qvto"
+            id="org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML">
+      </transformation>
+      <transformation
+            file="transforms/FlaXML2FlaMM.qvto"
+            id="org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM">
+      </transformation>
+      <transformation
+            file="transforms/Chess2FlaXML.qvto"
+            id="org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML">
+      </transformation>
+   </extension>
+   <extension
+         point="org.eclipse.m2m.qvt.oml.javaBlackboxUnits">
+      <unit
+            name="blackboxlibrary"
+            namespace="org.polarsys.chess.fla.transformations.utilities">
+         <library
+               class="org.polarsys.chess.fla.transformations.utilities.UtilitiesLibrary"
+               name="UtilitiesLibrary">
+            <metamodel
+                  nsURI="http://www.eclipse.org/emf/2002/Ecore">
+            </metamodel>
+            <metamodel
+                  nsURI="http://www.eclipse.org/uml2/5.0.0/UML">
+            </metamodel>
+            <metamodel
+                  nsURI="http://www.polarsys.org/chess/fla/flamm">
+            </metamodel>
+         </library>
+      </unit>
+   </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla.transformations/src/org/polarsys/chess/fla/transformations/utilities/UtilitiesLibrary.java b/plugins/org.polarsys.chess.fla.transformations/src/org/polarsys/chess/fla/transformations/utilities/UtilitiesLibrary.java
new file mode 100644
index 0000000..3b2aef0
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/src/org/polarsys/chess/fla/transformations/utilities/UtilitiesLibrary.java
@@ -0,0 +1,288 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.transformations.utilities;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
+
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.m2m.qvt.oml.blackbox.java.Operation;
+import org.eclipse.uml2.uml.Comment;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.polarsys.chess.fla.flamm.Expression;
+import org.polarsys.chess.fla.flamm.Failure;
+import org.polarsys.chess.fla.flamm.FlammFactory;
+import org.polarsys.chess.fla.flamm.Port;
+import org.polarsys.chess.fla.flamm.Rule;
+import org.polarsys.chess.fla.flamm.SimpleComponent;
+import org.polarsys.chess.fla.flamm.FailureTypes.FailureType;
+
+
+public class UtilitiesLibrary {
+	private static final String FLA_PREFIX = "FLA:";
+	private static final String FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+
+	
+	@Operation(contextual=true)
+	public static String aStringMethod(String s) {
+		return s.toUpperCase();
+	}
+
+	@Operation(contextual=true)
+	public static String getXmiId(Element umlElement) {
+		Resource resource = umlElement.eResource();
+		if (resource != null){
+		    String id = resource.getURIFragment(umlElement);
+		    return id;
+		} else {
+			return UUID.randomUUID().toString();
+		}
+	}
+	
+	@Operation(contextual=true)
+	public static Element getElementWithXmiId(Element umlElement, String id) {
+		if (id == null || umlElement == null) {
+			return null;
+		}
+		
+		for (Element element : umlElement.getOwnedElements()) {
+			Resource resource = umlElement.eResource();
+			if (resource != null && id.equals(resource.getURIFragment(umlElement))){
+			    return element;
+			}
+		}
+		return null;
+	}
+	
+	@Operation(contextual=true) 
+	public static Rule getRuleFromRulestring(String flaRulestring, SimpleComponent component) {
+		String rulestring = flaRulestring;
+		if (flaRulestring.startsWith(FLA_PREFIX)) {
+			rulestring = flaRulestring.substring(FLA_PREFIX.length());
+		}
+		
+		String[] expressions = rulestring.split("->");
+		Rule rule = FlammFactory.eINSTANCE.createRule();
+		
+		rule.getInputExpression().addAll(string2Expressions(expressions[0], component.getInputPorts()));
+		rule.getOutputExpression().addAll(string2Expressions(expressions[1], component.getOutputPorts()));
+		
+		try {
+			validateRuleVariables(rule);
+		} catch (Exception e) {
+			throw new RuntimeException(e.getMessage() + " Component: " + component.getId());
+		}
+		return rule;
+	}
+	
+	private static void validateRuleVariables(Rule rule) {
+		Set<String> inputVariables = new HashSet<String>();
+		Set<String> outputVariables = new HashSet<String>();
+
+		for (Expression expression : rule.getInputExpression()) {
+			inputVariables.addAll(getAllVariableNames(expression));
+		}
+		
+		for (Expression expression : rule.getOutputExpression()) {
+			outputVariables.addAll(getAllVariableNames(expression));
+		}
+		
+		if (!inputVariables.containsAll(outputVariables)) {
+			// TODO: Fix error handling
+			outputVariables.removeAll(inputVariables);
+			throw new RuntimeException("Unknown variable(s) in output expression! " +
+					"(" + outputVariables + ")");
+		}
+		
+		if (!outputVariables.contains(inputVariables)) {
+			//TODO: Warning: input variable not used in output expression, consider using wildcard instead
+		}
+	}
+	
+	private static Set<String> getAllVariableNames(Expression expression) {
+		Set<String> variables = new HashSet<String>();
+		for (Failure failure : expression.getFailures()) {
+			if (failure.getType() == FailureType.VARIABLE) {
+				variables.add(failure.getId());
+			}
+		}
+		return variables;
+	}
+
+	static List<Expression> string2Expressions(String str, List<Port> list) {
+		List<Expression> expressions = new ArrayList<Expression>(); 
+		for (String s : splitToExpressions(str)) {
+			expressions.add(getExpression(s, list));
+		}
+		
+		return expressions;
+	}
+	
+	private static String[] splitToExpressions(String str) {
+		return str.split(",");
+	}
+
+	private static Expression getExpression(String s, List<Port> list) {
+		String[] parts = s.split("\\.");
+		String portName = parts[0];
+		String failureString = parts[1];
+		Failure failure = getFailureFromString(failureString);
+		
+		Expression expr = FlammFactory.eINSTANCE.createExpression();
+		expr.setPort(getPortByName(list, portName));
+		expr.getFailures().add(failure);
+		return expr;
+	}
+	
+	static Failure getFailureFromString(String failureString) {
+		Failure failure = FlammFactory.eINSTANCE.createFailure();
+		if (failureString.equals("noFailure")) {
+			failure.setType(FailureType.NO_FAILURE);
+			
+		} else if (failureString.equals("wildcard") || failureString.equals("_")) {
+			failure.setType(FailureType.WILDCARD);
+			
+		} else if (isProperFailure(failureString)) {
+			failure.setType(FailureType.FAILURE);
+			
+		} else {
+			failure.setType(FailureType.VARIABLE);
+		}
+		
+		failure.setId(failureString);
+		return failure;
+	}
+	
+	// Since CHESS-ML is using enumerated failure types, this is necessary to tell 
+	// failure types and variable names apart.
+	protected static boolean isProperFailure(String failure) {
+		return org.polarsys.chess.chessmlprofile.Dependability.FailurePropagation.FailurePropagationDataTypes.
+				FailureType.get(failure) != null;
+	}
+
+	private static Port getPortByName(List<Port> list, String portName) {
+		for(Port port : list) {
+			if (port.getName().equals(portName)) {
+				return port;
+			}
+		}
+		return null;
+	}
+
+	@Operation(contextual=true)
+	public static void toRuleExpression(String ruleString, Expression expression) {
+		String portId = ruleString.substring(0, ruleString.indexOf('.'));
+		expression.setPort(getPortById(portId));
+		
+		expression.getFailures().add(null);
+	}
+	
+	private static Port getPortById(String portId) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	
+	@Operation(contextual=true)
+	public static String rule2String(Rule rule) {
+		String result = "";
+		result += expressionList2string(rule.getInputExpression());
+		result += "->";
+		result += expressionList2string(rule.getOutputExpression());
+		return result;
+	}
+	
+	protected static String expressionList2string(List<Expression> list) {
+		String result = "";
+		for (Expression expression : list) {
+			result += expression.getPort().getName() + "." + failureList2String(expression.getFailures()) + ",";
+		}
+		if (result.endsWith(",")) {
+			result = result.substring(0, result.length() - 1);
+		}
+		return result;
+	}
+	
+	protected static String failureList2String(List<Failure> list) {
+		if (list == null || list.isEmpty()) {
+			return "";
+			
+		} else if (list.size() == 1) {
+			return failure2string(list.get(0));
+			
+		} else {
+			String result = "{";
+			for (int i = 0; i < list.size(); i++) {
+				result += failure2string(list.get(i));
+				if (i < list.size() - 1) {
+					result += ",";
+				}
+			}
+			result += "}";
+			return result;
+		}
+	}
+	
+	/*
+	 * Only FPTC for now
+	 */
+	protected static String failure2string(Failure failure) {
+		return failure.getId();
+	}
+	
+	@Operation(contextual=true)
+	public static boolean blackboxApplyStereotype(Element element, String stereotypeQName) {
+		Stereotype stereotype = element.getApplicableStereotype(stereotypeQName);
+		Object returnValue = null;
+		if (stereotype != null) {
+			returnValue = element.applyStereotype(stereotype);
+		}
+		return returnValue != null;
+	}
+	
+	@Operation(contextual=true)
+	public static Comment blackboxCreateFptcComment(Element owner, NamedElement annotated, Property partWithPort) {
+		Comment comment = owner.createOwnedComment();
+		comment.getAnnotatedElements().add(annotated);
+		comment.applyStereotype(comment.getApplicableStereotype(FPTC_SPECIFICATION_STEREOTYPE));
+		Stereotype s = comment.getAppliedStereotype(FPTC_SPECIFICATION_STEREOTYPE);
+		comment.setValue(s, "partWithPort", partWithPort);
+		String commentBody = "FLA: " + getName(partWithPort);
+		if (partWithPort != annotated) {
+			commentBody += "." + getName(annotated);
+		}
+		comment.setBody(commentBody);
+		return comment;
+	}
+	
+	protected static String getName(NamedElement element) {
+		if (element != null && element.getName() != null) {
+			return element.getName();
+		} else {
+			return "";
+		}
+	}
+	
+//	@Operation(contextual=true)
+//	public static Set<Port> getConnectedPorts(CompositeComponent component) {
+//		Set<Port> ports = new HashSet<Port>();
+//		for (Port port : component.getInputPorts()) {
+//			
+//		}
+//	}
+}
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto
new file mode 100644
index 0000000..ea977f8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto
@@ -0,0 +1,208 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+
+import PortUtilities;
+import CommonUtilities;
+
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+modeltype ChessFailureTypes uses 'http:///CHESS/Dependability/FailurePropagation/FailurePropagationDataTypes.ecore';
+modeltype ChessCore uses 'http://CHESS/Core';
+
+modeltype FLA uses flamm('http://www.polarsys.org/chess/fla/flamm');
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype MARTE uses "http://www.eclipse.org/papyrus/GCM/1";
+modeltype SySML uses "http://www.eclipse.org/papyrus/0.7.0/SysML/PortAndFlows";
+
+
+transformation Chess2FlaMM(in source : Chess, out target : FLA);
+
+// Qualified names of stereotypes
+property FAILURE_PROPAGATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FailurePropagationAnalysis";
+property FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+property FPTC_RULE_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTC";
+property FLA_BEHAVIOUR_SPECIFICATION = "CHESS::Dependability::FailurePropagation::FLABehavior";
+
+// Platform selected by user
+configuration property selectedPlatformQName : String;
+
+property model : Model;
+property rootComponent : Class;
+
+main() {
+	this.model := source.rootObjects()![Model];
+	var selectedInstSpec : Package = model.findElementByQualifiedName(selectedPlatformQName).oclAsType(Package);
+	this.rootComponent := selectedInstSpec.ownedElement[InstanceSpecification]->
+		selectOne(name = selectedInstSpec.name.substringBefore("_instSpec")).classifier![Class];
+	//this.rootComponent.ownedComment += object Comment {body := "hello chess"; annotatedElement += rootComponent;};
+	this.rootComponent.UmlComponent2FlaComponent();
+}
+
+query UML::Class::UmlComponent2FlaComponent() : FLA::Component {
+	var flaComponent : FLA::Component;
+	if (self.isComposite()) {
+		flaComponent := self.UmlComponent2CompositeComponent();
+	} else {
+		flaComponent := self.UmlComponent2SimpleComponent();
+	};
+	
+	flaComponent.name := self.name;
+	flaComponent.id := self.getTransformationId();
+	flaComponent.inputPorts := self.ownedPort->select(port : UML::Port | port.isInputPort()).umlInputPort2flaPort(flaComponent);
+	flaComponent.outputPorts := self.ownedPort->select(port : UML::Port | port.isOutputPort()).umlOutputPort2flaPort(flaComponent);
+	
+	if (flaComponent.oclIsTypeOf(SimpleComponent)) {
+		setRulesInComponent(flaComponent.oclAsType(SimpleComponent), self.getRuleStrings());
+	} else if (flaComponent.oclIsTypeOf(CompositeComponent)) {
+		flaComponent.oclAsType(CompositeComponent).connectPorts(self.ownedMember[Connector]);
+	};
+	return flaComponent;
+}
+
+// Return a Fla component based on a property
+// Component data wil be overridden by property data where available
+query Property::asFlaComponent() : FLA::Component {
+	if (not self.hasPorts()) {
+		return null;
+	};
+	var component := self.type.oclAsType(Class).UmlComponent2FlaComponent();
+	// Override component name and id with property identity
+	component.name := self.name;
+	component.id := self.getTransformationId();
+	// Override rules in component with property rules, if present
+	if (component.oclIsTypeOf(SimpleComponent)) {
+		setRulesInComponent(component.oclAsType(SimpleComponent), self.getRuleStrings());
+	};
+	return component;
+}
+
+query UML::Class::UmlComponent2CompositeComponent() : FLA::CompositeComponent {
+	var flaComponent = object FLA::CompositeComponent {};
+	flaComponent.components += self.ownedMember->select(oclIsTypeOf(Property)).oclAsType(Property).asFlaComponent();
+	//connections += self.ownedMember[Connector]->reject(_end->exists(role = null))->map umlConnector2flaConnection();
+	return flaComponent;
+}
+
+query UML::Class::UmlComponent2SimpleComponent() : FLA::SimpleComponent {
+	var flaComponent = object FLA::SimpleComponent {};
+	return flaComponent;
+}
+
+query FLA::Component::getPorts() : Set(FLA::Port) {
+	return self.inputPorts->union(self.outputPorts);
+}
+
+query UML::Port::umlOutputPort2flaPort(owner : FLA::Component) : FLA::Port {
+	var resultPort = object FLA::Port {id := self.getTransformationId(); name := self.name};
+	resultPort.owner := owner;
+	return resultPort;
+}
+
+query UML::Port::umlInputPort2flaPort(owner : FLA::Component) : FLA::Port {
+	var resultPort = object FLA::Port {id := self.getTransformationId(); name := self.name};
+	resultPort.owner := owner;
+	
+	if (self.owner = this.rootComponent) {
+		resultPort.failures := self.getInputFailures();
+	};
+	return resultPort;
+}
+
+query UML::Port::getInputFailures() : Bag(FLA::Failure) {
+	if (self.owner <> this.rootComponent) {
+		return null;
+	};
+	
+	var comment := this.rootComponent.ownedComment->selectOne(hasAnnotatedElement(self) and isStereotyped(FPTC_SPECIFICATION_STEREOTYPE));
+	var failures = comment.getStereotypeValue(FPTC_SPECIFICATION_STEREOTYPE, "failure");
+	var resultVar := failures.oclAsType(Collection(FailureType))->ChessFailureType2FlaFailure();
+	return resultVar;
+}
+
+query CompositeComponent::connectPorts(connections : Set(UML::Connector)) {
+	var ports = self.getPorts()->union(self.components.getPorts()->asSet());
+	connections.connectFlaPorts(ports, self);
+}
+
+query UML::Connector::connectFlaPorts(ports : Set(FLA::Port), component : CompositeComponent) {
+	var connectorEnds = self._end;
+	var connectedPorts = ports->select(port : FLA::Port | port.matches(connectorEnds->at(1), component) or port.matches(connectorEnds->at(2), component) )->asOrderedSet();
+	connectedPorts->at(1).connectedPorts += connectedPorts->at(2);
+	connectedPorts->at(2).connectedPorts += connectedPorts->at(1);
+}
+
+query FLA::Port::matches(connectorEnd : UML::ConnectorEnd, component : CompositeComponent) : Boolean {
+	return ((connectorEnd.role.getTransformationId() = self.id) and 
+		(((connectorEnd.partWithPort <> null) and (connectorEnd.partWithPort.getTransformationId() = self.owner.id))
+			or (connectorEnd.partWithPort = null and self.owner = component))) ;
+}
+
+query setRulesInComponent(inout component : FLA::SimpleComponent, ruleStrings : Collection(String)) {
+	if ((ruleStrings <> null) and (not ruleStrings->oclIsInvalid())) {
+		component.rules := ruleStrings.getRuleFromRulestring(component);
+	}
+}
+
+query UML::Element::getRuleStrings() : Collection(String) {
+	// Use FLABehavior if present
+	if (self.isStereotyped(FLA_BEHAVIOUR_SPECIFICATION)) {
+		var flaStereotype := self.getStereotypeApplication(FLA_BEHAVIOUR_SPECIFICATION).oclAsType(FLABehavior);
+		return flaStereotype.fptc.trim().tokenize(";").trim();
+	} else {
+		return null;
+	};
+}
+
+query UML::Component::getSelectedPlatform() : CHGaResourcePlatform {
+	var stereotype = self.getAppliedStereotype(FAILURE_PROPAGATION_STEREOTYPE);
+	if (stereotype = null) {
+		return null;
+	};
+	
+	var selectedPackage = self.getValue(stereotype, "platform").oclAsType(CHGaResourcePlatform);
+	return selectedPackage;
+}
+
+query UML::NamedElement::getTransformationId() : String {
+	//return self.getXmiId();
+	return self.getQualifiedName();
+}
+
+query ChessFailureTypes::FailureType::ChessFailureType2FlaFailure() : FLA::Failure {
+	var failure = object Failure {};
+	switch {
+		case (self = FailureType::noFailure) {
+			failure.type := FLA::FailureTypes::FailureType::noFailure;
+			failure.id := "noFailure";
+		}
+		case (self = FailureType::wildcard) {
+			failure.type := FLA::FailureTypes::FailureType::wildcard;
+			failure.id := "wildcard";
+		}
+		case (self = FailureType::variable) {
+			failure.type := FLA::FailureTypes::FailureType::variable;
+			failure.id := "notSet";
+			//TODO: not supported
+		}
+		else {
+			failure.type := FLA::FailureTypes::FailureType::failure;
+			failure.id := self.toString();
+		}
+	};
+	return failure;
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML.qvto
new file mode 100644
index 0000000..7bc7439
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/Chess2FlaXML.qvto
@@ -0,0 +1,190 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import PortUtilities;
+import CommonUtilities;
+
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+modeltype ChessFailureTypes uses 'http:///CHESS/Dependability/FailurePropagation/FailurePropagationDataTypes.ecore';
+modeltype ChessCore uses 'http://CHESS/Core';
+
+modeltype FLA uses 'http://www.polarsys.org/chess/fla/flaxml';
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype MARTE uses "http://www.eclipse.org/papyrus/GCM/1";
+modeltype SySML uses "http://www.eclipse.org/papyrus/0.7.0/SysML/PortAndFlows";
+
+
+transformation Chess2FlaXML(in source : Chess, out target : FLA);
+
+// Qualified names of stereotypes
+property FAILURE_PROPAGATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FailurePropagationAnalysis";
+property FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+property FPTC_RULE_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTC";
+
+// Platform selected by user
+configuration property selectedPlatformQName : String;
+
+property model : Model;
+property rootComponent : Class;
+
+main() {
+	model := source.rootObjects()![Model];
+	var selectedInstSpec : Package = model.findElementByQualifiedName(selectedPlatformQName).oclAsType(Package);
+	
+	selectedInstSpec.map selectedPlatform2System();
+}
+
+mapping Package::selectedPlatform2System() : System {
+	this.rootComponent := self.ownedElement[InstanceSpecification]->
+		selectOne(name = self.name.substringBefore("_instSpec")).classifier![Class];
+	component := rootComponent.UmlComponent2FlaComponent();
+}
+
+query UML::Class::UmlComponent2FlaComponent() : FLA::Component {
+	var flaComponent : FLA::Component;
+	if (self.isComposite()) {
+		flaComponent := self.UmlComponent2CompositeComponent();
+	} else {
+		flaComponent := self.UmlComponent2SimpleComponent();
+	};
+	
+	flaComponent.name := self.name;
+	flaComponent.id := self.getTransformationId();
+	flaComponent.inputPorts := object InputPorts {};
+	flaComponent.inputPorts.inputPort += self.ownedPort->select(port : Port | port.isInputPort())->port2InputPort();
+	flaComponent.outputPorts := object OutputPorts {};
+	flaComponent.outputPorts.outputPort := self.ownedPort->select(port : Port | port.isOutputPort())->port2OutputPort();
+	
+	return flaComponent;
+}
+
+query Property::getFlaComponent() : FLA::Component {
+	if (not self.hasPorts()) {
+		return null;
+	};
+	var component := self.type.oclAsType(Class).UmlComponent2FlaComponent();
+	component.name := self.name;
+	component.id := self.getTransformationId();
+	if (self.isStereotyped(FPTC_RULE_STEREOTYPE) and component.oclIsTypeOf(SimpleComponent)) {
+		var simpleComponent := component.oclAsType(SimpleComponent);
+		simpleComponent.rules.rule := self.getRules();
+	};
+	return component;
+}
+
+query UML::Class::UmlComponent2CompositeComponent() : FLA::CompositeComponent {
+	var flaComponent = object FLA::CompositeComponent {};
+	flaComponent.components := object Components {};
+	flaComponent.components.component += self.ownedMember->select(oclIsTypeOf(Property)).oclAsType(Property)->getFlaComponent();
+	flaComponent.connections := object Connections {};
+	flaComponent.connections.connection += self.ownedMember[Connector]->reject(_end->exists(role = null))->map umlConnector2flaConnection();
+	return flaComponent;
+}
+
+query UML::Class::UmlComponent2SimpleComponent() : FLA::SimpleComponent {
+	var flaComponent = object FLA::SimpleComponent {};
+	flaComponent.rules := object FptcRules {};
+	flaComponent.rules.rule := self.getRules();
+	return flaComponent;
+}
+
+query UML::Port::port2InputPort() : FLA::InputPort {
+	var resultPort = object FLA::InputPort {id := self.getTransformationId(); name := self.name};
+	
+	resultPort.inputFailure += self.getInputFailures();
+	return resultPort;
+}
+
+query UML::Port::port2OutputPort() : FLA::OutputPort {
+	var resultPort = object FLA::OutputPort {id := self.getTransformationId(); name := self.name};
+	return resultPort;
+}
+
+query UML::Port::getInputFailures() : Bag(FLA::Failure) {
+	if (self.owner <> rootComponent) {
+		return null;
+	};
+	
+	var comment := rootComponent.ownedComment->selectOne(hasAnnotatedElement(self) and isStereotyped(FPTC_SPECIFICATION_STEREOTYPE));
+	var failures = comment.getValue(comment.getAppliedStereotype(FPTC_SPECIFICATION_STEREOTYPE), "failure");
+	var resultVar := failures.oclAsType(Collection(FailureType))->ChessFailureType2FlaFailure();
+	return resultVar;
+}
+
+query UML::Element::getRules() : Collection(FLA::RuleString) {
+	var rules : Collection(RuleString);
+	var fptcStereotype : FPTC;
+	if (self.isStereotyped(FPTC_RULE_STEREOTYPE)) {
+		fptcStereotype := self.getStereotypeApplication(FPTC_RULE_STEREOTYPE).oclAsType(FPTC);
+	} else {
+		var fptccomment = self.ownedComment->selectOne(comment : Comment | comment.isStereotyped(FPTC_RULE_STEREOTYPE) and comment.hasAnnotatedElement(self));
+		fptcStereotype := fptccomment.getStereotypeApplication(fptccomment.getApplicableStereotype(FPTC_RULE_STEREOTYPE)).oclAsType(FPTC);
+	};
+	var ruleStrings := fptcStereotype.fptc.trim().tokenize(";").trim();
+	return ruleStrings->collect(s : String | object RuleString {pattern := s});
+}
+
+mapping UML::Connector::umlConnector2flaConnection() : FLA::Connection {
+	sourceId := self._end->at(1).role.getTransformationId();
+	targetId := self._end->at(2).role.getTransformationId();
+	sourceComponent := self._end->at(1).partWithPort.getTransformationId();
+	targetComponent := self._end->at(2).partWithPort.getTransformationId();
+}
+
+query UML::Component::getSelectedPlatform() : CHGaResourcePlatform {
+	var stereotype = self.getAppliedStereotype(FAILURE_PROPAGATION_STEREOTYPE);
+	if (stereotype = null) {
+		return null;
+	};
+	
+	var selectedPackage = self.getValue(stereotype, "platform").oclAsType(CHGaResourcePlatform);
+	return selectedPackage;
+}
+
+query Model::findDependabilityAnalysisPackage() : Package {
+	//var analysisPackage := self.nestedPackage->select(name = "modelAnalysisView")![Package];
+	//var dependabilityAnalysisPackage = analysisPackage.nestedPackage->select(name = "modelDependabilityAnalysisView")![Package];
+	return model.getView("DependabilityAnalysisView");
+}
+
+query FailureType::ChessFailureType2FlaFailure() : FLA::Failure {
+	var resultFailure = object FLA::Failure {};
+	switch {
+		case (self = FailureType::_late) {
+			resultFailure.type := FLA::FailureType::_late;
+		}
+		case (self = FailureType::early) {
+			resultFailure.type := FLA::FailureType::early;
+		}
+		case (self = FailureType::valueSubtle) {
+			resultFailure.type := FLA::FailureType::valueSubtle;
+		}
+		case (self = FailureType::valueCoarse) {
+			resultFailure.type := FLA::FailureType::valueCoarse;
+		}
+		case (self = FailureType::omission) {
+			resultFailure.type := FLA::FailureType::omission;
+		}
+		case (self = FailureType::commission) {
+			resultFailure.type := FLA::FailureType::commission;
+		}
+		case (self = FailureType::noFailure) {
+			resultFailure.type := FLA::FailureType::noFailure;
+		}
+	};
+	return resultFailure;
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/CommonUtilities.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/CommonUtilities.qvto
new file mode 100644
index 0000000..610f6b9
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/CommonUtilities.qvto
@@ -0,0 +1,98 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+modeltype chess uses chessmlprofile('http://CHESS');
+modeltype uml uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+
+
+library CommonUtilities;
+
+query Model::getView(viewName : String) : Package {
+	var seq := self.packagedElement[Package]-> union(self.packagedElement[Package].packagedElement[Package]);
+	return seq -> selectOne(isStereotyped("CHESS::Core::CHESSViews::" + viewName));
+}
+
+query NamedElement::getTransformationId() : String {
+	//return self.getXmiId();
+	return self.getQualifiedName();
+}
+
+query uml::Class::isComposite() : Boolean {
+	return self.ownedMember->exists(oclIsTypeOf(Property));
+}
+
+query InstanceSpecification::isComposite() : Boolean {
+	return self.ownedElement[Slot]->exists(slot : Slot | slot.definingFeature.oclIsKindOf(Port) = false); 
+}
+
+query uml::Property::hasPorts() : Boolean{
+	return not self.type.ownedElement[Port]->isEmpty();
+}
+
+query uml::Element::getPort(id : String) : uml::Port {
+	return self.ownedElement[uml::Port]->selectOne(getTransformationId() = id);
+}
+
+query uml::Component::getSubcomponent(id : String) : Class{
+	return self.ownedElement[Class]->selectOne(getTransformationId() = id);
+}
+
+query uml::Class::getProperty(id : String) : Property{
+	return self.ownedElement[Property]->selectOne(getTransformationId() = id);
+}
+
+query Comment::hasAnnotatedElement(element : Element) : Boolean {
+	return self.annotatedElement->exists(annotatedElement : Element | annotatedElement = element);
+}
+
+query Element::isStereotyped(stereoName : String) : Boolean {
+	return self.getAppliedStereotype(stereoName) <> null;
+}
+
+query Element::getStereotypeApplication(qualifiedName : String) : OclAny {
+	return self.getStereotypeApplication(self.getApplicableStereotype(qualifiedName));
+}
+
+query Element::applyStereotype(qualifiedName : String) : Stereotype{
+	var stereotype := self.getApplicableStereotype(qualifiedName);
+	if (stereotype <> null) {
+		self.applyStereotype(stereotype);
+	};
+	return stereotype;
+}
+
+query Element::getStereotypeValue(qualifiedName : String, propertyName : String) : OclAny {
+	var stereotype = self.getAppliedStereotype(qualifiedName);
+	if (stereotype = null) {
+		return null;
+	};
+	return self.getValue(self.getAppliedStereotype(qualifiedName), propertyName);
+}
+
+query Model::findElementByQualifiedName(in qName : String) : NamedElement {
+	var pathParts = qName.tokenize("::")->asOrderedSet();
+	assert fatal (pathParts->first() = "model");
+	if (pathParts->size() = 1) {
+		return self;
+	};
+	var i : Integer = 2;
+	var p : Package := self;
+	while (i < pathParts->size()) {
+		var packageName = pathParts->at(i); 
+		p := p.ownedElement[Package]->selectOne(name = pathParts->at(i));
+		i := i + 1;
+	};
+	return p.ownedMember[NamedElement]->selectOne(name = pathParts->last());
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto
new file mode 100644
index 0000000..998bb5c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto
@@ -0,0 +1,129 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+import PortUtilities;
+import CommonUtilities;
+
+modeltype Chess uses chessmlprofile('http://CHESS');
+modeltype ChessFailurePropagation uses 'http://CHESS/Dependability/FailurePropagation';
+modeltype ChessFailureTypes uses 'http:///CHESS/Dependability/FailurePropagation/FailurePropagationDataTypes.ecore';
+modeltype ChessCore uses 'http://CHESS/Core';
+
+modeltype FLA uses flamm('http://www.polarsys.org/chess/fla/flamm');
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+
+
+transformation FlaMM2Chess(in source : FLA, inout target : Chess);
+
+// Qualified names of stereotypes
+property FPTC_SPECIFICATION_STEREOTYPE = "CHESS::Dependability::FailurePropagation::FPTCSpecification";
+
+// Platform selected by user
+configuration property selectedPlatformQName : String;
+
+property chessRootComponent : Class;
+property flaRootComponent : FLA::Component;
+
+main() {
+	this.flaRootComponent := source.rootObjects()![FLA::Component];
+	
+	var selectedInstSpec : Package = target.rootObjects()![Model].findElementByQualifiedName(selectedPlatformQName).oclAsType(Package);
+	this.chessRootComponent := selectedInstSpec.ownedElement[InstanceSpecification]->
+		selectOne(name = selectedInstSpec.name.substringBefore("_instSpec")).classifier![Class];
+
+	this.flaRootComponent.propagateResultsToChessRootComponent();
+}
+
+query FLA::Component::propagateResultsToChessRootComponent() {
+	self.outputPorts.propagateRootFailures();
+	if (self.oclIsTypeOf(CompositeComponent)) {
+		self.oclAsType(CompositeComponent).components.outputPorts.propagateSubFailures();
+	}
+}
+
+query FLA::Port::propagateRootFailures() {
+	var umlPort : UML::Port = chessRootComponent.getPort(self.id);
+	var fptcSpec := getFailureStereotype(umlPort, umlPort);
+	fptcSpec.failure := self.failures.toChessFailure();
+}
+
+query FLA::Port::propagateSubFailures() {
+	var umlComponentProperty := chessRootComponent.getProperty(self.owner.id);
+	var umlPort : UML::Port = umlComponentProperty.type.getPort(self.id);
+	var fptcSpec := getFailureStereotype(umlPort, umlComponentProperty);
+	fptcSpec.failure := self.failures.toChessFailure();
+}
+
+query getFailureStereotype(port : UML::Port, partWithPort : Property) : FPTCSpecification{
+	var comment := this.chessRootComponent.getComment(port, partWithPort);
+	return comment.getStereotypeApplication(FPTC_SPECIFICATION_STEREOTYPE).oclAsType(FPTCSpecification);
+}
+
+query UML::Element::getComment(annotated : UML::Port, partWithPortElement : Property) : Comment{
+	var comment := self.ownedComment->selectOne(hasAnnotatedElement(annotated) and 
+		getStereotypeValue(FPTC_SPECIFICATION_STEREOTYPE, "partWithPort") = partWithPortElement);
+		//TODO: Apply stereotype not working. Stereotype gets applied but is not present in the model after execution
+	if (comment = null) {
+		comment := chessRootComponent.blackboxCreateFptcComment(annotated, partWithPortElement);
+		//comment := object Comment {annotatedElement := annotated;};
+		//comment.body := target.objectsOfType(FPTCSpecification)->size().toString() + " ";
+		//chessRootComponent.ownedComment += comment;
+		//var stereo := comment.applyStereotype(FPTC_SPECIFICATION_STEREOTYPE);
+		//comment.blackboxApplyStereotype(FPTC_SPECIFICATION_STEREOTYPE);
+		//if (comment.isStereotyped(FPTC_SPECIFICATION_STEREOTYPE)) {
+			//comment.body := comment.body + "true " + stereo.toString()
+			//+ "\n" + chessRootComponent.allInstances(FPTCSpecification)->size().toString(); //.objectsOfType(FPTCSpecification)->size().toString();
+		//} else {
+		//	comment.body := "false";
+		//}
+	};
+	return comment;
+}
+
+query FLA::Failure::toChessFailure() : ChessFailureTypes::FailureType {
+	// would be nice to get this to work..
+//	var failures := ChessFailureTypes::FailureType.allInstances();
+//	var f1 := FLA::FailureTypes::FailureType::omission.toString();
+//	var f2 := self.type.toString();
+//	var f3 := failures->selectOne(type : ChessFailureTypes::FailureType | type.toString() = self.type.toString());
+	
+	var failure : ChessFailureTypes::FailureType;
+	switch {
+		case (self.type = FLA::FailureTypes::FailureType::noFailure) {
+			failure := ChessFailureTypes::FailureType::noFailure;
+		}
+		case (self.id = "late") {
+			failure := ChessFailureTypes::FailureType::_late;
+		}
+		case (self.id = "early") {
+			failure := ChessFailureTypes::FailureType::early;
+		}
+		case (self.id = "valueSubtle") {
+			failure := ChessFailureTypes::FailureType::valueSubtle;
+		}
+		case (self.id = "valueCoarse") {
+			failure := ChessFailureTypes::FailureType::valueCoarse;
+		}
+		case (self.id = "omission") {
+			failure := ChessFailureTypes::FailureType::omission;
+		}
+		case (self.id = "commission") {
+			failure := ChessFailureTypes::FailureType::commission;
+		}
+	};
+	return failure;
+}
+
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto
new file mode 100644
index 0000000..2e5031f
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+
+modeltype FLAMM uses 'http://www.polarsys.org/chess/fla/flamm';
+modeltype FLAXML uses 'http://www.polarsys.org/chess/fla/flaxml';
+
+
+transformation FlaMM2FlaXML(in source : FLAMM, out target : FLAXML);
+
+main() {
+	source.rootObjects()![FLAMM::Component].map flaMM2DocumentRoot();
+}
+
+mapping FLAMM::Component::flaMM2DocumentRoot() : FLAXML::DocumentRoot {
+	system := self.map flaMM2System();
+}
+
+mapping FLAMM::Component::flaMM2System() : FLAXML::System {
+	component := self.map MMComp2XmlComp();
+}
+
+mapping FLAMM::Component::MMComp2XmlComp() : FLAXML::Component {
+	init {
+	}
+}
+
+mapping FLAMM::CompositeComponent::MMComp2XmlComp() : FLAXML::Component {
+	init {
+		result := object FLAXML::CompositeComponent{};
+	}
+	copyNameAndId(self, result);
+	setPorts(self, result);
+	var compositeResult := result.oclAsType(FLAXML::CompositeComponent);
+	compositeResult.components := object Components{};
+	compositeResult.components.component := self.components.map MMComp2XmlComp();
+	compositeResult.connections := object Connections{};
+	compositeResult.connections.connection := getConnections(self);
+}
+
+mapping FLAMM::SimpleComponent::MMComp2XmlComp() : FLAXML::Component {
+	init {
+		result := object FLAXML::SimpleComponent{};
+	}
+	copyNameAndId(self, result);
+	setPorts(self, result);
+	var simpleResult := result.oclAsType(FLAXML::SimpleComponent);
+	simpleResult.rules := object FptcRules{};
+	simpleResult.rules.rule := self.rules.map MMRule2XMLRule();
+}
+
+mapping FLAMM::Rule::MMRule2XMLRule() : FLAXML::RuleString {
+	pattern := self.rule2String();
+}
+
+query getConnections(component : FLAMM::CompositeComponent) : Set(FLAXML::Connection) {
+	var connections : Set(FLAXML::Connection) = component.inputPorts->port2connections(component)->flatten()->asSet();
+	var outgoingConnections : Set(FLAXML::Connection) = component.components.outputPorts->flatten()->port2connections(component)->flatten()->asSet();
+	
+	return connections->union(outgoingConnections);
+}
+
+query FLAMM::Port::port2connections(component : FLAMM::CompositeComponent) : Set(FLAXML::Connection) {
+	var connections :=  self.connectedPorts->select(port : FLAMM::Port | port.owner = component or port.owner.parent = component)->collect(object FLAXML::Connection{
+		sourceId := self.id; sourceComponent := self.owner.id;
+		targetId := id; targetComponent := owner.id;});
+	return connections->asSet();
+}
+
+query copyNameAndId(sourceElement : FLAMM::NamedElement, inout targetElement : FLAXML::NamedElement) {
+	targetElement.name := sourceElement.name;
+	targetElement.id := sourceElement.id;
+}
+
+query setPorts(sourceElement : FLAMM::Component, inout targetElement : FLAXML::Component) {
+	targetElement.inputPorts := object InputPorts{};
+	targetElement.inputPorts.inputPort := sourceElement.inputPorts->map MMport2XMLinputport();
+	targetElement.outputPorts := object OutputPorts{};
+	targetElement.outputPorts.outputPort := sourceElement.outputPorts->map MMport2XMLoutputport();
+}
+
+mapping FLAMM::Port::MMport2XMLinputport() : FLAXML::InputPort {
+	copyNameAndId(self, result);
+	inputFailure := self.failures->MMfailure2XMLfailure();
+}
+
+mapping FLAMM::Port::MMport2XMLoutputport() : FLAXML::OutputPort {
+	copyNameAndId(self, result);
+	outputFailure := self.failures->MMfailure2XMLfailure();
+}
+
+query FLAMM::Failure::MMfailure2XMLfailure() : FLAXML::Failure {
+	var resultFailure = object FLAXML::Failure {};
+	switch {
+		case (self.type = FLAMM::FailureTypes::FailureType::noFailure) {
+			resultFailure.type := FLAXML::FailureType::noFailure;
+		}
+		case (self.id = "late") {
+			resultFailure.type := FLAXML::FailureType::_late;
+		}
+		case (self.id = "early") {
+			resultFailure.type := FLAXML::FailureType::early;
+		}
+		case (self.id = "valueSubtle") {
+			resultFailure.type := FLAXML::FailureType::valueSubtle;
+		}
+		case (self.id = "valueCoarse") {
+			resultFailure.type := FLAXML::FailureType::valueCoarse;
+		}
+		case (self.id = "omission") {
+			resultFailure.type := FLAXML::FailureType::omission;
+		}
+		case (self.id = "commission") {
+			resultFailure.type := FLAXML::FailureType::commission;
+		}
+	};
+	return resultFailure;
+}
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto
new file mode 100644
index 0000000..794e2d5
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto
@@ -0,0 +1,149 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import org.polarsys.chess.fla.transformations.utilities.blackboxlibrary;
+
+modeltype FLAMM uses 'http://www.polarsys.org/chess/fla/flamm';
+modeltype FLAXML uses 'http://www.polarsys.org/chess/fla/flaxml';
+
+
+transformation FlaXML2FlaMM(in source : FLAXML, out target : FLAMM);
+
+property xmlRootComponent : FLAXML::Component;
+
+main() {
+	xmlRootComponent := source.rootObjects()![FLAXML::DocumentRoot].system![System].component;
+	if (xmlRootComponent.oclIsInvalid()) {
+		xmlRootComponent := source.rootObjects()![System].component;
+	};
+	xmlRootComponent.map MMComp2XmlComp();
+}
+
+mapping FLAXML::Component::MMComp2XmlComp() : FLAMM::Component {
+	init {
+	}
+}
+
+mapping FLAXML::CompositeComponent::MMComp2XmlComp() : FLAMM::Component {
+	init {
+		result := object FLAMM::CompositeComponent{};
+	}
+	copyNameAndId(self, result);
+	setPorts(self, result);
+	var compositeResult := result.oclAsType(FLAMM::CompositeComponent);
+	compositeResult.components := self.components.component.map MMComp2XmlComp();
+	compositeResult.connectPorts(self.connections.connection);
+}
+
+mapping FLAXML::SimpleComponent::MMComp2XmlComp() : FLAMM::Component {
+	init {
+		result := object FLAMM::SimpleComponent{};
+	}
+	copyNameAndId(self, result);
+	setPorts(self, result);
+	var simpleResult := result.oclAsType(FLAMM::SimpleComponent);
+	simpleResult.rules := self.rules.rule->map XMLRule2MMRule(simpleResult);
+}
+
+mapping FLAXML::RuleString::XMLRule2MMRule(owningComponent : FLAMM::SimpleComponent) : FLAMM::Rule {
+	init {
+		result := self.pattern.getRuleFromRulestring(owningComponent);
+	}
+}
+
+query FLAMM::CompositeComponent::connectPorts(connections : Set(FLAXML::Connection)) {
+	var ports = self.getPorts()->union(self.components.getPorts()->asSet());
+	connections.connectFlaPorts(ports, self);
+}
+
+query FLAMM::Component::getPorts() : Set(FLAMM::Port) {
+	return self.inputPorts->union(self.outputPorts);
+}
+
+query FLAXML::Connection::connectFlaPorts(ports : Set(FLAMM::Port), component : CompositeComponent) {
+	var connectedPorts = ports->select(port : FLAMM::Port | port.isConnectedBy(self))->asOrderedSet();
+	connectedPorts->at(1).connectedPorts += connectedPorts->at(2);
+	connectedPorts->at(2).connectedPorts += connectedPorts->at(1);
+}
+
+query FLAMM::Port::isConnectedBy(connection : FLAXML::Connection) : Boolean {
+	var isSource = ((connection.sourceId = self.id) and (connection.sourceComponent = self.owner.id));
+	var isTarget = ((connection.targetId = self.id) and (connection.targetComponent = self.owner.id));
+	return isSource or isTarget;
+}
+
+query FLAMM::Port::port2connection(component : FLAMM::CompositeComponent) : Set(FLAXML::Connection) {
+	var res :=  self.connectedPorts->select(port : FLAMM::Port | port.owner = component or port.owner.parent = component)->collect(object FLAXML::Connection{
+		sourceId := self.id; sourceComponent := self.owner.id;
+		targetId := id; targetComponent := owner.id;});
+	return res->asSet();
+}
+
+query copyNameAndId(sourceElement : FLAXML::NamedElement, inout targetElement : FLAMM::NamedElement) {
+	targetElement.name := sourceElement.name;
+	targetElement.id := sourceElement.id;
+}
+
+query setPorts(sourceElement : FLAXML::Component, inout targetElement : FLAMM::Component) {
+	targetElement.inputPorts := sourceElement.inputPorts.inputPort->map XMLport2MMinputport();
+	targetElement.outputPorts := sourceElement.outputPorts.outputPort->map XMLport2MMoutputport();
+	targetElement.inputPorts->forEach(element) { element.owner := targetElement };
+	targetElement.outputPorts->forEach(element) { element.owner := targetElement };
+}
+
+mapping FLAXML::InputPort::XMLport2MMinputport() : FLAMM::Port {
+	copyNameAndId(self, result);
+	if (this.xmlRootComponent.inputPorts.inputPort->includes(self)) {
+		failures := self.inputFailure->XMLfailure2MMfailure();
+	}
+}
+
+mapping FLAXML::OutputPort::XMLport2MMoutputport() : FLAMM::Port {
+	copyNameAndId(self, result);
+}
+
+query FLAXML::Failure::XMLfailure2MMfailure() : FLAMM::Failure {
+	var resultFailure = object FLAMM::Failure {};
+	switch {
+		case (self.type = FLAXML::FailureType::noFailure) {
+			resultFailure.type := FLAMM::FailureTypes::FailureType::noFailure;
+			resultFailure.id := "noFailure";
+		}
+		case (self.type = FLAXML::FailureType::_late) {
+			resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+			resultFailure.id := "late";
+		}
+		case (self.type = FLAXML::FailureType::early) {
+			resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+			resultFailure.id := "early";
+		}
+		case (self.type = FLAXML::FailureType::valueSubtle) {
+			resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+			resultFailure.id := "valueSubtle";
+		}
+		case (self.type = FLAXML::FailureType::valueCoarse) {
+			resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+			resultFailure.id := "valueCoarse";
+		}
+		case (self.type = FLAXML::FailureType::omission) {
+			resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+			resultFailure.id := "omission";
+		}
+		case (self.type = FLAXML::FailureType::commission) {
+			resultFailure.type := FLAMM::FailureTypes::FailureType::failure;
+			resultFailure.id := "commission";
+		}
+	};
+	return resultFailure;
+}
+
diff --git a/plugins/org.polarsys.chess.fla.transformations/transforms/PortUtilities.qvto b/plugins/org.polarsys.chess.fla.transformations/transforms/PortUtilities.qvto
new file mode 100644
index 0000000..1167375
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla.transformations/transforms/PortUtilities.qvto
@@ -0,0 +1,101 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+import CommonUtilities;
+
+modeltype UML uses 'http://www.eclipse.org/uml2/5.0.0/UML';
+modeltype MARTE uses "http://www.eclipse.org/papyrus/GCM/1";
+modeltype SysML uses "http://www.eclipse.org/papyrus/0.7.0/SysML/PortAndFlows";
+
+
+library PortUtilities;
+
+property CLIENT_SERVER_PORT_STEREOTYPE = "MARTE::MARTE_DesignModel::GCM::ClientServerPort";
+property SYSML_FLOWPORT_STEREOTYPE = "SysML::PortAndFlows::FlowPort";
+property MARTE_FLOWPORT_STEREOTYPE = "MARTE::MARTE_DesignModel::GCM::FlowPort";
+
+query Port::isInputPort() : Boolean {
+	var st := self.getAppliedStereotypes();
+	if (self.isStereotyped(CLIENT_SERVER_PORT_STEREOTYPE)) {
+		var clientServerPort := self.getStereotypeApplication(self.getAppliedStereotype(CLIENT_SERVER_PORT_STEREOTYPE)).oclAsType(ClientServerPort);
+		return clientServerPort.isInputPort();
+	} else if (self.isStereotyped(MARTE_FLOWPORT_STEREOTYPE)) {
+		var flowPort := self.getStereotypeApplication(MARTE_FLOWPORT_STEREOTYPE).oclAsType(MARTE::FlowPort);
+		return flowPort.isInputPort();
+	} else if (self.isStereotyped(SYSML_FLOWPORT_STEREOTYPE)) {
+		var flowPort := self.getStereotypeApplication(SYSML_FLOWPORT_STEREOTYPE).oclAsType(SysML::FlowPort);
+		return flowPort.isInputPort();
+	};
+	return false;
+}
+
+query Port::isOutputPort() : Boolean {
+	if (self.isStereotyped(CLIENT_SERVER_PORT_STEREOTYPE)) {
+		var clientServerPort := self.getStereotypeApplication(CLIENT_SERVER_PORT_STEREOTYPE).oclAsType(ClientServerPort);
+		return clientServerPort.isOutputPort();
+	} else if (self.isStereotyped(MARTE_FLOWPORT_STEREOTYPE)) {
+		var flowPort := self.getStereotypeApplication(MARTE_FLOWPORT_STEREOTYPE).oclAsType(MARTE::FlowPort);
+		return flowPort.isOutputPort();
+	} else if (self.isStereotyped(SYSML_FLOWPORT_STEREOTYPE)) {
+		var flowPort := self.getStereotypeApplication(SYSML_FLOWPORT_STEREOTYPE).oclAsType(SysML::FlowPort);
+		return flowPort.isOutputPort();
+	};
+	return false;
+}
+
+query ClientServerPort::isInputPort() : Boolean {
+	var interfaces : Bag(Interface);
+	switch {
+		case (self.kind = ClientServerKind::required) {
+			interfaces := self.reqInterface;
+		}
+		case (self.kind = ClientServerKind::provided) {
+			interfaces := self.provInterface;
+		}
+	};
+	
+	return interfaces->getAllOperations()->flatten()->ownedParameter->flatten()->forAll((direction = ParameterDirectionKind::_in and self.kind = ClientServerKind::provided) or 
+		(direction = ParameterDirectionKind::_out and self.kind = ClientServerKind::required));
+}
+
+query ClientServerPort::isOutputPort() : Boolean {
+	var interfaces : Bag(Interface);
+	switch {
+		case (self.kind = ClientServerKind::required) {
+			interfaces := self.reqInterface;
+		}
+		case (self.kind = ClientServerKind::provided) {
+			interfaces := self.provInterface;
+		}
+	};
+	
+	return interfaces->getAllOperations()->flatten()->ownedParameter->flatten()->exists((direction = ParameterDirectionKind::_in and self.kind = ClientServerKind::required) or 
+		(direction = ParameterDirectionKind::_out and self.kind = ClientServerKind::provided));
+}
+
+query MARTE::FlowPort::isInputPort() : Boolean {
+	return self.direction = MARTE::FlowDirectionKind::_in;
+}
+
+query MARTE::FlowPort::isOutputPort() : Boolean {
+	return self.direction = MARTE::FlowDirectionKind::_out;
+}
+
+query SysML::FlowPort::isInputPort() : Boolean {
+	return self.direction = SysML::FlowDirection::_in;
+}
+
+query SysML::FlowPort::isOutputPort() : Boolean {
+	return self.direction = SysML::FlowDirection::_out;
+}
+
diff --git a/plugins/org.polarsys.chess.fla/.classpath b/plugins/org.polarsys.chess.fla/.classpath
new file mode 100644
index 0000000..ad32c83
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.polarsys.chess.fla/.project b/plugins/org.polarsys.chess.fla/.project
new file mode 100644
index 0000000..2670abe
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.polarsys.chess.fla</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>
diff --git a/plugins/org.polarsys.chess.fla/.settings/org.eclipse.jdt.core.prefs b/plugins/org.polarsys.chess.fla/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..c537b63
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/plugins/org.polarsys.chess.fla/META-INF/MANIFEST.MF b/plugins/org.polarsys.chess.fla/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..d80a27d
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/META-INF/MANIFEST.MF
@@ -0,0 +1,26 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Fla
+Bundle-SymbolicName: org.polarsys.chess.fla;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-Activator: org.polarsys.chess.fla.launch.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.core.resources,
+ org.eclipse.ui.ide,
+ org.eclipse.papyrus.infra.core,
+ org.eclipse.papyrus.editor,
+ org.eclipse.papyrus.uml.diagram.composite,
+ org.eclipse.papyrus.uml.diagram.clazz,
+ org.eclipse.papyrus.sysml.diagram.internalblock,
+ org.eclipse.papyrus.infra.gmfdiag.common,
+ org.eclipse.papyrus.infra.widgets.toolbox,
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.m2m.qvt.oml,
+ org.polarsys.chess.chessmlprofile,
+ org.polarsys.chess.core,
+ org.polarsys.chess.service,
+ org.polarsys.chess.fla.flamm,
+ org.polarsys.chess.fla.flaxml
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.polarsys.chess.fla/about.html b/plugins/org.polarsys.chess.fla/about.html
new file mode 100644
index 0000000..dd3c089
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/about.html
@@ -0,0 +1,28 @@
+<!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 14, 2008</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 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</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/plugins/org.polarsys.chess.fla/build.properties b/plugins/org.polarsys.chess.fla/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/plugins/org.polarsys.chess.fla/plugin.xml b/plugins/org.polarsys.chess.fla/plugin.xml
new file mode 100644
index 0000000..c814fc6
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/plugin.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            id="org.polarsys.chess.fla.analysis.command"
+            name="Concerto-FLA">
+      </command>
+      <command
+            id="org.polarsys.chess.fla.analysis.command.xml"
+            name="Concerto-FLA_XML">
+      </command>
+   </extension>
+   
+   	<extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="menu:org.eclipse.ui.main.menu">
+         <menu
+               id="org.polarsys.chess.mainMenu"
+               label="CHESS"
+               mnemonic="E">
+            <menu
+                  id="chess.menu.analysis.id"
+                  label="Analysis">
+               <menu
+                     id="chess.menu.analysis.dependability.id"
+                     label="Dependability">
+                  <command
+                        commandId="org.polarsys.chess.fla.analysis.command"
+                        label="Failure Logic Analysis (Concerto-FLA)"
+                        style="push">
+                     <visibleWhen
+                           checkEnabled="false">
+                        <or>
+                           <with
+                                 variable="activeEditorId">
+                              <equals
+                                    value="org.eclipse.uml2.uml.editor.presentation.UMLEditorID">
+                              </equals>
+                           </with>
+                           <with
+                                 variable="activeEditorInput">
+                              <adapt
+                                    type="org.eclipse.core.resources.IResource">
+                                 <test
+                                       property="org.eclipse.core.resources.projectNature"
+                                       value="org.polarsys.chess.CHESSNature">
+                                 </test>
+                              </adapt>
+                           </with>
+                        </or>
+                     </visibleWhen>
+                  </command>
+               </menu>
+            </menu>
+         </menu>
+      </menuContribution>
+      <menuContribution
+            allPopups="false"
+            locationURI="menu:org.eclipse.ui.main.menu">
+         <menu
+               id="org.polarsys.chess.mainMenu"
+               label="CHESS"
+               mnemonic="E">
+            <menu
+                  id="chess.menu.analysis.id"
+                  label="Analysis">
+               <menu
+                     id="chess.menu.analysis.dependability.id"
+                     label="Dependability">
+                  <command
+                        commandId="org.polarsys.chess.fla.analysis.command.xml"
+                        label="Failure Logic Analysis (Concerto-FLA) from XML"
+                        style="push">
+                  </command>
+               </menu>
+            </menu>
+         </menu>
+      </menuContribution>
+	</extension>   
+	
+	   <extension
+         point="org.eclipse.ui.handlers">
+      <handler
+     		class="org.polarsys.chess.fla.launch.FlaAnalysisCommand"
+            commandId="org.polarsys.chess.fla.analysis.command">
+      </handler>
+      <handler
+            class="org.polarsys.chess.fla.launch.FlaAnalysisCommandXml"
+            commandId="org.polarsys.chess.fla.analysis.command.xml">
+      </handler>    
+   </extension> 
+   
+	   <extension
+         point="org.eclipse.ui.preferencePages">
+      <page
+            category="org.polarsys.chess.preferences"
+            class="org.polarsys.chess.fla.preferences.ConcertoFlaPreferencePage"
+            id="org.polarsys.chess.fla.analysis.page"
+            name="Concerto-FLA">
+      </page>
+   </extension>
+    <extension
+          point="org.eclipse.core.runtime.preferences">
+       <initializer
+             class="org.polarsys.chess.fla.preferences.PreferenceInitializer">
+       </initializer>
+    </extension>
+
+</plugin>
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/Activator.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/Activator.java
new file mode 100644
index 0000000..08417c8
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/Activator.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+
+package org.polarsys.chess.fla;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+	public static final String PLUGIN_ID = "org.polarsys.chess.fla"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaAnalysisException.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaAnalysisException.java
new file mode 100644
index 0000000..0eb904c
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaAnalysisException.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.common;
+
+public class FlaAnalysisException extends Exception {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1695277209180788662L;
+
+	public FlaAnalysisException() {
+	}
+	
+	public FlaAnalysisException(Exception e) {
+		super(e);
+	}
+	
+	public FlaAnalysisException(String message) {
+		super(message);
+	}
+	
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaLogger.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaLogger.java
new file mode 100644
index 0000000..a15b435
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/FlaLogger.java
@@ -0,0 +1,38 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.common;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class FlaLogger implements org.polarsys.chess.fla.flamm.analysis.FlaLogger {
+
+	List<String> errors = new ArrayList<String>();
+	List<String> warnings = new ArrayList<String>();
+	
+	public void logError(String message) {
+		errors.add(message);
+	}
+	
+	public void logWarning(String message) {
+		warnings.add(message);
+	}
+	
+	public List<String> getErrors() {
+		return errors;
+	}
+	
+	public List<String> getWarnings() {
+		return warnings;
+	}
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/TransformationException.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/TransformationException.java
new file mode 100644
index 0000000..f16bcf3
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/common/TransformationException.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.common;
+
+public class TransformationException extends Exception {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1695277209180788662L;
+
+	public TransformationException() {
+	}
+	
+	public TransformationException(Exception e) {
+		super(e);
+	}
+	
+	
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunner.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunner.java
new file mode 100644
index 0000000..3528794
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunner.java
@@ -0,0 +1,259 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.impl;
+
+import static org.polarsys.chess.core.util.CHESSProjectSupport.printlnToCHESSConsole;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collections;
+import java.util.List;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+
+import org.polarsys.chess.fla.common.FlaAnalysisException;
+import org.polarsys.chess.fla.common.FlaLogger;
+import org.polarsys.chess.fla.common.TransformationException;
+import org.polarsys.chess.fla.flamm.Component;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+import org.polarsys.chess.fla.preferences.FlaParameters;
+import org.polarsys.chess.fla.transformations.QVToTransformation;
+
+public class FlaAnalysisRunner implements IRunnableWithProgress{
+
+	protected static final String FLA_MM_EXTENSION = "flamm";
+	protected static final String FLA_XML_EXTENSION = "flaxml";
+
+	protected IContainer targetFolder;
+	protected FlaSystem analyzedSystem;
+	protected URI chessModelUri;
+	protected Resource chessResource;
+	protected Resource flaResource;
+	protected String rootComponentQualifiedName = "";
+	protected DiagramEditPart diagramEditPart;
+	
+	public IContainer getTargetFolder() {
+		return targetFolder;
+	}
+
+	public void setTargetFolder(IContainer targetFolder) {
+		this.targetFolder = targetFolder;
+	}
+
+	public URI getModelURI() {
+		return chessModelUri;
+	}
+
+	public void setModelURI(URI modelURI) {
+		this.chessModelUri = modelURI;
+	}
+	
+	public void setRootComponent(String rootComponentQualifiedName) {
+		this.rootComponentQualifiedName = rootComponentQualifiedName;
+	}
+
+	public Resource getChessResource() {
+		return chessResource;
+	}
+
+	public void setChessResource(Resource chessResource) {
+		this.chessResource = chessResource;
+	}
+
+	public void setDiagramEditPart(DiagramEditPart diagramEditPart) {
+		this.diagramEditPart = diagramEditPart;
+	}
+
+	@Override
+	public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+		final int numSubTasks = 4;
+			
+		try {
+			monitor.beginTask("Running Failure Logic Analysis...",numSubTasks );
+			if (monitor.isCanceled()) {
+				throw new InterruptedException();
+			}
+
+			monitor.subTask("Performing model transformations...");
+			runInput2FlaTransformation(monitor);
+			monitor.worked(1);
+			
+			if (monitor.isCanceled()) {
+				throw new InterruptedException();
+			}
+
+			monitor.subTask("Applying failure propagation...");
+			analyzeModel(flaResource);
+			monitor.worked(1);
+			
+			if (monitor.isCanceled()) {
+				throw new InterruptedException();
+			}
+
+			monitor.subTask("Propagating analysis results to the model...");
+			backpropagateAnalysisResults(this.analyzedSystem, monitor);
+			createOutputXmlFile(this.analyzedSystem, monitor);
+			monitor.worked(1);
+
+			Thread.sleep(1000);
+		} catch (TransformationException e) {
+			printlnToCHESSConsole("*** Error running FLA transformation ***");
+			showErrorMessage("FLA Analysis", "Error during FLA transformation");
+			return;
+		} catch (FlaAnalysisException e) {
+			printlnToCHESSConsole("*** Error running FLA Analysis ***");
+			printlnToCHESSConsole(e.toString());
+			showErrorMessage("FLA Analysis", "Error during FLA analysis");
+			return;
+		}
+
+		printlnToCHESSConsole("*** Concerto-FLA analysis was performed successfully ***");
+		monitor.done();
+	}
+	
+	protected void analyzeModel(Resource resource) throws FlaAnalysisException {
+		analyzeModel((org.polarsys.chess.fla.flamm.Component) resource.getContents().get(0));
+		try {
+			resource.save(Collections.EMPTY_MAP);
+		} catch (IOException e) {
+			throw new FlaAnalysisException(e);
+		}
+	}
+	
+	protected void analyzeModel(Component component) throws FlaAnalysisException {
+		FlaSystem system = new FlaSystem(component);
+		analyzeModel(system);
+	}
+	
+	protected void analyzeModel(FlaSystem system) throws FlaAnalysisException {
+		setPreferences(system);
+		
+		org.polarsys.chess.fla.flamm.analysis.FlaLogger logger = new FlaLogger();
+		system.performAnalysis(logger);
+		if (!logger.getWarnings().isEmpty()) {
+			showErrorMessages("Warnings during analysis", logger.getWarnings());
+		}
+		analyzedSystem = system;
+	}
+	
+	protected void setPreferences(FlaSystem system) {
+		FlaParameters params = FlaParameters.getCurrentParameters();
+		system.initializeNoFailure(params.getInitNoFailure());
+		system.propagateUnmatchedFailures(params.getPropagateUnmatchedFailures());
+		system.treatUnmentionedPortsAsWildcards(params.getTreatUnmentionedPortsAsWildcards());
+	}
+	
+	protected void createOutputXmlFile(FlaSystem system, IProgressMonitor monitor) {
+		String xmlPath = getOutputXmlPath();
+		File outputFile = new File(xmlPath);
+		outputFile.delete();
+		
+//		FlaXmlWriter writer = new FlaXmlWriter(outputFile);
+//		writer.printSystem(system);
+		
+		try {
+			runFla2XmlTransformation(monitor);
+		} catch (TransformationException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+	
+	protected void backpropagateAnalysisResults(FlaSystem system, IProgressMonitor monitor) {
+		try {
+			runBackpropagationTransformation(monitor);
+		} catch (TransformationException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+	
+	protected void runInput2FlaTransformation(IProgressMonitor monitor) throws TransformationException{
+		FlammPackage.eINSTANCE.getClass();
+		ResourceSet resourceSet = new ResourceSetImpl();
+		URI flaMMuri = createFlaModelUri().appendFileExtension(FLA_MM_EXTENSION);
+		new File(flaMMuri.path()).delete();
+		flaResource = resourceSet.createResource(flaMMuri);
+		
+		QVToTransformation transformation = new QVToTransformation();
+		transformation.performChess2ConcertoFlaTransformation(chessResource, flaResource, monitor, rootComponentQualifiedName + "_instSpec");
+		if (flaResource.getContents() == null || flaResource.getContents().isEmpty()) {
+			throw new TransformationException();
+		}
+	}
+	
+	protected void runFla2XmlTransformation(IProgressMonitor monitor) throws TransformationException{
+		ResourceSet resourceSet = new ResourceSetImpl();
+		
+		URI xmlUri = createFlaModelUri().appendFileExtension(FLA_XML_EXTENSION);
+		
+		Resource xmlResource = resourceSet.createResource(xmlUri);
+		xmlResource.setURI(xmlUri.trimFileExtension().appendFileExtension("xml"));
+		QVToTransformation transformation = new QVToTransformation();
+		transformation.performConcertoFla2ConcertoFlaXMLTransformation(flaResource, xmlResource, monitor);
+	}
+	
+	protected void runBackpropagationTransformation(IProgressMonitor monitor) throws TransformationException{
+		QVToTransformation transformation = new QVToTransformation();
+		transformation.performConcertoFla2ChessBackPropagation(flaResource, chessResource, monitor, rootComponentQualifiedName + "_instSpec", diagramEditPart);
+	}
+	
+	protected URI createFlaModelUri() {
+		String modelName = getModelName();
+		String flaPath = targetFolder.getFullPath().toString() + "/" + modelName + "." + rootComponentQualifiedName.replaceAll("::", ".") + "_result";
+		return URI.createPlatformResourceURI(flaPath, false);
+	}
+
+	protected String getOutputXmlPath() {
+		String modelName = getModelName();
+		return targetFolder.getLocation().append(modelName + "_result.xml").toString();
+	}
+	
+	protected String getModelName() {
+		return chessModelUri.lastSegment().substring(0, chessModelUri.lastSegment().lastIndexOf('.'));
+	}
+	
+	protected void showErrorMessages(String title, List<String> messages) {
+		StringBuilder sb = new StringBuilder();
+		for (String message : messages) {
+			sb.append(message + "\n");
+		}
+		showErrorMessage(title, sb.toString());
+	}
+	
+	protected void showErrorMessage(String title, String message) {
+		JOptionPane.showMessageDialog(
+				new JFrame(),
+				message,
+				title, JOptionPane.ERROR_MESSAGE);
+
+	}
+	
+}
+
+	
+
+
+
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunnerXml.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunnerXml.java
new file mode 100644
index 0000000..b70c860
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/impl/FlaAnalysisRunnerXml.java
@@ -0,0 +1,84 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.impl;
+
+import java.io.File;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.polarsys.chess.fla.common.TransformationException;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+import org.polarsys.chess.fla.flamm.analysis.FlaSystem;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+import org.polarsys.chess.fla.flaxml.util.FlaxmlResourceFactoryImpl;
+import org.polarsys.chess.fla.transformations.QVToTransformation;
+
+public class FlaAnalysisRunnerXml extends FlaAnalysisRunner {
+	protected IFile selectedXmlFile;
+	
+	public void setSelectedXmlFile(IFile file) {
+		this.selectedXmlFile = file;
+	}
+	
+	@Override
+	protected void runInput2FlaTransformation(IProgressMonitor monitor) throws TransformationException{
+		Resource xmlResource = readXml(iFileToUri(selectedXmlFile));
+		
+		URI flaMMUri = createFlaModelUri().appendFileExtension(FLA_MM_EXTENSION);
+		ResourceSet resourceSet = new ResourceSetImpl();
+		new File(flaMMUri.path()).delete();
+		flaResource = resourceSet.createResource(flaMMUri);
+		
+		QVToTransformation transformation = new QVToTransformation();
+		transformation.performConcertoFlaXml2ConcertoFlaTransformation(xmlResource, flaResource, monitor);
+	}
+	
+	@Override
+	protected void backpropagateAnalysisResults(FlaSystem system, IProgressMonitor monitor) {};
+	
+	@Override
+	protected String getModelName() {
+		return selectedXmlFile.getName().substring(0, selectedXmlFile.getName().lastIndexOf('.'));
+	}
+
+	protected Resource readXml(URI uri) {
+		// Initialize the model
+	    FlaxmlPackage.eINSTANCE.eClass();
+	    FlammPackage.eINSTANCE.eClass();
+	    
+	    // Register the resource factory for the .flaxml extension
+
+	    Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+	    Map<String, Object> m = reg.getExtensionToFactoryMap();
+	    m.put("xml", new FlaxmlResourceFactoryImpl());
+
+	    // Obtain a new resource set
+	    ResourceSet resSet = new ResourceSetImpl();
+
+	    // Get the resource
+	    Resource resource = resSet.getResource(uri, true);
+	    return resource;
+	}
+	
+	URI iFileToUri(IFile iFile) {
+		// according to 
+		// http://wiki.eclipse.org/index.php/EMF/FAQ#How_do_I_map_between_an_EMF_Resource_and_an_Eclipse_IFile.3F
+		return URI.createPlatformResourceURI(iFile.getFullPath().toString(), true);
+	}
+	
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/Activator.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/Activator.java
new file mode 100644
index 0000000..364dffa
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/Activator.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.launch;
+
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+import org.polarsys.chess.fla.preferences.FlaParameters;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+	// The plug-in ID
+		public static final String PLUGIN_ID = "org.polarsys.chess.fla"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+	
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+	/**
+	 * Returns an image descriptor for the image file at the given
+	 * plug-in relative path
+	 *
+	 * @param path the path
+	 * @return the image descriptor
+	 */
+	public static ImageDescriptor getImageDescriptor(String path) {
+		return imageDescriptorFromPlugin(PLUGIN_ID, path);
+	}
+	
+	protected void initializeDefaultPreferences(IPreferenceStore store) {
+		FlaParameters defaultParams = new FlaParameters();
+
+		store.setDefault(FlaParameters.INIT_NO_FAILURE, defaultParams.getInitNoFailure());
+		store.setDefault(FlaParameters.PROPAGATE_UNMATCHED_FAILURES, defaultParams.getPropagateUnmatchedFailures());
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommand.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommand.java
new file mode 100644
index 0000000..7ac2850
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommand.java
@@ -0,0 +1,180 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.launch;
+
+import java.util.List;
+import java.lang.reflect.InvocationTargetException;
+
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.gmf.runtime.notation.impl.DiagramImpl;
+
+import org.polarsys.chess.fla.impl.FlaAnalysisRunner;
+
+import org.polarsys.chess.core.notifications.ResourceNotification;
+import org.polarsys.chess.core.util.uml.ResourceUtils;
+import org.polarsys.chess.core.views.DiagramStatus;
+import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
+import org.eclipse.papyrus.infra.core.services.ServiceException;
+import org.eclipse.papyrus.sysml.diagram.internalblock.edit.part.InternalBlockDiagramEditPart;
+import org.eclipse.papyrus.uml.diagram.clazz.part.UMLDiagramEditor;
+import org.eclipse.papyrus.uml.diagram.composite.edit.parts.CompositeStructureDiagramEditPart;
+import org.polarsys.chess.service.utils.CHESSEditorUtils;
+
+public class FlaAnalysisCommand extends AbstractHandler {
+
+	private IFile modelFile;
+	private URI modelURI;
+	protected List<IFile> files;
+	List<? extends Object> arguments;
+	private Model umlModel = null;
+	private IContainer targetFolder;
+	
+	protected UMLDiagramEditor diagramEditor=null;
+	protected DiagramEditPart diagramEditPart;
+	protected PapyrusMultiDiagramEditor papyrusEditor;
+	
+	private static final String DI_SUFFIX = ".di";
+	private static final String UML_SUFFIX = ".uml";
+	
+	public static final String COMMAND_ID = "org.polarsys.chess.fla.analysis.command";
+	
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		final PapyrusMultiDiagramEditor editor = CHESSEditorUtils.getCHESSEditor();
+		final DiagramStatus ds = CHESSEditorUtils.getDiagramStatus(editor);
+		
+		Classifier rootComponent = getCurrentComponent(editor, ds);
+		if (rootComponent == null) {
+			IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Cannot identify root component");
+			Activator.getDefault().getLog().log(status);
+			throw new ExecutionException("Error during FLA analysis");
+		}
+		
+		
+		IFileEditorInput input = (IFileEditorInput)editor.getEditorInput() ;
+		
+		IFile file = input.getFile();
+		IProject activeProject = file.getProject();
+		Path path = new Path(activeProject.getName() + "/" + changeSuffix(input.getFile().getName(), DI_SUFFIX,UML_SUFFIX));
+		modelURI = URI.createPlatformResourceURI(changeSuffix(input.getFile().getFullPath().toString(), DI_SUFFIX,UML_SUFFIX), true);
+		modelFile = ResourcesPlugin.getWorkspace().getRoot().getFile(path);
+		
+		long startTime = System.currentTimeMillis();
+		Shell shell = new Shell();	
+		try {
+			ds.setUserAction(false);
+			ProgressMonitorDialog pmDialog = new ProgressMonitorDialog(shell);
+			FlaAnalysisRunner analysisRunner = new FlaAnalysisRunner();
+			analysisRunner.setModelURI(modelURI);
+			targetFolder = modelFile.getProject().getFolder("FLA_Analysis");
+			analysisRunner.setTargetFolder(targetFolder);
+			analysisRunner.setDiagramEditPart(diagramEditPart);
+			Resource resource = ResourceUtils.getUMLResource(editor.getServicesRegistry());
+			umlModel = (Model) EcoreUtil.getObjectByType(resource.getContents(), UMLPackage.Literals.MODEL);
+			
+			analysisRunner.setRootComponent(rootComponent.getQualifiedName());
+			analysisRunner.setChessResource(resource);
+			
+			pmDialog.run(true, true, analysisRunner);
+			
+			activeProject.refreshLocal(IResource.DEPTH_INFINITE, null);
+		} catch (InvocationTargetException e) {
+			IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+			Activator.getDefault().getLog().log(status);
+			throw new ExecutionException("Error during FLA analysis", e);
+		} catch (CoreException e) {
+			IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+			Activator.getDefault().getLog().log(status);
+			throw new ExecutionException("Error during FLA analysis", e);
+		} catch (InterruptedException e) {
+			IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+			Activator.getDefault().getLog().log(status);
+		} catch (ServiceException e) {
+			IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+			Activator.getDefault().getLog().log(status);
+		} finally {
+			ds.setUserAction(true);
+		}
+		long endTime = System.currentTimeMillis();
+		org.polarsys.chess.core.util.CHESSProjectSupport.printlnToCHESSConsole("*** Elapsed time " + (endTime - startTime) / 1e3 + " s ***");
+		return null;
+	}
+	
+	private String changeSuffix(String string, String oldSuffix, String newSuffix){
+		String newString = string;
+		if (newString.endsWith(oldSuffix)){
+			newString = newString.substring(0, newString.length() - oldSuffix.length());
+			newString += newSuffix;
+		}
+		return newString;		
+	}
+	
+	private Classifier getCurrentComponent(PapyrusMultiDiagramEditor editor, DiagramStatus ds) {
+		if (editor == null || ds == null) {
+			return null;
+		}
+		Classifier rootComponent = null;
+		try {
+			Object editPart = getEditPart();
+			
+			if (editPart == null ||  ( !(editPart instanceof CompositeStructureDiagramEditPart) && !(editPart instanceof InternalBlockDiagramEditPart)) )
+				throw new Exception("FLA analysis cannot be performed on this element");
+			
+			final DiagramEditPart csd_ep = (DiagramEditPart) editPart;
+			diagramEditPart = csd_ep;
+			
+			DiagramImpl diagram = (DiagramImpl) csd_ep.getModel();
+			rootComponent = (Classifier) diagram.getElement();
+			
+		} catch (Exception e) {
+			e.printStackTrace();
+			ResourceNotification.showInfo(e.getMessage());
+		}
+		
+		return rootComponent;
+	}
+
+	private Object getEditPart() {
+		Object ep = null;
+		try {
+				ep = CHESSEditorUtils.getDiagramGraphicalViewer().getRootEditPart().getChildren().get(0);	
+		} catch (Exception e) {
+			//Catch NPE
+			return null;
+		}
+		return ep;
+	}
+	
+	
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommandXml.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommandXml.java
new file mode 100644
index 0000000..7e51418
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/launch/FlaAnalysisCommandXml.java
@@ -0,0 +1,164 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.launch;
+
+import java.util.List;
+import java.lang.reflect.InvocationTargetException;
+
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IContainer;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.model.BaseWorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.polarsys.chess.fla.impl.FlaAnalysisRunnerXml;
+
+import org.eclipse.papyrus.editor.PapyrusMultiDiagramEditor;
+import org.eclipse.papyrus.uml.diagram.clazz.part.UMLDiagramEditor;
+
+public class FlaAnalysisCommandXml extends AbstractHandler {
+
+	protected IFile sourceFile;
+	List<? extends Object> arguments;
+	private IContainer targetFolder;
+	
+	protected UMLDiagramEditor diagramEditor=null;
+	protected DiagramEditPart clazzdiagrameditPart;
+	protected PapyrusMultiDiagramEditor papyrusEditor;
+	private static JFrame frame = new JFrame();
+
+	public static final String COMMAND_ID = "org.polarsys.chess.fla.analysis.command";
+	
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		sourceFile = handleBrowseFile("Concerto-FLA Analysis from XML", "Please choose source XML file");
+		if(sourceFile==null)
+			return null;
+
+		if(!sourceFile.getLocation().getFileExtension().equals("xml") && !sourceFile.getLocation().getFileExtension().equals("fla")){
+			JOptionPane.showMessageDialog(frame, "Chosen file is not XML file. To perform Concerto-FLA Analysis please choose XML file. " ,"Concerto-FLA Analysis has failed", JOptionPane.ERROR_MESSAGE);
+			return null;
+		}			
+		
+		targetFolder = sourceFile.getParent(); 
+
+		Shell shell = new Shell();	
+		try {
+			ProgressMonitorDialog pmDialog = new ProgressMonitorDialog(shell);
+			FlaAnalysisRunnerXml analysisRunner = new FlaAnalysisRunnerXml();
+			analysisRunner.setSelectedXmlFile(sourceFile);
+			analysisRunner.setTargetFolder(targetFolder);
+			pmDialog.run(true, true, analysisRunner);
+			
+		} catch (InvocationTargetException e) {
+			IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+			Activator.getDefault().getLog().log(status);
+			throw new ExecutionException("Error during FLA analysis", e);
+		} catch (InterruptedException e) {
+			IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+			Activator.getDefault().getLog().log(status);
+		} 
+		return null;
+	}
+	
+	private IFile handleBrowseFile(String title, String message) {
+
+		ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(new Shell(), new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider());
+
+		dialog.setTitle(title);
+		dialog.setMessage(message);
+		dialog.setAllowMultiple(false);
+		dialog.addFilter(new ViewerFilter() {
+			@Override
+			public boolean select(Viewer viewer, Object parentElement,
+					Object element) {
+				boolean ret = false;
+				String[] extensions = null;
+				extensions = new String[] { "xml" };
+				try {
+					ret = isXMLResource((IResource) element, extensions);
+				} catch (CoreException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+				return ret;
+			}
+		});
+		dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
+		dialog.open();
+
+		if(dialog.getReturnCode() == ElementTreeSelectionDialog.CANCEL){
+			return null;
+		}
+
+		Object results = dialog.getFirstResult();
+
+		if ((results != null) && (results instanceof IFile)) {
+			IFile currentFile = (IFile)results;	
+			return currentFile;
+		}
+		else if ((results != null) && ((results instanceof IFolder) || (results instanceof IProject))) {
+			JOptionPane.showMessageDialog(frame, "CHESS-FPTC Analysis failed. XML file was not chosed. ","CHESS-FPTC Analysis - Wrong input file", JOptionPane.ERROR_MESSAGE);
+			return null;
+		}
+
+		return null;
+	}
+
+	private static boolean isXMLResource(IResource resource, String[] extensions)
+			throws CoreException {
+		if (resource instanceof IContainer) {
+			if (((IContainer) resource).isAccessible()) {
+				IResource[] members = ((IContainer) resource).members();
+				for (IResource member : members) {
+					if (isXMLResource(member, extensions)) {
+						return true;
+					}
+				}
+			}
+		} else if (resource instanceof IFile) {
+			IFile currentFile = (IFile) resource;
+			if (extensions == null) {
+				return true;
+			} else if (currentFile.getFileExtension() != null) {
+				for (int i = 0; i < extensions.length; i++) {
+					String extension = extensions[i];
+					if (currentFile.getFileExtension().toUpperCase().equals(
+							extension.toUpperCase())) {
+						return true;
+					}
+				}
+			}
+		}
+		return false;
+	}
+
+	
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/ConcertoFlaPreferencePage.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/ConcertoFlaPreferencePage.java
new file mode 100644
index 0000000..66a8313
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/ConcertoFlaPreferencePage.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.preferences;
+
+import org.eclipse.jface.preference.BooleanFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+import org.polarsys.chess.fla.launch.Activator;
+
+public class ConcertoFlaPreferencePage extends FieldEditorPreferencePage
+		implements IWorkbenchPreferencePage {
+	
+	public ConcertoFlaPreferencePage(){
+		super(GRID);
+	}
+
+	@Override
+	public void init(IWorkbench workbench) {
+		setPreferenceStore(Activator.getDefault().getPreferenceStore());
+		setDescription("Concerto-FLA: Failure Logic Analysis");
+	}
+
+	@Override
+	protected void createFieldEditors() {
+		
+		addField(new BooleanFieldEditor(FlaParameters.INIT_NO_FAILURE, 
+				"Initialize all connections to noFailure (needed for circular dependencies).",
+				getFieldEditorParent()));
+		Label initLabel = createDescriptionLabel(getFieldEditorParent());
+		initLabel.setText("This will add the noFailure token to all input ports before performing the FLA analysis.\n");
+		
+		addField(new BooleanFieldEditor(FlaParameters.PROPAGATE_UNMATCHED_FAILURES, 
+				"Propagate unmatches failures to all output ports.",
+				getFieldEditorParent()));
+		Label unmatchedLabel = createDescriptionLabel(getFieldEditorParent());
+		unmatchedLabel.setText("In case a propagation rule does not include an incoming failure type, \nthis failure type is propagated as-is to all output ports of the component.\n");
+		
+		addField(new BooleanFieldEditor(FlaParameters.TREAT_UNMENTIONED_PORTS_AS_WILDCARDS, 
+				"Treat ports not mentioned by rules as specified wild wildcards.",
+				getFieldEditorParent()));
+		Label unmentionedPortLabel = createDescriptionLabel(getFieldEditorParent());
+		unmentionedPortLabel.setText("If a transformation rule is missing information about an input port, \nthis is treated as if the rule had specified the input port with wildcard.\n" +
+				"If the rule does not mention inputPort1, inputPort1.wildcard is silently added to the rule.");
+	}
+}
\ No newline at end of file
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/FlaParameters.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/FlaParameters.java
new file mode 100644
index 0000000..59b937a
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/FlaParameters.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.preferences;
+
+import java.io.Serializable;
+
+import org.polarsys.chess.fla.launch.Activator;
+
+public class FlaParameters implements Serializable {
+	
+	private static final long serialVersionUID = 1L;
+	
+	public static final String INIT_NO_FAILURE = "INIT_NO_FAILURE";
+	public static final String PROPAGATE_UNMATCHED_FAILURES = "PROPAGATE_UNMATCHED_FAILURES";
+	public static final String TREAT_UNMENTIONED_PORTS_AS_WILDCARDS = "TREAT_UNMENTIONED_PORTS_AS_WILDCARDS";
+	
+	private boolean initNoFailure = true;
+	private boolean propagateUnmatchedFailures = true;
+	private boolean treatUnmentionedPortsAsWildcards = true;
+	
+	public boolean getInitNoFailure() {
+		return initNoFailure;
+	}
+	
+	public void setInitNoFailure(boolean initNoFailure) {
+		this.initNoFailure = initNoFailure;
+	}
+	
+	public boolean getPropagateUnmatchedFailures() {
+		return propagateUnmatchedFailures;
+	}
+	
+	public void setPropagateUnmatchedFailures(boolean propagateUnmatchedFailures) {
+		this.propagateUnmatchedFailures = propagateUnmatchedFailures;
+	}
+	
+	public boolean getTreatUnmentionedPortsAsWildcards() {
+		return this.treatUnmentionedPortsAsWildcards;
+	}
+	
+	public void setTreatUnmentionedPortsAsWildcards(boolean treatUnmentionedPortsAsWildcards) {
+		this.treatUnmentionedPortsAsWildcards = treatUnmentionedPortsAsWildcards;
+	}
+	
+	public static FlaParameters getCurrentParameters() {
+		FlaParameters params = new FlaParameters();
+		params.setInitNoFailure(Activator.getDefault().getPreferenceStore().getBoolean(INIT_NO_FAILURE));
+		params.setPropagateUnmatchedFailures(Activator.getDefault().getPreferenceStore().getBoolean(PROPAGATE_UNMATCHED_FAILURES));
+		params.setTreatUnmentionedPortsAsWildcards(Activator.getDefault().getPreferenceStore().getBoolean(TREAT_UNMENTIONED_PORTS_AS_WILDCARDS));
+		return params;
+	}
+
+	
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/PreferenceInitializer.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/PreferenceInitializer.java
new file mode 100644
index 0000000..3e9f344
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/preferences/PreferenceInitializer.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+package org.polarsys.chess.fla.preferences;
+
+import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
+import org.eclipse.jface.preference.IPreferenceStore;
+
+import org.polarsys.chess.fla.launch.Activator;
+
+public class PreferenceInitializer extends AbstractPreferenceInitializer {
+
+	@Override
+	public void initializeDefaultPreferences() {
+		IPreferenceStore store = Activator.getDefault().getPreferenceStore();
+		store.setDefault(FlaParameters.INIT_NO_FAILURE, true);
+		store.setDefault(FlaParameters.PROPAGATE_UNMATCHED_FAILURES, true);
+		store.setDefault(FlaParameters.TREAT_UNMENTIONED_PORTS_AS_WILDCARDS, false);
+	}
+
+}
diff --git a/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/transformations/QVToTransformation.java b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/transformations/QVToTransformation.java
new file mode 100644
index 0000000..a7d5c36
--- /dev/null
+++ b/plugins/org.polarsys.chess.fla/src/org/polarsys/chess/fla/transformations/QVToTransformation.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ *                  CHESS core plugin
+ *
+ *               Copyright (C) 2011-2015
+ *            Mälardalen University, Sweden
+ *
+ *
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License
+ *  v1.0 which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *******************************************************************************/
+/**
+ * Logic from: QVTOML/Examples/InvokeInJava
+ * http://wiki.eclipse.org/QVTOML/Examples/InvokeInJava
+ */
+
+package org.polarsys.chess.fla.transformations;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.Diagnostic;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
+import org.eclipse.m2m.qvt.oml.BasicModelExtent;
+import org.eclipse.m2m.qvt.oml.ExecutionContextImpl;
+import org.eclipse.m2m.qvt.oml.ExecutionDiagnostic;
+import org.eclipse.m2m.qvt.oml.ModelExtent;
+import org.eclipse.m2m.qvt.oml.TransformationExecutor;
+import org.eclipse.m2m.qvt.oml.util.WriterLog;
+import org.polarsys.chess.core.util.CHESSProjectSupport;
+import org.polarsys.chess.fla.launch.Activator;
+import org.polarsys.chess.fla.flamm.FlammPackage;
+import org.polarsys.chess.fla.flaxml.FlaxmlPackage;
+
+public class QVToTransformation {
+	
+	private static final String SELECTED_PLATFORM_PROPERTY = "selectedPlatformQName";
+	private static final String CHESS2FLAMM = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/Chess2FlaMM.qvto";
+	private static final String FLAMM2FLAXML = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/FlaMM2FlaXML.qvto";
+	private static final String FLAXML2FLAMM = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/FlaXML2FlaMM.qvto";
+	private static final String FLAMM2CHESS = "platform:/plugin/org.polarsys.chess.fla.transformations/transforms/FlaMM2Chess_BackPropagation.qvto";
+	
+	boolean isChessUserAction;
+	private DiagramEditPart diagramEditPart = null;
+	private Resource sourceResource;
+	private Resource targetResource;
+	private boolean isTargetChessModel= false;
+	private boolean createNewModel = true;
+	private IProgressMonitor monitor;
+	private String selectedElement = null;
+	
+	public void performChess2ConcertoFlaTransformation(
+			Resource chessResource, Resource flaResource, IProgressMonitor monitor, String selectedElement) {
+		FlammPackage.eINSTANCE.getClass();
+		this.sourceResource = chessResource;
+		this.targetResource = flaResource;
+		this.monitor = monitor;
+		this.selectedElement = selectedElement;
+		performTransformation(CHESS2FLAMM);
+	}
+	
+	public void performConcertoFla2ConcertoFlaXMLTransformation(
+			Resource modelResource, Resource xmlResource, IProgressMonitor monitor) {
+		FlaxmlPackage.eINSTANCE.getClass();
+		this.sourceResource = modelResource;
+		this.targetResource = xmlResource;
+		this.monitor = monitor;
+		performTransformation(FLAMM2FLAXML);
+	}
+	
+	public void performConcertoFlaXml2ConcertoFlaTransformation(
+			Resource xmlResource, Resource modelResource, IProgressMonitor monitor) {
+		FlammPackage.eINSTANCE.getClass();
+		FlaxmlPackage.eINSTANCE.getClass();
+		this.sourceResource = xmlResource;
+		this.targetResource = modelResource;
+		this.monitor = monitor;
+		performTransformation(FLAXML2FLAMM);
+	}
+	
+	public void performConcertoFla2ChessBackPropagation(
+			Resource flaResource, final Resource chessResource, IProgressMonitor monitor, String selectedElement, DiagramEditPart diagramEditPart) {
+		this.sourceResource = flaResource;
+		this.targetResource = chessResource;
+		this.monitor = monitor;
+		this.selectedElement = selectedElement;
+		this.diagramEditPart = diagramEditPart;
+		this.isTargetChessModel = true;
+		this.createNewModel = false;
+		performTransformation(FLAMM2CHESS);
+	}
+	
+	private void performTransformation(String transformationPath) {
+		URI transformationURI = URI.createURI(transformationPath);
+		final TransformationExecutor executor = new TransformationExecutor(transformationURI );
+		
+		EList<EObject> inObjects = sourceResource.getContents();
+		final ModelExtent input = new BasicModelExtent(inObjects);
+		ModelExtent output;
+		if (createNewModel) {
+			output = new BasicModelExtent();
+		} else {
+			output = new BasicModelExtent(targetResource.getContents());
+		}
+		
+		final ExecutionContextImpl context = new ExecutionContextImpl();
+		
+		if (selectedElement != null) {
+			context.setConfigProperty(SELECTED_PLATFORM_PROPERTY, selectedElement);
+		}
+		
+		OutputStreamWriter s = new OutputStreamWriter(CHESSProjectSupport.CHESS_CONSOLE);
+		context.setLog(new WriterLog(s));
+		context.setProgressMonitor(monitor);
+		
+		if (isTargetChessModel) {
+			try {
+         	final ModelExtent finalOutput = output;
+				TransactionalEditingDomain editingDomain = diagramEditPart.getEditingDomain();
+				editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+	            protected void doExecute() {
+	      			ExecutionDiagnostic result = executor.execute(context, input, finalOutput);
+	      			if(result.getSeverity() != Diagnostic.OK) {
+	      				// turn the result diagnostic into status and send it to error log			
+	      				IStatus status = BasicDiagnostic.toIStatus(result);
+	      				Activator.getDefault().getLog().log(status);
+	      			}
+	            }
+				});
+			} catch (Exception e) {
+				e.printStackTrace();
+			}
+		} else {
+			ExecutionDiagnostic result = executor.execute(context, input, output);
+
+			if(result.getSeverity() == Diagnostic.OK) {
+				// the output objects got captured in the output extent
+				final List<EObject> outObjects = output.getContents();
+				// persist them using a resource 
+				targetResource.getContents().clear();
+				targetResource.getContents().addAll(outObjects);
+
+				try {
+					targetResource.save(Collections.EMPTY_MAP);
+				} catch (IOException e) {
+					// TODO Auto-generated catch block
+					e.printStackTrace();
+				}
+			} else {
+				// turn the result diagnostic into status and send it to error log
+				//TODO: Handle errors, abort analysis
+				IStatus status = BasicDiagnostic.toIStatus(result);
+				Activator.getDefault().getLog().log(status);
+			}
+		}
+		
+		
+	}
+	
+	protected boolean saveChessResource(final Resource chessResource, final List<EObject> outObjects) {
+		try {
+			TransactionalEditingDomain editingDomain = diagramEditPart.getEditingDomain();
+			editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
+            protected void doExecute() {
+            	chessResource.getContents().clear();
+            	chessResource.getContents().addAll(outObjects);
+            }
+			});
+		} catch (Exception e) {
+			e.printStackTrace();
+			return false;
+		}
+		return true;
+	}
+
+}