Browse Source

set containment proxies to true in SGraph.genmodel

Andreas Mülder 13 years ago
parent
commit
56023b3549
20 changed files with 267 additions and 124 deletions
  1. 85 85
      plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.genmodel
  2. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/CompositeElement.java
  3. 2 2
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Reaction.java
  4. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Region.java
  5. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Scope.java
  6. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/ScopedElement.java
  7. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Vertex.java
  8. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/CompositeElementImpl.java
  9. 50 2
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ReactionImpl.java
  10. 14 3
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/RegionImpl.java
  11. 1 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphFactoryImpl.java
  12. 10 10
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphPackageImpl.java
  13. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ScopeImpl.java
  14. 1 1
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ScopedElementImpl.java
  15. 16 5
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/StateImpl.java
  16. 2 2
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/StatechartImpl.java
  17. 63 4
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/TransitionImpl.java
  18. 14 3
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/VertexImpl.java
  19. 1 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphAdapterFactory.java
  20. 1 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphSwitch.java

+ 85 - 85
plugins/org.yakindu.sct.model.sgraph/model/emf/sgraph.genmodel

@@ -1,85 +1,85 @@
-<?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" copyrightText="Copyright (c) 2011 committers of YAKINDU and others.&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;Contributors:&#xD;&#xA;committers of YAKINDU - initial API and implementation&#xD;&#xA;"
-    modelDirectory="/org.yakindu.sct.model.sgraph/src" modelPluginID="org.yakindu.sct.model.sgraph"
-    modelName="SGraph" importerID="org.eclipse.emf.importer.ecore" complianceLevel="6.0"
-    usedGenPackages="../../../org.yakindu.base.types/model/base.genmodel#//base">
-  <foreignModel>sgraph.ecore</foreignModel>
-  <genPackages prefix="SGraph" basePackage="org.yakindu.sct.model" disposableProviderFactory="true"
-      ecorePackage="sgraph.ecore#/">
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//EntryKind">
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/initial"/>
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/shallowHistory"/>
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/deepHistory"/>
-    </genEnums>
-    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//ChoiceKind">
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/dynamic"/>
-      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/static"/>
-    </genEnums>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Pseudostate"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Vertex">
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/parentRegion"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/incomingTransitions"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/outgoingTransitions"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Region">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Region/vertices"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Region/priority"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Region/composite"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Transition">
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/target"/>
-      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/source"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Transition/priority"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//FinalState"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Variable"/>
-    <genClasses ecoreClass="sgraph.ecore#//Event"/>
-    <genClasses ecoreClass="sgraph.ecore#//Choice">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Choice/kind"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Statechart"/>
-    <genClasses ecoreClass="sgraph.ecore#//Entry">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Entry/kind"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Trigger"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Effect"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//SpecificationElement">
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//SpecificationElement/specification"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Declaration"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//Reaction">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/trigger"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/effect"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//ReactiveElement">
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/reactions"/>
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/localReactions"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Exit"/>
-    <genClasses ecoreClass="sgraph.ecore#//Scope">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/declarations"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/events"/>
-      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/variables"/>
-    </genClasses>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//ScopedElement">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ScopedElement/scopes"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//ScopedElement/namespace"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Synchronization"/>
-    <genClasses ecoreClass="sgraph.ecore#//State">
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/orthogonal"/>
-      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//State/substatechart"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/substatechartId"/>
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/subchart"/>
-      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/simple"/>
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/composite"/>
-      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/leaf"/>
-    </genClasses>
-    <genClasses ecoreClass="sgraph.ecore#//Statement"/>
-    <genClasses ecoreClass="sgraph.ecore#//RegularState"/>
-    <genClasses image="false" ecoreClass="sgraph.ecore#//CompositeElement">
-      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//CompositeElement/regions"/>
-    </genClasses>
-  </genPackages>
-</genmodel:GenModel>
+<?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" copyrightText="Copyright (c) 2011 committers of YAKINDU and others.&#xD;&#xA;All rights reserved. This program and the accompanying materials&#xD;&#xA;are made available under the terms of the Eclipse Public License v1.0&#xD;&#xA;which accompanies this distribution, and is available at&#xD;&#xA;http://www.eclipse.org/legal/epl-v10.html&#xD;&#xA;Contributors:&#xD;&#xA;committers of YAKINDU - initial API and implementation&#xD;&#xA;"
+    modelDirectory="/org.yakindu.sct.model.sgraph/src" modelPluginID="org.yakindu.sct.model.sgraph"
+    modelName="SGraph" importerID="org.eclipse.emf.importer.ecore" containmentProxies="true"
+    complianceLevel="6.0" usedGenPackages="../../../org.yakindu.base.types/model/base.genmodel#//base">
+  <foreignModel>sgraph.ecore</foreignModel>
+  <genPackages prefix="SGraph" basePackage="org.yakindu.sct.model" disposableProviderFactory="true"
+      ecorePackage="sgraph.ecore#/">
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//EntryKind">
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/initial"/>
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/shallowHistory"/>
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//EntryKind/deepHistory"/>
+    </genEnums>
+    <genEnums typeSafeEnumCompatible="false" ecoreEnum="sgraph.ecore#//ChoiceKind">
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/dynamic"/>
+      <genEnumLiterals ecoreEnumLiteral="sgraph.ecore#//ChoiceKind/static"/>
+    </genEnums>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Pseudostate"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Vertex">
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/parentRegion"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/incomingTransitions"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Vertex/outgoingTransitions"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Region">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Region/vertices"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Region/priority"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Region/composite"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Transition">
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/target"/>
+      <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Transition/source"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Transition/priority"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//FinalState"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Variable"/>
+    <genClasses ecoreClass="sgraph.ecore#//Event"/>
+    <genClasses ecoreClass="sgraph.ecore#//Choice">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Choice/kind"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Statechart"/>
+    <genClasses ecoreClass="sgraph.ecore#//Entry">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//Entry/kind"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Trigger"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Effect"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//SpecificationElement">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//SpecificationElement/specification"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Declaration"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//Reaction">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/trigger"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Reaction/effect"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//ReactiveElement">
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/reactions"/>
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ReactiveElement/localReactions"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Exit"/>
+    <genClasses ecoreClass="sgraph.ecore#//Scope">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/declarations"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/events"/>
+      <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference sgraph.ecore#//Scope/variables"/>
+    </genClasses>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//ScopedElement">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//ScopedElement/scopes"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//ScopedElement/namespace"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Synchronization"/>
+    <genClasses ecoreClass="sgraph.ecore#//State">
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/orthogonal"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference sgraph.ecore#//State/substatechart"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/substatechartId"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/subchart"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/simple"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/composite"/>
+      <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute sgraph.ecore#//State/leaf"/>
+    </genClasses>
+    <genClasses ecoreClass="sgraph.ecore#//Statement"/>
+    <genClasses ecoreClass="sgraph.ecore#//RegularState"/>
+    <genClasses image="false" ecoreClass="sgraph.ecore#//CompositeElement">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference sgraph.ecore#//CompositeElement/regions"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/CompositeElement.java

