[327039] Adding static implementation of standard L3 profile.
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/.classpath b/plugins/org.eclipse.uml2.uml.profile.l3/.classpath
new file mode 100644
index 0000000..304e861
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/.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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/.project b/plugins/org.eclipse.uml2.uml.profile.l3/.project
new file mode 100644
index 0000000..6faa768
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.uml2.uml.profile.l3</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.eclipse.uml2.uml.profile.l3/META-INF/MANIFEST.MF b/plugins/org.eclipse.uml2.uml.profile.l3/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..7d0c997
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.uml2.uml.profile.l3;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Activator: org.eclipse.uml2.uml.profile.l3.L3Plugin$Implementation
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Export-Package: org.eclipse.uml2.uml.profile.l3,
+ org.eclipse.uml2.uml.profile.l3.internal.impl,
+ org.eclipse.uml2.uml.profile.l3.util
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.uml2.uml;visibility:=reexport
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/about.html b/plugins/org.eclipse.uml2.uml.profile.l3/about.html
new file mode 100755
index 0000000..598b368
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/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>May 12, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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.eclipse.uml2.uml.profile.l3/build.properties b/plugins/org.eclipse.uml2.uml.profile.l3/build.properties
new file mode 100644
index 0000000..7147a64
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/build.properties
@@ -0,0 +1,22 @@
+# Copyright (c) 2011 CEA and others.
+# 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
+#
+# Contributors:
+# CEA - initial API and implementation
+#
+source.. = src/
+output.. = bin/
+bin.includes = about.html,\
+ plugin.*,\
+ .,\
+ model/*.ecore,\
+ model/*.genmodel,\
+ META-INF/
+src.includes = about.html,\
+ model/*.uml
+exclude.. = **/doc-files/**
+javacSource = 1.5
+javacTarget = 1.5
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.ecore b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.ecore
new file mode 100644
index 0000000..d74a493
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.ecore
@@ -0,0 +1,18 @@
+<?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="l3"
+ nsURI="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3" nsPrefix="l3">
+ <eClassifiers xsi:type="ecore:EClass" name="BuildComponent">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Component" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Component"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="Metamodel">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Model" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Model"/>
+ </eClassifiers>
+ <eClassifiers xsi:type="ecore:EClass" name="SystemModel">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="base_Model" ordered="false"
+ lowerBound="1" eType="ecore:EClass platform:/plugin/org.eclipse.uml2.uml/model/UML.ecore#//Model"/>
+ </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.genmodel b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.genmodel
new file mode 100644
index 0000000..a52f05c
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.genmodel
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel 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" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel" modelDirectory="/org.eclipse.uml2.uml.profile.l3/src"
+ editDirectory="" editorDirectory="" modelPluginID="org.eclipse.uml2.uml.profile.l3"
+ templateDirectory="/org.eclipse.uml2/templates" runtimeJar="true" dynamicTemplates="true"
+ modelName="L3" modelPluginClass="org.eclipse.uml2.uml.profile.l3.L3Plugin" nonNLSMarkers="true"
+ codeFormatting="true" testsDirectory="" importerID="org.eclipse.uml2.uml.ecore.importer"
+ containmentProxies="true" complianceLevel="5.0" copyrightFields="false" usedGenPackages="platform:/plugin/org.eclipse.uml2.types/model/Types.genmodel#//types platform:/plugin/org.eclipse.uml2.uml/model/UML.genmodel#//uml platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore"
+ operationReflection="true" invariantPrefix="validate">
+ <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+ <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+ <details key="UNION_PROPERTIES" value="PROCESS"/>
+ <details key="DUPLICATE_FEATURES" value="PROCESS"/>
+ <details key="SUBSETTING_PROPERTIES" value="PROCESS"/>
+ <details key="COMMENTS" value="PROCESS"/>
+ <details key="DUPLICATE_FEATURE_INHERITANCE" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATIONS" value="PROCESS"/>
+ <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+ <details key="REDEFINING_PROPERTIES" value="PROCESS"/>
+ <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+ <details key="DUPLICATE_OPERATION_INHERITANCE" value="PROCESS"/>
+ <details key="REDEFINING_OPERATIONS" value="PROCESS"/>
+ <details key="DERIVED_FEATURES" value="PROCESS"/>
+ <details key="OPERATION_BODIES" value="IGNORE"/>
+ <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+ <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+ </genAnnotations>
+ <foreignModel>L3.merged.uml</foreignModel>
+ <genPackages xsi:type="genmodel:GenPackage" prefix="L3" basePackage="org.eclipse.uml2.uml.profile"
+ classPackageSuffix="internal.impl" generateExampleClass="false" ecorePackage="L3.ecore#/">
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="L3.ecore#//BuildComponent">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference L3.ecore#//BuildComponent/base_Component"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="L3.ecore#//Metamodel">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference L3.ecore#//Metamodel/base_Model"/>
+ </genClasses>
+ <genClasses xsi:type="genmodel:GenClass" ecoreClass="L3.ecore#//SystemModel">
+ <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+ propertySortChoices="true" ecoreFeature="ecore:EReference L3.ecore#//SystemModel/base_Model"/>
+ </genClasses>
+ </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.merged.uml b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.merged.uml
new file mode 100644
index 0000000..0d46b92
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.merged.uml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="_bcyzQMIyEeCDwPTas6MRfw" name="L3" metamodelReference="_9WrWEMlJEeCA2KY6CawwCg">
+ <packageImport xmi:id="_9WrWEMlJEeCA2KY6CawwCg">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_9WskMMlJEeCA2KY6CawwCg" name="Component_BuildComponent" memberEnd="_9WskMclJEeCA2KY6CawwCg _9WtLQclJEeCA2KY6CawwCg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_9WskMclJEeCA2KY6CawwCg" name="extension_BuildComponent" visibility="public" type="_9WtLQMlJEeCA2KY6CawwCg" aggregation="composite" association="_9WskMMlJEeCA2KY6CawwCg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9WskMslJEeCA2KY6CawwCg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_9WskM8lJEeCA2KY6CawwCg" name="Model_Metamodel" memberEnd="_9WskNMlJEeCA2KY6CawwCg _9WtLQ8lJEeCA2KY6CawwCg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_9WskNMlJEeCA2KY6CawwCg" name="extension_Metamodel" visibility="public" type="_9WtLQslJEeCA2KY6CawwCg" aggregation="composite" association="_9WskM8lJEeCA2KY6CawwCg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9WskNclJEeCA2KY6CawwCg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_9WskNslJEeCA2KY6CawwCg" name="Model_SystemModel" memberEnd="_9WskN8lJEeCA2KY6CawwCg _9WtLRclJEeCA2KY6CawwCg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_9WskN8lJEeCA2KY6CawwCg" name="extension_SystemModel" visibility="public" type="_9WtLRMlJEeCA2KY6CawwCg" aggregation="composite" association="_9WskNslJEeCA2KY6CawwCg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9WskOMlJEeCA2KY6CawwCg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_9WtLQMlJEeCA2KY6CawwCg" name="BuildComponent">
+ <ownedAttribute xmi:id="_9WtLQclJEeCA2KY6CawwCg" name="base_Component" visibility="public" association="_9WskMMlJEeCA2KY6CawwCg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Component"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_9WtLQslJEeCA2KY6CawwCg" name="Metamodel">
+ <ownedAttribute xmi:id="_9WtLQ8lJEeCA2KY6CawwCg" name="base_Model" visibility="public" association="_9WskM8lJEeCA2KY6CawwCg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Model"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_9WtLRMlJEeCA2KY6CawwCg" name="SystemModel">
+ <ownedAttribute xmi:id="_9WtLRclJEeCA2KY6CawwCg" name="base_Model" visibility="public" association="_9WskNslJEeCA2KY6CawwCg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Model"/>
+ </ownedAttribute>
+ </packagedElement>
+ <profileApplication xmi:id="_or21kMIyEeCDwPTas6MRfw">
+ <eAnnotations xmi:id="_or88MMIyEeCDwPTas6MRfw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <Ecore:EPackage xmi:id="_pyGE4MIyEeCDwPTas6MRfw" base_Package="_bcyzQMIyEeCDwPTas6MRfw" packageName="l3" nsPrefix="l3" nsURI="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3" basePackage="org.eclipse.uml2.uml.profile" prefix="L3"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.uml b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.uml
new file mode 100644
index 0000000..592796c
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/model/L3.uml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+ <uml:Profile xmi:id="_bcyzQMIyEeCDwPTas6MRfw" name="L3">
+ <packageMerge xmi:id="_h2x0IMIyEeCDwPTas6MRfw">
+ <mergedPackage xmi:type="uml:Profile" href="../../org.eclipse.uml2/model/StandardProfileL3.xmi#_0"/>
+ </packageMerge>
+ <profileApplication xmi:id="_or21kMIyEeCDwPTas6MRfw">
+ <eAnnotations xmi:id="_or88MMIyEeCDwPTas6MRfw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+ </profileApplication>
+ </uml:Profile>
+ <Ecore:EPackage xmi:id="_pyGE4MIyEeCDwPTas6MRfw" base_Package="_bcyzQMIyEeCDwPTas6MRfw" packageName="l3" nsPrefix="l3" nsURI="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3" basePackage="org.eclipse.uml2.uml.profile" prefix="L3"/>
+</xmi:XMI>
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/plugin.properties b/plugins/org.eclipse.uml2.uml.profile.l3/plugin.properties
new file mode 100644
index 0000000..d9658ca
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2011 CEA and others.
+# 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
+#
+# Contributors:
+# CEA - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = UML2 Standard L3 Profile
+providerName = Eclipse Modeling Project
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/plugin.xml b/plugins/org.eclipse.uml2.uml.profile.l3/plugin.xml
new file mode 100644
index 0000000..b4d9787
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/plugin.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+ Copyright (c) 2011 CEA and others.
+ 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
+
+ Contributors:
+ CEA - initial API and implementation
+
+-->
+
+<plugin>
+
+ <extension point="org.eclipse.emf.ecore.generated_package">
+ <package
+ uri="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3"
+ class="org.eclipse.uml2.uml.profile.l3.L3Package"
+ genModel="model/L3.genmodel"/>
+ </extension>
+
+ <extension point="org.eclipse.uml2.uml.generated_package">
+ <profile
+ uri="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3"
+ location="pathmap://UML_PROFILES/StandardL3.profile.uml#_0"/>
+ </extension>
+
+</plugin>
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/BuildComponent.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/BuildComponent.java
new file mode 100644
index 0000000..fd0a45e
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/BuildComponent.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Component;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Build Component</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.uml2.uml.profile.l3.BuildComponent#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.uml2.uml.profile.l3.L3Package#getBuildComponent()
+ * @model
+ * @generated
+ */
+public interface BuildComponent
+ extends EObject {
+
+ /**
+ * Returns the value of the '<em><b>Base Component</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Component</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Component</em>' reference.
+ * @see #setBase_Component(Component)
+ * @see org.eclipse.uml2.uml.profile.l3.L3Package#getBuildComponent_Base_Component()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Component getBase_Component();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.uml2.uml.profile.l3.BuildComponent#getBase_Component <em>Base Component</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Component</em>' reference.
+ * @see #getBase_Component()
+ * @generated
+ */
+ void setBase_Component(Component value);
+
+} // BuildComponent
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Factory.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Factory.java
new file mode 100644
index 0000000..55c5969
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Factory.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3;
+
+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.eclipse.uml2.uml.profile.l3.L3Package
+ * @generated
+ */
+public interface L3Factory
+ extends EFactory {
+
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ L3Factory eINSTANCE = org.eclipse.uml2.uml.profile.l3.internal.impl.L3FactoryImpl
+ .init();
+
+ /**
+ * Returns a new object of class '<em>Build Component</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Build Component</em>'.
+ * @generated
+ */
+ BuildComponent createBuildComponent();
+
+ /**
+ * Returns a new object of class '<em>Metamodel</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Metamodel</em>'.
+ * @generated
+ */
+ Metamodel createMetamodel();
+
+ /**
+ * Returns a new object of class '<em>System Model</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>System Model</em>'.
+ * @generated
+ */
+ SystemModel createSystemModel();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ L3Package getL3Package();
+
+} //L3Factory
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Package.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Package.java
new file mode 100644
index 0000000..e40644c
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Package.java
@@ -0,0 +1,326 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3;
+
+import org.eclipse.emf.ecore.EClass;
+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.eclipse.uml2.uml.profile.l3.L3Factory
+ * @model kind="package"
+ * @generated
+ */
+public interface L3Package
+ extends EPackage {
+
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "l3"; //$NON-NLS-1$
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3"; //$NON-NLS-1$
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "l3"; //$NON-NLS-1$
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ L3Package eINSTANCE = org.eclipse.uml2.uml.profile.l3.internal.impl.L3PackageImpl
+ .init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.uml2.uml.profile.l3.internal.impl.BuildComponentImpl <em>Build Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.BuildComponentImpl
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.L3PackageImpl#getBuildComponent()
+ * @generated
+ */
+ int BUILD_COMPONENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Base Component</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BUILD_COMPONENT__BASE_COMPONENT = 0;
+
+ /**
+ * The number of structural features of the '<em>Build Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BUILD_COMPONENT_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Build Component</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int BUILD_COMPONENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.uml2.uml.profile.l3.internal.impl.MetamodelImpl <em>Metamodel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.MetamodelImpl
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.L3PackageImpl#getMetamodel()
+ * @generated
+ */
+ int METAMODEL = 1;
+
+ /**
+ * The feature id for the '<em><b>Base Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL__BASE_MODEL = 0;
+
+ /**
+ * The number of structural features of the '<em>Metamodel</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Metamodel</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int METAMODEL_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.uml2.uml.profile.l3.internal.impl.SystemModelImpl <em>System Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.SystemModelImpl
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.L3PackageImpl#getSystemModel()
+ * @generated
+ */
+ int SYSTEM_MODEL = 2;
+
+ /**
+ * The feature id for the '<em><b>Base Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_MODEL__BASE_MODEL = 0;
+
+ /**
+ * The number of structural features of the '<em>System Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_MODEL_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>System Model</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SYSTEM_MODEL_OPERATION_COUNT = 0;
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.uml2.uml.profile.l3.BuildComponent <em>Build Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Build Component</em>'.
+ * @see org.eclipse.uml2.uml.profile.l3.BuildComponent
+ * @generated
+ */
+ EClass getBuildComponent();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.uml2.uml.profile.l3.BuildComponent#getBase_Component <em>Base Component</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Component</em>'.
+ * @see org.eclipse.uml2.uml.profile.l3.BuildComponent#getBase_Component()
+ * @see #getBuildComponent()
+ * @generated
+ */
+ EReference getBuildComponent_Base_Component();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.uml2.uml.profile.l3.Metamodel <em>Metamodel</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Metamodel</em>'.
+ * @see org.eclipse.uml2.uml.profile.l3.Metamodel
+ * @generated
+ */
+ EClass getMetamodel();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.uml2.uml.profile.l3.Metamodel#getBase_Model <em>Base Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Model</em>'.
+ * @see org.eclipse.uml2.uml.profile.l3.Metamodel#getBase_Model()
+ * @see #getMetamodel()
+ * @generated
+ */
+ EReference getMetamodel_Base_Model();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.uml2.uml.profile.l3.SystemModel <em>System Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>System Model</em>'.
+ * @see org.eclipse.uml2.uml.profile.l3.SystemModel
+ * @generated
+ */
+ EClass getSystemModel();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.uml2.uml.profile.l3.SystemModel#getBase_Model <em>Base Model</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Base Model</em>'.
+ * @see org.eclipse.uml2.uml.profile.l3.SystemModel#getBase_Model()
+ * @see #getSystemModel()
+ * @generated
+ */
+ EReference getSystemModel_Base_Model();
+
+ /**
+ * 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
+ */
+ L3Factory getL3Factory();
+
+ /**
+ * <!-- 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.eclipse.uml2.uml.profile.l3.internal.impl.BuildComponentImpl <em>Build Component</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.BuildComponentImpl
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.L3PackageImpl#getBuildComponent()
+ * @generated
+ */
+ EClass BUILD_COMPONENT = eINSTANCE.getBuildComponent();
+
+ /**
+ * The meta object literal for the '<em><b>Base Component</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference BUILD_COMPONENT__BASE_COMPONENT = eINSTANCE
+ .getBuildComponent_Base_Component();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.uml2.uml.profile.l3.internal.impl.MetamodelImpl <em>Metamodel</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.MetamodelImpl
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.L3PackageImpl#getMetamodel()
+ * @generated
+ */
+ EClass METAMODEL = eINSTANCE.getMetamodel();
+
+ /**
+ * The meta object literal for the '<em><b>Base Model</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference METAMODEL__BASE_MODEL = eINSTANCE.getMetamodel_Base_Model();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.uml2.uml.profile.l3.internal.impl.SystemModelImpl <em>System Model</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.SystemModelImpl
+ * @see org.eclipse.uml2.uml.profile.l3.internal.impl.L3PackageImpl#getSystemModel()
+ * @generated
+ */
+ EClass SYSTEM_MODEL = eINSTANCE.getSystemModel();
+
+ /**
+ * The meta object literal for the '<em><b>Base Model</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference SYSTEM_MODEL__BASE_MODEL = eINSTANCE
+ .getSystemModel_Base_Model();
+
+ }
+
+} //L3Package
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Plugin.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Plugin.java
new file mode 100644
index 0000000..7fe51e6
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/L3Plugin.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3;
+
+import org.eclipse.emf.common.EMFPlugin;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+/**
+ * This is the central singleton for the L3 model plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public final class L3Plugin
+ extends EMFPlugin {
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static final L3Plugin INSTANCE = new L3Plugin();
+
+ /**
+ * Keep track of the singleton.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private static Implementation plugin;
+
+ /**
+ * Create the instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public L3Plugin() {
+ super(new ResourceLocator[]{});
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ @Override
+ public ResourceLocator getPluginResourceLocator() {
+ return plugin;
+ }
+
+ /**
+ * Returns the singleton instance of the Eclipse plugin.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the singleton instance.
+ * @generated
+ */
+ public static Implementation getPlugin() {
+ return plugin;
+ }
+
+ /**
+ * The actual implementation of the Eclipse <b>Plugin</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static class Implementation
+ extends EclipsePlugin {
+
+ /**
+ * Creates an instance.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Implementation() {
+ super();
+
+ // Remember the static instance.
+ //
+ plugin = this;
+ }
+ }
+
+}
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/Metamodel.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/Metamodel.java
new file mode 100644
index 0000000..c42d892
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/Metamodel.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.uml2.uml.profile.l3.Metamodel#getBase_Model <em>Base Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.uml2.uml.profile.l3.L3Package#getMetamodel()
+ * @model
+ * @generated
+ */
+public interface Metamodel
+ extends EObject {
+
+ /**
+ * Returns the value of the '<em><b>Base Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Model</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Model</em>' reference.
+ * @see #setBase_Model(Model)
+ * @see org.eclipse.uml2.uml.profile.l3.L3Package#getMetamodel_Base_Model()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Model getBase_Model();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.uml2.uml.profile.l3.Metamodel#getBase_Model <em>Base Model</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Model</em>' reference.
+ * @see #getBase_Model()
+ * @generated
+ */
+ void setBase_Model(Model value);
+
+} // Metamodel
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/SystemModel.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/SystemModel.java
new file mode 100644
index 0000000..23df726
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/SystemModel.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>System Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ * <li>{@link org.eclipse.uml2.uml.profile.l3.SystemModel#getBase_Model <em>Base Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.uml2.uml.profile.l3.L3Package#getSystemModel()
+ * @model
+ * @generated
+ */
+public interface SystemModel
+ extends EObject {
+
+ /**
+ * Returns the value of the '<em><b>Base Model</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Base Model</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Base Model</em>' reference.
+ * @see #setBase_Model(Model)
+ * @see org.eclipse.uml2.uml.profile.l3.L3Package#getSystemModel_Base_Model()
+ * @model required="true" ordered="false"
+ * @generated
+ */
+ Model getBase_Model();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.uml2.uml.profile.l3.SystemModel#getBase_Model <em>Base Model</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Base Model</em>' reference.
+ * @see #getBase_Model()
+ * @generated
+ */
+ void setBase_Model(Model value);
+
+} // SystemModel
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/BuildComponentImpl.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/BuildComponentImpl.java
new file mode 100644
index 0000000..91135d6
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/BuildComponentImpl.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3.internal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+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.EObjectImpl;
+
+import org.eclipse.uml2.uml.Component;
+
+import org.eclipse.uml2.uml.profile.l3.BuildComponent;
+import org.eclipse.uml2.uml.profile.l3.L3Package;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Build Component</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.uml2.uml.profile.l3.internal.impl.BuildComponentImpl#getBase_Component <em>Base Component</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class BuildComponentImpl
+ extends EObjectImpl
+ implements BuildComponent {
+
+ /**
+ * The cached value of the '{@link #getBase_Component() <em>Base Component</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Component()
+ * @generated
+ * @ordered
+ */
+ protected Component base_Component;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected BuildComponentImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return L3Package.Literals.BUILD_COMPONENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Component getBase_Component() {
+ if (base_Component != null && base_Component.eIsProxy()) {
+ InternalEObject oldBase_Component = (InternalEObject) base_Component;
+ base_Component = (Component) eResolveProxy(oldBase_Component);
+ if (base_Component != oldBase_Component) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ L3Package.BUILD_COMPONENT__BASE_COMPONENT,
+ oldBase_Component, base_Component));
+ }
+ }
+ return base_Component;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Component basicGetBase_Component() {
+ return base_Component;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Component(Component newBase_Component) {
+ Component oldBase_Component = base_Component;
+ base_Component = newBase_Component;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ L3Package.BUILD_COMPONENT__BASE_COMPONENT, oldBase_Component,
+ base_Component));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case L3Package.BUILD_COMPONENT__BASE_COMPONENT :
+ if (resolve)
+ return getBase_Component();
+ return basicGetBase_Component();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case L3Package.BUILD_COMPONENT__BASE_COMPONENT :
+ setBase_Component((Component) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case L3Package.BUILD_COMPONENT__BASE_COMPONENT :
+ setBase_Component((Component) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case L3Package.BUILD_COMPONENT__BASE_COMPONENT :
+ return base_Component != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //BuildComponentImpl
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/L3FactoryImpl.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/L3FactoryImpl.java
new file mode 100644
index 0000000..093c006
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/L3FactoryImpl.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3.internal.impl;
+
+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;
+
+import org.eclipse.uml2.uml.profile.l3.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class L3FactoryImpl
+ extends EFactoryImpl
+ implements L3Factory {
+
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static L3Factory init() {
+ try {
+ L3Factory theL3Factory = (L3Factory) EPackage.Registry.INSTANCE
+ .getEFactory("http://www.eclipse.org/uml2/4.0.0/UML/Profile/L3"); //$NON-NLS-1$
+ if (theL3Factory != null) {
+ return theL3Factory;
+ }
+ } catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new L3FactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public L3FactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case L3Package.BUILD_COMPONENT :
+ return createBuildComponent();
+ case L3Package.METAMODEL :
+ return createMetamodel();
+ case L3Package.SYSTEM_MODEL :
+ return createSystemModel();
+ default :
+ throw new IllegalArgumentException(
+ "The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public BuildComponent createBuildComponent() {
+ BuildComponentImpl buildComponent = new BuildComponentImpl();
+ return buildComponent;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Metamodel createMetamodel() {
+ MetamodelImpl metamodel = new MetamodelImpl();
+ return metamodel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SystemModel createSystemModel() {
+ SystemModelImpl systemModel = new SystemModelImpl();
+ return systemModel;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public L3Package getL3Package() {
+ return (L3Package) getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static L3Package getPackage() {
+ return L3Package.eINSTANCE;
+ }
+
+} //L3FactoryImpl
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/L3PackageImpl.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/L3PackageImpl.java
new file mode 100644
index 0000000..d418892
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/L3PackageImpl.java
@@ -0,0 +1,290 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3.internal.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+import org.eclipse.uml2.uml.profile.l3.BuildComponent;
+import org.eclipse.uml2.uml.profile.l3.L3Factory;
+import org.eclipse.uml2.uml.profile.l3.L3Package;
+import org.eclipse.uml2.uml.profile.l3.Metamodel;
+import org.eclipse.uml2.uml.profile.l3.SystemModel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class L3PackageImpl
+ extends EPackageImpl
+ implements L3Package {
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass buildComponentEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass metamodelEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass systemModelEClass = 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.eclipse.uml2.uml.profile.l3.L3Package#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private L3PackageImpl() {
+ super(eNS_URI, L3Factory.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 L3Package#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 L3Package init() {
+ if (isInited)
+ return (L3Package) EPackage.Registry.INSTANCE
+ .getEPackage(L3Package.eNS_URI);
+
+ // Obtain or create and register package
+ L3PackageImpl theL3Package = (L3PackageImpl) (EPackage.Registry.INSTANCE
+ .get(eNS_URI) instanceof L3PackageImpl
+ ? EPackage.Registry.INSTANCE.get(eNS_URI)
+ : new L3PackageImpl());
+
+ isInited = true;
+
+ // Initialize simple dependencies
+ UMLPackage.eINSTANCE.eClass();
+
+ // Create package meta-data objects
+ theL3Package.createPackageContents();
+
+ // Initialize created meta-data
+ theL3Package.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theL3Package.freeze();
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(L3Package.eNS_URI, theL3Package);
+ return theL3Package;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getBuildComponent() {
+ return buildComponentEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getBuildComponent_Base_Component() {
+ return (EReference) buildComponentEClass.getEStructuralFeatures()
+ .get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getMetamodel() {
+ return metamodelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getMetamodel_Base_Model() {
+ return (EReference) metamodelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getSystemModel() {
+ return systemModelEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getSystemModel_Base_Model() {
+ return (EReference) systemModelEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public L3Factory getL3Factory() {
+ return (L3Factory) 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
+ buildComponentEClass = createEClass(BUILD_COMPONENT);
+ createEReference(buildComponentEClass, BUILD_COMPONENT__BASE_COMPONENT);
+
+ metamodelEClass = createEClass(METAMODEL);
+ createEReference(metamodelEClass, METAMODEL__BASE_MODEL);
+
+ systemModelEClass = createEClass(SYSTEM_MODEL);
+ createEReference(systemModelEClass, SYSTEM_MODEL__BASE_MODEL);
+ }
+
+ /**
+ * <!-- 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
+ UMLPackage theUMLPackage = (UMLPackage) EPackage.Registry.INSTANCE
+ .getEPackage(UMLPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(
+ buildComponentEClass,
+ BuildComponent.class,
+ "BuildComponent", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getBuildComponent_Base_Component(),
+ theUMLPackage.getComponent(),
+ null,
+ "base_Component", null, 1, 1, BuildComponent.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(
+ metamodelEClass,
+ Metamodel.class,
+ "Metamodel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getMetamodel_Base_Model(),
+ theUMLPackage.getModel(),
+ null,
+ "base_Model", null, 1, 1, Metamodel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ initEClass(
+ systemModelEClass,
+ SystemModel.class,
+ "SystemModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+ initEReference(
+ getSystemModel_Base_Model(),
+ theUMLPackage.getModel(),
+ null,
+ "base_Model", null, 1, 1, SystemModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //L3PackageImpl
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/MetamodelImpl.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/MetamodelImpl.java
new file mode 100644
index 0000000..d2e47b2
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/MetamodelImpl.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3.internal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+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.EObjectImpl;
+
+import org.eclipse.uml2.uml.Model;
+
+import org.eclipse.uml2.uml.profile.l3.L3Package;
+import org.eclipse.uml2.uml.profile.l3.Metamodel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Metamodel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.uml2.uml.profile.l3.internal.impl.MetamodelImpl#getBase_Model <em>Base Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class MetamodelImpl
+ extends EObjectImpl
+ implements Metamodel {
+
+ /**
+ * The cached value of the '{@link #getBase_Model() <em>Base Model</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Model()
+ * @generated
+ * @ordered
+ */
+ protected Model base_Model;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected MetamodelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return L3Package.Literals.METAMODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model getBase_Model() {
+ if (base_Model != null && base_Model.eIsProxy()) {
+ InternalEObject oldBase_Model = (InternalEObject) base_Model;
+ base_Model = (Model) eResolveProxy(oldBase_Model);
+ if (base_Model != oldBase_Model) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ L3Package.METAMODEL__BASE_MODEL, oldBase_Model,
+ base_Model));
+ }
+ }
+ return base_Model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model basicGetBase_Model() {
+ return base_Model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Model(Model newBase_Model) {
+ Model oldBase_Model = base_Model;
+ base_Model = newBase_Model;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ L3Package.METAMODEL__BASE_MODEL, oldBase_Model, base_Model));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case L3Package.METAMODEL__BASE_MODEL :
+ if (resolve)
+ return getBase_Model();
+ return basicGetBase_Model();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case L3Package.METAMODEL__BASE_MODEL :
+ setBase_Model((Model) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case L3Package.METAMODEL__BASE_MODEL :
+ setBase_Model((Model) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case L3Package.METAMODEL__BASE_MODEL :
+ return base_Model != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //MetamodelImpl
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/SystemModelImpl.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/SystemModelImpl.java
new file mode 100644
index 0000000..bdcf214
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/internal/impl/SystemModelImpl.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3.internal.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+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.EObjectImpl;
+
+import org.eclipse.uml2.uml.Model;
+
+import org.eclipse.uml2.uml.profile.l3.L3Package;
+import org.eclipse.uml2.uml.profile.l3.SystemModel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>System Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ * <li>{@link org.eclipse.uml2.uml.profile.l3.internal.impl.SystemModelImpl#getBase_Model <em>Base Model</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class SystemModelImpl
+ extends EObjectImpl
+ implements SystemModel {
+
+ /**
+ * The cached value of the '{@link #getBase_Model() <em>Base Model</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getBase_Model()
+ * @generated
+ * @ordered
+ */
+ protected Model base_Model;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected SystemModelImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return L3Package.Literals.SYSTEM_MODEL;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model getBase_Model() {
+ if (base_Model != null && base_Model.eIsProxy()) {
+ InternalEObject oldBase_Model = (InternalEObject) base_Model;
+ base_Model = (Model) eResolveProxy(oldBase_Model);
+ if (base_Model != oldBase_Model) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE,
+ L3Package.SYSTEM_MODEL__BASE_MODEL, oldBase_Model,
+ base_Model));
+ }
+ }
+ return base_Model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Model basicGetBase_Model() {
+ return base_Model;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setBase_Model(Model newBase_Model) {
+ Model oldBase_Model = base_Model;
+ base_Model = newBase_Model;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET,
+ L3Package.SYSTEM_MODEL__BASE_MODEL, oldBase_Model, base_Model));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case L3Package.SYSTEM_MODEL__BASE_MODEL :
+ if (resolve)
+ return getBase_Model();
+ return basicGetBase_Model();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case L3Package.SYSTEM_MODEL__BASE_MODEL :
+ setBase_Model((Model) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case L3Package.SYSTEM_MODEL__BASE_MODEL :
+ setBase_Model((Model) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case L3Package.SYSTEM_MODEL__BASE_MODEL :
+ return base_Model != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} //SystemModelImpl
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/util/L3AdapterFactory.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/util/L3AdapterFactory.java
new file mode 100644
index 0000000..2e800cd
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/util/L3AdapterFactory.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3.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.eclipse.uml2.uml.profile.l3.*;
+
+/**
+ * <!-- 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.eclipse.uml2.uml.profile.l3.L3Package
+ * @generated
+ */
+public class L3AdapterFactory
+ extends AdapterFactoryImpl {
+
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static L3Package modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public L3AdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = L3Package.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 L3Switch<Adapter> modelSwitch = new L3Switch<Adapter>() {
+
+ @Override
+ public Adapter caseBuildComponent(BuildComponent object) {
+ return createBuildComponentAdapter();
+ }
+
+ @Override
+ public Adapter caseMetamodel(Metamodel object) {
+ return createMetamodelAdapter();
+ }
+
+ @Override
+ public Adapter caseSystemModel(SystemModel object) {
+ return createSystemModelAdapter();
+ }
+
+ @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.eclipse.uml2.uml.profile.l3.BuildComponent <em>Build 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.eclipse.uml2.uml.profile.l3.BuildComponent
+ * @generated
+ */
+ public Adapter createBuildComponentAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.uml2.uml.profile.l3.Metamodel <em>Metamodel</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.eclipse.uml2.uml.profile.l3.Metamodel
+ * @generated
+ */
+ public Adapter createMetamodelAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.uml2.uml.profile.l3.SystemModel <em>System Model</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.eclipse.uml2.uml.profile.l3.SystemModel
+ * @generated
+ */
+ public Adapter createSystemModelAdapter() {
+ 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;
+ }
+
+} //L3AdapterFactory
diff --git a/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/util/L3Switch.java b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/util/L3Switch.java
new file mode 100644
index 0000000..5b632db
--- /dev/null
+++ b/plugins/org.eclipse.uml2.uml.profile.l3/src/org/eclipse/uml2/uml/profile/l3/util/L3Switch.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (c) 2011 CEA and others.
+ * 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
+ *
+ * Contributors:
+ * CEA - initial API and implementation
+ *
+ */
+package org.eclipse.uml2.uml.profile.l3.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.uml2.uml.profile.l3.*;
+
+/**
+ * <!-- 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.eclipse.uml2.uml.profile.l3.L3Package
+ * @generated
+ */
+public class L3Switch<T>
+ extends Switch<T> {
+
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static L3Package modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public L3Switch() {
+ if (modelPackage == null) {
+ modelPackage = L3Package.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 L3Package.BUILD_COMPONENT : {
+ BuildComponent buildComponent = (BuildComponent) theEObject;
+ T result = caseBuildComponent(buildComponent);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case L3Package.METAMODEL : {
+ Metamodel metamodel = (Metamodel) theEObject;
+ T result = caseMetamodel(metamodel);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ case L3Package.SYSTEM_MODEL : {
+ SystemModel systemModel = (SystemModel) theEObject;
+ T result = caseSystemModel(systemModel);
+ if (result == null)
+ result = defaultCase(theEObject);
+ return result;
+ }
+ default :
+ return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Build 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>Build Component</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseBuildComponent(BuildComponent object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Metamodel</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>Metamodel</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseMetamodel(Metamodel object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>System Model</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 Model</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseSystemModel(SystemModel 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;
+ }
+
+} //L3Switch