@@ -50,7 +50,7 @@ public interface CompositeElement extends EObject {
 	 * @return the value of the '<em>Regions</em>' containment reference list.
 	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getCompositeElement_Regions()
 	 * @see org.yakindu.sct.model.sgraph.Region#getComposite
-	 * @model opposite="composite" containment="true"
+	 * @model opposite="composite" containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	EList<Region> getRegions();

+ 2 - 2
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Reaction.java

@@ -48,7 +48,7 @@ public interface Reaction extends EObject {
 	 * @return the value of the '<em>Trigger</em>' containment reference.
 	 * @see #setTrigger(Trigger)
 	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getReaction_Trigger()
-	 * @model containment="true" transient="true"
+	 * @model containment="true" resolveProxies="true" transient="true"
 	 * @generated
 	 */
 	Trigger getTrigger();
@@ -74,7 +74,7 @@ public interface Reaction extends EObject {
 	 * @return the value of the '<em>Effect</em>' containment reference.
 	 * @see #setEffect(Effect)
 	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getReaction_Effect()
-	 * @model containment="true" transient="true"
+	 * @model containment="true" resolveProxies="true" transient="true"
 	 * @generated
 	 */
 	Effect getEffect();

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Region.java

@@ -52,7 +52,7 @@ public interface Region extends NamedElement {
 	 * @return the value of the '<em>Vertices</em>' containment reference list.
 	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getRegion_Vertices()
 	 * @see org.yakindu.sct.model.sgraph.Vertex#getParentRegion
-	 * @model opposite="parentRegion" containment="true" ordered="false"
+	 * @model opposite="parentRegion" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
 	EList<Vertex> getVertices();

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Scope.java

@@ -50,7 +50,7 @@ public interface Scope extends EObject {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Declarations</em>' containment reference list.
 	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getScope_Declarations()
-	 * @model containment="true"
+	 * @model containment="true" resolveProxies="true"
 	 * @generated
 	 */
 	EList<Declaration> getDeclarations();

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/ScopedElement.java

@@ -49,7 +49,7 @@ public interface ScopedElement extends EObject {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Scopes</em>' containment reference list.
 	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getScopedElement_Scopes()
-	 * @model containment="true" transient="true"
+	 * @model containment="true" resolveProxies="true" transient="true"
 	 * @generated
 	 */
 	EList<Scope> getScopes();

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/Vertex.java

@@ -99,7 +99,7 @@ public interface Vertex extends NamedElement {
 	 * @return the value of the '<em>Outgoing Transitions</em>' containment reference list.
 	 * @see org.yakindu.sct.model.sgraph.SGraphPackage#getVertex_OutgoingTransitions()
 	 * @see org.yakindu.sct.model.sgraph.Transition#getSource
-	 * @model opposite="source" containment="true" ordered="false"
+	 * @model opposite="source" containment="true" resolveProxies="true" ordered="false"
 	 * @generated
 	 */
 	EList<Transition> getOutgoingTransitions();

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/CompositeElementImpl.java

@@ -80,7 +80,7 @@ public abstract class CompositeElementImpl extends EObjectImpl implements Compos
 	 */
 	public EList<Region> getRegions() {
 		if (regions == null) {
-			regions = new EObjectContainmentWithInverseEList<Region>(Region.class, this, SGraphPackage.COMPOSITE_ELEMENT__REGIONS, SGraphPackage.REGION__COMPOSITE);
+			regions = new EObjectContainmentWithInverseEList.Resolving<Region>(Region.class, this, SGraphPackage.COMPOSITE_ELEMENT__REGIONS, SGraphPackage.REGION__COMPOSITE);
 		}
 		return regions;
 	}

+ 50 - 2
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ReactionImpl.java

@@ -88,6 +88,29 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 	 * @generated
 	 */
 	public Trigger getTrigger() {
+		if (trigger != null && trigger.eIsProxy()) {
+			InternalEObject oldTrigger = (InternalEObject)trigger;
+			trigger = (Trigger)eResolveProxy(oldTrigger);
+			if (trigger != oldTrigger) {
+				InternalEObject newTrigger = (InternalEObject)trigger;
+				NotificationChain msgs = oldTrigger.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.REACTION__TRIGGER, null, null);
+				if (newTrigger.eInternalContainer() == null) {
+					msgs = newTrigger.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.REACTION__TRIGGER, null, msgs);
+				}
+				if (msgs != null) msgs.dispatch();
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SGraphPackage.REACTION__TRIGGER, oldTrigger, trigger));
+			}
+		}
+		return trigger;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Trigger basicGetTrigger() {
 		return trigger;
 	}
 
@@ -131,6 +154,29 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 	 * @generated
 	 */
 	public Effect getEffect() {
+		if (effect != null && effect.eIsProxy()) {
+			InternalEObject oldEffect = (InternalEObject)effect;
+			effect = (Effect)eResolveProxy(oldEffect);
+			if (effect != oldEffect) {
+				InternalEObject newEffect = (InternalEObject)effect;
+				NotificationChain msgs = oldEffect.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.REACTION__EFFECT, null, null);
+				if (newEffect.eInternalContainer() == null) {
+					msgs = newEffect.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.REACTION__EFFECT, null, msgs);
+				}
+				if (msgs != null) msgs.dispatch();
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SGraphPackage.REACTION__EFFECT, oldEffect, effect));
+			}
+		}
+		return effect;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Effect basicGetEffect() {
 		return effect;
 	}
 
@@ -193,9 +239,11 @@ public abstract class ReactionImpl extends EObjectImpl implements Reaction {
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case SGraphPackage.REACTION__TRIGGER:
-				return getTrigger();
+				if (resolve) return getTrigger();
+				return basicGetTrigger();
 			case SGraphPackage.REACTION__EFFECT:
-				return getEffect();
+				if (resolve) return getEffect();
+				return basicGetEffect();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}

+ 14 - 3
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/RegionImpl.java

@@ -106,7 +106,7 @@ public class RegionImpl extends NamedElementImpl implements Region {
 	 */
 	public EList<Vertex> getVertices() {
 		if (vertices == null) {
-			vertices = new EObjectContainmentWithInverseEList<Vertex>(Vertex.class, this, SGraphPackage.REGION__VERTICES, SGraphPackage.VERTEX__PARENT_REGION);
+			vertices = new EObjectContainmentWithInverseEList.Resolving<Vertex>(Vertex.class, this, SGraphPackage.REGION__VERTICES, SGraphPackage.VERTEX__PARENT_REGION);
 		}
 		return vertices;
 	}
@@ -142,6 +142,16 @@ public class RegionImpl extends NamedElementImpl implements Region {
 		return (CompositeElement)eContainer();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CompositeElement basicGetComposite() {
+		if (eContainerFeatureID() != SGraphPackage.REGION__COMPOSITE) return null;
+		return (CompositeElement)eInternalContainer();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -235,7 +245,8 @@ public class RegionImpl extends NamedElementImpl implements Region {
 			case SGraphPackage.REGION__PRIORITY:
 				return getPriority();
 			case SGraphPackage.REGION__COMPOSITE:
-				return getComposite();
+				if (resolve) return getComposite();
+				return basicGetComposite();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -297,7 +308,7 @@ public class RegionImpl extends NamedElementImpl implements Region {
 			case SGraphPackage.REGION__PRIORITY:
 				return priority != PRIORITY_EDEFAULT;
 			case SGraphPackage.REGION__COMPOSITE:
-				return getComposite() != null;
+				return basicGetComposite() != null;
 		}
 		return super.eIsSet(featureID);
 	}

+ 1 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphFactoryImpl.java

@@ -16,6 +16,7 @@ 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.yakindu.sct.model.sgraph.*;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.ChoiceKind;
 import org.yakindu.sct.model.sgraph.Entry;

+ 10 - 10
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/SGraphPackageImpl.java

@@ -990,18 +990,18 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		initEClass(pseudostateEClass, Pseudostate.class, "Pseudostate", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(vertexEClass, Vertex.class, "Vertex", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getVertex_ParentRegion(), this.getRegion(), this.getRegion_Vertices(), "parentRegion", null, 1, 1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getVertex_ParentRegion(), this.getRegion(), this.getRegion_Vertices(), "parentRegion", null, 1, 1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEReference(getVertex_IncomingTransitions(), this.getTransition(), this.getTransition_Target(), "incomingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getVertex_OutgoingTransitions(), this.getTransition(), this.getTransition_Source(), "outgoingTransitions", null, 0, -1, Vertex.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 
 		initEClass(regionEClass, Region.class, "Region", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getRegion_Vertices(), this.getVertex(), this.getVertex_ParentRegion(), "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getRegion_Vertices(), this.getVertex(), this.getVertex_ParentRegion(), "vertices", null, 0, -1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getRegion_Priority(), ecorePackage.getEInt(), "priority", null, 0, 1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getRegion_Composite(), this.getCompositeElement(), this.getCompositeElement_Regions(), "composite", null, 1, 1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getRegion_Composite(), this.getCompositeElement(), this.getCompositeElement_Regions(), "composite", null, 1, 1, Region.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(transitionEClass, Transition.class, "Transition", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getTransition_Target(), this.getVertex(), this.getVertex_IncomingTransitions(), "target", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
-		initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+		initEReference(getTransition_Source(), this.getVertex(), this.getVertex_OutgoingTransitions(), "source", null, 1, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
 		initEAttribute(getTransition_Priority(), ecorePackage.getEInt(), "priority", null, 0, 1, Transition.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(finalStateEClass, FinalState.class, "FinalState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1028,8 +1028,8 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		initEClass(declarationEClass, Declaration.class, "Declaration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(reactionEClass, Reaction.class, "Reaction", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getReaction_Trigger(), this.getTrigger(), null, "trigger", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
-		initEReference(getReaction_Effect(), this.getEffect(), null, "effect", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getReaction_Trigger(), this.getTrigger(), null, "trigger", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getReaction_Effect(), this.getEffect(), null, "effect", null, 0, 1, Reaction.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(reactiveElementEClass, ReactiveElement.class, "ReactiveElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getReactiveElement_Reactions(), this.getReaction(), null, "reactions", null, 0, -1, ReactiveElement.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
@@ -1038,12 +1038,12 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		initEClass(exitEClass, Exit.class, "Exit", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(scopeEClass, Scope.class, "Scope", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getScope_Declarations(), this.getDeclaration(), null, "declarations", null, 0, -1, Scope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getScope_Declarations(), this.getDeclaration(), null, "declarations", null, 0, -1, Scope.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getScope_Events(), this.getEvent(), null, "events", null, 0, -1, Scope.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
 		initEReference(getScope_Variables(), this.getVariable(), null, "variables", null, 0, -1, Scope.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, IS_DERIVED, IS_ORDERED);
 
 		initEClass(scopedElementEClass, ScopedElement.class, "ScopedElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getScopedElement_Scopes(), this.getScope(), null, "scopes", null, 0, -1, ScopedElement.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getScopedElement_Scopes(), this.getScope(), null, "scopes", null, 0, -1, ScopedElement.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getScopedElement_Namespace(), ecorePackage.getEString(), "namespace", null, 0, 1, ScopedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(synchronizationEClass, Synchronization.class, "Synchronization", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1062,7 +1062,7 @@ public class SGraphPackageImpl extends EPackageImpl implements SGraphPackage {
 		initEClass(regularStateEClass, RegularState.class, "RegularState", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(compositeElementEClass, CompositeElement.class, "CompositeElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getCompositeElement_Regions(), this.getRegion(), this.getRegion_Composite(), "regions", null, 0, -1, CompositeElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getCompositeElement_Regions(), this.getRegion(), this.getRegion_Composite(), "regions", null, 0, -1, CompositeElement.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(entryKindEEnum, EntryKind.class, "EntryKind");

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ScopeImpl.java

@@ -81,7 +81,7 @@ public class ScopeImpl extends EObjectImpl implements Scope {
 	 */
 	public EList<Declaration> getDeclarations() {
 		if (declarations == null) {
-			declarations = new EObjectContainmentEList<Declaration>(Declaration.class, this, SGraphPackage.SCOPE__DECLARATIONS);
+			declarations = new EObjectContainmentEList.Resolving<Declaration>(Declaration.class, this, SGraphPackage.SCOPE__DECLARATIONS);
 		}
 		return declarations;
 	}

+ 1 - 1
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/ScopedElementImpl.java

@@ -103,7 +103,7 @@ public abstract class ScopedElementImpl extends EObjectImpl implements ScopedEle
 	 */
 	public EList<Scope> getScopes() {
 		if (scopes == null) {
-			scopes = new EObjectContainmentEList<Scope>(Scope.class, this, SGraphPackage.SCOPED_ELEMENT__SCOPES);
+			scopes = new EObjectContainmentEList.Resolving<Scope>(Scope.class, this, SGraphPackage.SCOPED_ELEMENT__SCOPES);
 		}
 		return scopes;
 	}

+ 16 - 5
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/StateImpl.java

@@ -278,7 +278,7 @@ public class StateImpl extends SpecificationElementImpl implements State {
 	 */
 	public EList<Scope> getScopes() {
 		if (scopes == null) {
-			scopes = new EObjectContainmentEList<Scope>(Scope.class, this, SGraphPackage.STATE__SCOPES);
+			scopes = new EObjectContainmentEList.Resolving<Scope>(Scope.class, this, SGraphPackage.STATE__SCOPES);
 		}
 		return scopes;
 	}
@@ -330,6 +330,16 @@ public class StateImpl extends SpecificationElementImpl implements State {
 		return (Region)eContainer();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Region basicGetParentRegion() {
+		if (eContainerFeatureID() != SGraphPackage.STATE__PARENT_REGION) return null;
+		return (Region)eInternalContainer();
+	}
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -377,7 +387,7 @@ public class StateImpl extends SpecificationElementImpl implements State {
 	 */
 	public EList<Transition> getOutgoingTransitions() {
 		if (outgoingTransitions == null) {
-			outgoingTransitions = new EObjectContainmentWithInverseEList<Transition>(Transition.class, this, SGraphPackage.STATE__OUTGOING_TRANSITIONS, SGraphPackage.TRANSITION__SOURCE);
+			outgoingTransitions = new EObjectContainmentWithInverseEList.Resolving<Transition>(Transition.class, this, SGraphPackage.STATE__OUTGOING_TRANSITIONS, SGraphPackage.TRANSITION__SOURCE);
 		}
 		return outgoingTransitions;
 	}
@@ -388,7 +398,7 @@ public class StateImpl extends SpecificationElementImpl implements State {
 	 */
 	public EList<Region> getRegions() {
 		if (regions == null) {
-			regions = new EObjectContainmentWithInverseEList<Region>(Region.class, this, SGraphPackage.STATE__REGIONS, SGraphPackage.REGION__COMPOSITE);
+			regions = new EObjectContainmentWithInverseEList.Resolving<Region>(Region.class, this, SGraphPackage.STATE__REGIONS, SGraphPackage.REGION__COMPOSITE);
 		}
 		return regions;
 	}
@@ -589,7 +599,8 @@ public class StateImpl extends SpecificationElementImpl implements State {
 			case SGraphPackage.STATE__NAME:
 				return getName();
 			case SGraphPackage.STATE__PARENT_REGION:
-				return getParentRegion();
+				if (resolve) return getParentRegion();
+				return basicGetParentRegion();
 			case SGraphPackage.STATE__INCOMING_TRANSITIONS:
 				return getIncomingTransitions();
 			case SGraphPackage.STATE__OUTGOING_TRANSITIONS:
@@ -714,7 +725,7 @@ public class StateImpl extends SpecificationElementImpl implements State {
 			case SGraphPackage.STATE__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case SGraphPackage.STATE__PARENT_REGION:
-				return getParentRegion() != null;
+				return basicGetParentRegion() != null;
 			case SGraphPackage.STATE__INCOMING_TRANSITIONS:
 				return incomingTransitions != null && !incomingTransitions.isEmpty();
 			case SGraphPackage.STATE__OUTGOING_TRANSITIONS:

+ 2 - 2
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/StatechartImpl.java

@@ -176,7 +176,7 @@ public class StatechartImpl extends SpecificationElementImpl implements Statecha
 	 */
 	public EList<Scope> getScopes() {
 		if (scopes == null) {
-			scopes = new EObjectContainmentEList<Scope>(Scope.class, this, SGraphPackage.STATECHART__SCOPES);
+			scopes = new EObjectContainmentEList.Resolving<Scope>(Scope.class, this, SGraphPackage.STATECHART__SCOPES);
 		}
 		return scopes;
 	}
@@ -209,7 +209,7 @@ public class StatechartImpl extends SpecificationElementImpl implements Statecha
 	 */
 	public EList<Region> getRegions() {
 		if (regions == null) {
-			regions = new EObjectContainmentWithInverseEList<Region>(Region.class, this, SGraphPackage.STATECHART__REGIONS, SGraphPackage.REGION__COMPOSITE);
+			regions = new EObjectContainmentWithInverseEList.Resolving<Region>(Region.class, this, SGraphPackage.STATECHART__REGIONS, SGraphPackage.REGION__COMPOSITE);
 		}
 		return regions;
 	}

+ 63 - 4
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/TransitionImpl.java

@@ -123,6 +123,29 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 	 * @generated
 	 */
 	public Trigger getTrigger() {
+		if (trigger != null && trigger.eIsProxy()) {
+			InternalEObject oldTrigger = (InternalEObject)trigger;
+			trigger = (Trigger)eResolveProxy(oldTrigger);
+			if (trigger != oldTrigger) {
+				InternalEObject newTrigger = (InternalEObject)trigger;
+				NotificationChain msgs = oldTrigger.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.TRANSITION__TRIGGER, null, null);
+				if (newTrigger.eInternalContainer() == null) {
+					msgs = newTrigger.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.TRANSITION__TRIGGER, null, msgs);
+				}
+				if (msgs != null) msgs.dispatch();
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SGraphPackage.TRANSITION__TRIGGER, oldTrigger, trigger));
+			}
+		}
+		return trigger;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Trigger basicGetTrigger() {
 		return trigger;
 	}
 
@@ -166,6 +189,29 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 	 * @generated
 	 */
 	public Effect getEffect() {
+		if (effect != null && effect.eIsProxy()) {
+			InternalEObject oldEffect = (InternalEObject)effect;
+			effect = (Effect)eResolveProxy(oldEffect);
+			if (effect != oldEffect) {
+				InternalEObject newEffect = (InternalEObject)effect;
+				NotificationChain msgs = oldEffect.eInverseRemove(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.TRANSITION__EFFECT, null, null);
+				if (newEffect.eInternalContainer() == null) {
+					msgs = newEffect.eInverseAdd(this, EOPPOSITE_FEATURE_BASE - SGraphPackage.TRANSITION__EFFECT, null, msgs);
+				}
+				if (msgs != null) msgs.dispatch();
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, SGraphPackage.TRANSITION__EFFECT, oldEffect, effect));
+			}
+		}
+		return effect;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Effect basicGetEffect() {
 		return effect;
 	}
 
@@ -273,6 +319,16 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 		return (Vertex)eContainer();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Vertex basicGetSource() {
+		if (eContainerFeatureID() != SGraphPackage.TRANSITION__SOURCE) return null;
+		return (Vertex)eInternalContainer();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -388,14 +444,17 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case SGraphPackage.TRANSITION__TRIGGER:
-				return getTrigger();
+				if (resolve) return getTrigger();
+				return basicGetTrigger();
 			case SGraphPackage.TRANSITION__EFFECT:
-				return getEffect();
+				if (resolve) return getEffect();
+				return basicGetEffect();
 			case SGraphPackage.TRANSITION__TARGET:
 				if (resolve) return getTarget();
 				return basicGetTarget();
 			case SGraphPackage.TRANSITION__SOURCE:
-				return getSource();
+				if (resolve) return getSource();
+				return basicGetSource();
 			case SGraphPackage.TRANSITION__PRIORITY:
 				return getPriority();
 		}
@@ -471,7 +530,7 @@ public class TransitionImpl extends SpecificationElementImpl implements Transiti
 			case SGraphPackage.TRANSITION__TARGET:
 				return target != null;
 			case SGraphPackage.TRANSITION__SOURCE:
-				return getSource() != null;
+				return basicGetSource() != null;
 			case SGraphPackage.TRANSITION__PRIORITY:
 				return priority != PRIORITY_EDEFAULT;
 		}

+ 14 - 3
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/VertexImpl.java

@@ -100,6 +100,16 @@ public abstract class VertexImpl extends NamedElementImpl implements Vertex {
 		return (Region)eContainer();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Region basicGetParentRegion() {
+		if (eContainerFeatureID() != SGraphPackage.VERTEX__PARENT_REGION) return null;
+		return (Region)eInternalContainer();
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -150,7 +160,7 @@ public abstract class VertexImpl extends NamedElementImpl implements Vertex {
 	 */
 	public EList<Transition> getOutgoingTransitions() {
 		if (outgoingTransitions == null) {
-			outgoingTransitions = new EObjectContainmentWithInverseEList<Transition>(Transition.class, this, SGraphPackage.VERTEX__OUTGOING_TRANSITIONS, SGraphPackage.TRANSITION__SOURCE);
+			outgoingTransitions = new EObjectContainmentWithInverseEList.Resolving<Transition>(Transition.class, this, SGraphPackage.VERTEX__OUTGOING_TRANSITIONS, SGraphPackage.TRANSITION__SOURCE);
 		}
 		return outgoingTransitions;
 	}
@@ -217,7 +227,8 @@ public abstract class VertexImpl extends NamedElementImpl implements Vertex {
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
 			case SGraphPackage.VERTEX__PARENT_REGION:
-				return getParentRegion();
+				if (resolve) return getParentRegion();
+				return basicGetParentRegion();
 			case SGraphPackage.VERTEX__INCOMING_TRANSITIONS:
 				return getIncomingTransitions();
 			case SGraphPackage.VERTEX__OUTGOING_TRANSITIONS:
@@ -280,7 +291,7 @@ public abstract class VertexImpl extends NamedElementImpl implements Vertex {
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
 			case SGraphPackage.VERTEX__PARENT_REGION:
-				return getParentRegion() != null;
+				return basicGetParentRegion() != null;
 			case SGraphPackage.VERTEX__INCOMING_TRANSITIONS:
 				return incomingTransitions != null && !incomingTransitions.isEmpty();
 			case SGraphPackage.VERTEX__OUTGOING_TRANSITIONS:

+ 1 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphAdapterFactory.java

@@ -15,6 +15,7 @@ import org.eclipse.emf.common.notify.Notifier;
 import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.base.base.NamedElement;
+import org.yakindu.sct.model.sgraph.*;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.CompositeElement;
 import org.yakindu.sct.model.sgraph.Declaration;

+ 1 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/util/SGraphSwitch.java

@@ -14,6 +14,7 @@ import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.Switch;
 import org.yakindu.base.base.NamedElement;
+import org.yakindu.sct.model.sgraph.*;
 import org.yakindu.sct.model.sgraph.Choice;
 import org.yakindu.sct.model.sgraph.CompositeElement;
 import org.yakindu.sct.model.sgraph.Declaration;