Pārlūkot izejas kodu

Removed Declaration, Event and Variable from sGraph.ecore
Added Declaration to types

Andreas Mülder 10 gadi atpakaļ
vecāks
revīzija
1d773bf1d6
22 mainītis faili ar 371 papildinājumiem un 603 dzēšanām
  1. BIN
      plugins/org.yakindu.base.expressions/.antlr-generator-3.2.0-patch.jar
  2. 1 0
      plugins/org.yakindu.base.types.edit/plugin.properties
  3. 195 205
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/FeatureItemProvider.java
  4. 1 1
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/EventItemProvider.java
  5. 20 25
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/OperationItemProvider.java
  6. 1 1
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PropertyItemProvider.java
  7. 6 9
      plugins/org.yakindu.base.types/model/types.ecore
  8. 4 6
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/ComplexType.java
  9. 18 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Declaration.java
  10. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Event.java
  11. 0 57
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Feature.java
  12. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Operation.java
  13. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Property.java
  14. 33 88
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java
  15. 9 23
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ComplexTypeImpl.java
  16. 33 130
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/FeatureImpl.java
  17. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/EventImpl.java
  18. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/OperationImpl.java
  19. 1 1
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/PropertyImpl.java
  20. 17 25
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java
  21. 11 12
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesAdapterFactory.java
  22. 16 15
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesSwitch.java

BIN
plugins/org.yakindu.base.expressions/.antlr-generator-3.2.0-patch.jar


+ 1 - 0
plugins/org.yakindu.base.types.edit/plugin.properties

@@ -184,3 +184,4 @@ _UI_Domain_type = Domain
 _UI_TypeAlias_type = Type Alias
 _UI_Package_domain_feature = Domain
 _UI_Domain_domainID_feature = Domain ID
+_UI_Declaration_type = Declaration

+ 195 - 205
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/FeatureItemProvider.java

@@ -1,205 +1,195 @@
-/**
- * <copyright>
- * </copyright>
- *
- * $Id$
- */
-package org.yakindu.base.types.provider;
-
-
-import java.util.Collection;
-import java.util.List;
-
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.util.ResourceLocator;
-import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
-import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
-import org.eclipse.emf.edit.provider.IItemLabelProvider;
-import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.IItemPropertySource;
-import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
-import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
-import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
-import org.eclipse.emf.edit.provider.ItemProviderAdapter;
-import org.eclipse.emf.edit.provider.ViewerNotification;
-import org.yakindu.base.base.BasePackage;
-import org.yakindu.base.types.Feature;
-import org.yakindu.base.types.TypesPackage;
-
-/**
- * This is the item provider adapter for a {@link org.yakindu.base.types.Feature} object.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
-public class FeatureItemProvider
-	extends ItemProviderAdapter
-	implements
-		IEditingDomainItemProvider,
-		IStructuredItemContentProvider,
-		ITreeItemContentProvider,
-		IItemLabelProvider,
-		IItemPropertySource {
-	/**
-	 * This constructs an instance from a factory and a notifier.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public FeatureItemProvider(AdapterFactory adapterFactory) {
-		super(adapterFactory);
-	}
-
-	/**
-	 * This returns the property descriptors for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
-		if (itemPropertyDescriptors == null) {
-			super.getPropertyDescriptors(object);
-
-			addTypePropertyDescriptor(object);
-			addTypeArgumentsPropertyDescriptor(object);
-			addNamePropertyDescriptor(object);
-		}
-		return itemPropertyDescriptors;
-	}
-
-	/**
-	 * This adds a property descriptor for the Type feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addTypePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_TypedElement_type_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_TypedElement_type_feature", "_UI_TypedElement_type"),
-				 TypesPackage.Literals.TYPED_ELEMENT__TYPE,
-				 true,
-				 false,
-				 true,
-				 null,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Type Arguments feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addTypeArgumentsPropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_TypedElement_typeArguments_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_TypedElement_typeArguments_feature", "_UI_TypedElement_type"),
-				 TypesPackage.Literals.TYPED_ELEMENT__TYPE_ARGUMENTS,
-				 true,
-				 false,
-				 true,
-				 null,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This adds a property descriptor for the Name feature.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	protected void addNamePropertyDescriptor(Object object) {
-		itemPropertyDescriptors.add
-			(createItemPropertyDescriptor
-				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
-				 getResourceLocator(),
-				 getString("_UI_NamedElement_name_feature"),
-				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),
-				 BasePackage.Literals.NAMED_ELEMENT__NAME,
-				 true,
-				 false,
-				 false,
-				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
-				 null,
-				 null));
-	}
-
-	/**
-	 * This returns Feature.gif.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public Object getImage(Object object) {
-		return overlayImage(object, getResourceLocator().getImage("full/obj16/Feature"));
-	}
-
-	/**
-	 * This returns the label text for the adapted class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public String getText(Object object) {
-		String label = ((Feature)object).getName();
-		return label == null || label.length() == 0 ?
-			getString("_UI_Feature_type") :
-			getString("_UI_Feature_type") + " " + label;
-	}
-
-	/**
-	 * This handles model notifications by calling {@link #updateChildren} to update any cached
-	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public void notifyChanged(Notification notification) {
-		updateChildren(notification);
-
-		switch (notification.getFeatureID(Feature.class)) {
-			case TypesPackage.FEATURE__NAME:
-				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
-				return;
-		}
-		super.notifyChanged(notification);
-	}
-
-	/**
-	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
-	 * that can be created under this object.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
-		super.collectNewChildDescriptors(newChildDescriptors, object);
-	}
-
-	/**
-	 * Return the resource locator for this item provider's resources.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public ResourceLocator getResourceLocator() {
-		return TypesEditPlugin.INSTANCE;
-	}
-
-}
+/**
+ */
+package org.yakindu.base.types.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.ResourceLocator;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
+import org.eclipse.emf.edit.provider.IItemLabelProvider;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.IItemPropertySource;
+import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
+import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
+import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
+import org.eclipse.emf.edit.provider.ItemProviderAdapter;
+import org.eclipse.emf.edit.provider.ViewerNotification;
+
+import org.yakindu.base.base.BasePackage;
+
+import org.yakindu.base.types.Declaration;
+import org.yakindu.base.types.TypesPackage;
+
+/**
+ * This is the item provider adapter for a {@link org.yakindu.base.types.Declaration} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DeclarationItemProvider 
+	extends ItemProviderAdapter
+	implements
+		IEditingDomainItemProvider,
+		IStructuredItemContentProvider,
+		ITreeItemContentProvider,
+		IItemLabelProvider,
+		IItemPropertySource {
+	/**
+	 * This constructs an instance from a factory and a notifier.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DeclarationItemProvider(AdapterFactory adapterFactory) {
+		super(adapterFactory);
+	}
+
+	/**
+	 * This returns the property descriptors for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+		if (itemPropertyDescriptors == null) {
+			super.getPropertyDescriptors(object);
+
+			addTypePropertyDescriptor(object);
+			addTypeArgumentsPropertyDescriptor(object);
+			addNamePropertyDescriptor(object);
+		}
+		return itemPropertyDescriptors;
+	}
+
+	/**
+	 * This adds a property descriptor for the Type feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TypedElement_type_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_TypedElement_type_feature", "_UI_TypedElement_type"),
+				 TypesPackage.Literals.TYPED_ELEMENT__TYPE,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Type Arguments feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addTypeArgumentsPropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_TypedElement_typeArguments_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_TypedElement_typeArguments_feature", "_UI_TypedElement_type"),
+				 TypesPackage.Literals.TYPED_ELEMENT__TYPE_ARGUMENTS,
+				 true,
+				 false,
+				 true,
+				 null,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This adds a property descriptor for the Name feature.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void addNamePropertyDescriptor(Object object) {
+		itemPropertyDescriptors.add
+			(createItemPropertyDescriptor
+				(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+				 getResourceLocator(),
+				 getString("_UI_NamedElement_name_feature"),
+				 getString("_UI_PropertyDescriptor_description", "_UI_NamedElement_name_feature", "_UI_NamedElement_type"),
+				 BasePackage.Literals.NAMED_ELEMENT__NAME,
+				 true,
+				 false,
+				 false,
+				 ItemPropertyDescriptor.GENERIC_VALUE_IMAGE,
+				 null,
+				 null));
+	}
+
+	/**
+	 * This returns the label text for the adapted class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getText(Object object) {
+		String label = ((Declaration)object).getName();
+		return label == null || label.length() == 0 ?
+			getString("_UI_Declaration_type") :
+			getString("_UI_Declaration_type") + " " + label;
+	}
+	
+
+	/**
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void notifyChanged(Notification notification) {
+		updateChildren(notification);
+
+		switch (notification.getFeatureID(Declaration.class)) {
+			case TypesPackage.DECLARATION__NAME:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
+				return;
+		}
+		super.notifyChanged(notification);
+	}
+
+	/**
+	 * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+	 * that can be created under this object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+		super.collectNewChildDescriptors(newChildDescriptors, object);
+	}
+
+	/**
+	 * Return the resource locator for this item provider's resources.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ResourceLocator getResourceLocator() {
+		return TypesEditPlugin.INSTANCE;
+	}
+
+}

+ 1 - 1
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/EventItemProvider.java

@@ -22,7 +22,7 @@ import org.yakindu.base.types.Event;
  * @generated
  */
 public class EventItemProvider
-	extends FeatureItemProvider {
+	extends DeclarationItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->

+ 20 - 25
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/OperationItemProvider.java

@@ -21,13 +21,12 @@ import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;
 
 /**
- * This is the item provider adapter for a
- * {@link org.yakindu.base.types.Operation} object. <!-- begin-user-doc --> <!--
+ * This is the item provider adapter for a {@link org.yakindu.base.types.Operation} object.
+ * <!-- begin-user-doc --> <!--
  * end-user-doc -->
- * 
  * @generated
  */
-public class OperationItemProvider extends FeatureItemProvider {
+public class OperationItemProvider extends DeclarationItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier. <!--
 	 * begin-user-doc --> <!-- end-user-doc -->
@@ -54,13 +53,10 @@ public class OperationItemProvider extends FeatureItemProvider {
 	}
 
 	/**
-	 * This specifies how to implement {@link #getChildren} and is used to
-	 * deduce an appropriate feature for an
-	 * {@link org.eclipse.emf.edit.command.AddCommand},
-	 * {@link org.eclipse.emf.edit.command.RemoveCommand} or
-	 * {@link org.eclipse.emf.edit.command.MoveCommand} in
-	 * {@link #createCommand}. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an
+	 * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or
+	 * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -74,21 +70,19 @@ public class OperationItemProvider extends FeatureItemProvider {
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
 	protected EStructuralFeature getChildFeature(Object object, Object child) {
-		// Check the type of the specified child object and return the proper
-		// feature to use for
+		// Check the type of the specified child object and return the proper feature to use for
 		// adding (see {@link AddCommand}) it as a child.
 
 		return super.getChildFeature(object, child);
 	}
 
 	/**
-	 * This returns Operation.gif. <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * 
+	 * This returns Operation.gif.
+	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
 	@Override
@@ -117,11 +111,10 @@ public class OperationItemProvider extends FeatureItemProvider {
 	}
 
 	/**
-	 * This handles model notifications by calling {@link #updateChildren} to
-	 * update any cached children and by creating a viewer notification, which
-	 * it passes to {@link #fireNotifyChanged}. <!-- begin-user-doc --> <!--
+	 * This handles model notifications by calling {@link #updateChildren} to update any cached
+	 * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+	 * <!-- begin-user-doc --> <!--
 	 * end-user-doc -->
-	 * 
 	 * @generated
 	 */
 	@Override
@@ -129,9 +122,9 @@ public class OperationItemProvider extends FeatureItemProvider {
 		updateChildren(notification);
 
 		switch (notification.getFeatureID(Operation.class)) {
-		case TypesPackage.OPERATION__PARAMETERS:
-			fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
-			return;
+			case TypesPackage.OPERATION__PARAMETERS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
 		}
 		super.notifyChanged(notification);
 	}
@@ -147,8 +140,10 @@ public class OperationItemProvider extends FeatureItemProvider {
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
 
-		newChildDescriptors.add(createChildParameter(TypesPackage.Literals.OPERATION__PARAMETERS,
-				TypesFactory.eINSTANCE.createParameter()));
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.OPERATION__PARAMETERS,
+				 TypesFactory.eINSTANCE.createParameter()));
 	}
 
 }

+ 1 - 1
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PropertyItemProvider.java

@@ -22,7 +22,7 @@ import org.yakindu.base.types.Property;
  * @generated
  */
 public class PropertyItemProvider
-	extends FeatureItemProvider {
+	extends DeclarationItemProvider {
 	/**
 	 * This constructs an instance from a factory and a notifier.
 	 * <!-- begin-user-doc -->

+ 6 - 9
plugins/org.yakindu.base.types/model/types.ecore

@@ -13,15 +13,12 @@
         eType="#//TypeConstraint" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="abstract" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Feature" abstract="true" eSuperTypes="#//TypedElement base.ecore#//NamedElement">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="owningType" eType="#//ComplexType"
-        eOpposite="#//ComplexType/features"/>
-  </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//Feature #//PackageMember">
+  <eClassifiers xsi:type="ecore:EClass" name="Declaration" abstract="true" eSuperTypes="#//TypedElement base.ecore#//NamedElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//Declaration #//PackageMember">
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
         eType="#//Parameter" containment="true" eOpposite="#//Parameter/owningOperation"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//Feature"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Property" eSuperTypes="#//Declaration"/>
   <eClassifiers xsi:type="ecore:EClass" name="Parameter" eSuperTypes="#//TypedElement base.ecore#//NamedElement">
     <eStructuralFeatures xsi:type="ecore:EReference" name="owningOperation" eType="#//Operation"
         eOpposite="#//Operation/parameters"/>
@@ -31,7 +28,7 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="typeArguments" upperBound="-1"
         eType="#//Type"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//Feature"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Event" eSuperTypes="#//Declaration"/>
   <eClassifiers xsi:type="ecore:EClass" name="EnumerationType" eSuperTypes="#//PrimitiveType">
     <eStructuralFeatures xsi:type="ecore:EReference" name="enumerator" upperBound="-1"
         eType="#//Enumerator" containment="true" eOpposite="#//Enumerator/owningEnumeration"/>
@@ -40,9 +37,9 @@
     <eStructuralFeatures xsi:type="ecore:EReference" name="baseType" eType="#//PrimitiveType"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="ComplexType" eSuperTypes="#//ParameterizedType">
-    <eOperations name="getAllFeatures" upperBound="-1" eType="#//Feature"/>
+    <eOperations name="getAllFeatures" upperBound="-1" eType="#//Declaration"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="features" upperBound="-1"
-        eType="#//Feature" containment="true" eOpposite="#//Feature/owningType"/>
+        eType="#//Declaration" containment="true"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="superTypes" upperBound="-1"
         eType="#//ComplexType"/>
   </eClassifiers>

+ 4 - 6
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/ComplexType.java

@@ -24,8 +24,7 @@ import org.eclipse.emf.common.util.EList;
 public interface ComplexType extends ParameterizedType {
 	/**
 	 * Returns the value of the '<em><b>Features</b></em>' containment reference list.
-	 * The list contents are of type {@link org.yakindu.base.types.Feature}.
-	 * It is bidirectional and its opposite is '{@link org.yakindu.base.types.Feature#getOwningType <em>Owning Type</em>}'.
+	 * The list contents are of type {@link org.yakindu.base.types.Declaration}.
 	 * <!-- begin-user-doc -->
 	 * <p>
 	 * If the meaning of the '<em>Features</em>' containment reference list isn't clear,
@@ -34,11 +33,10 @@ public interface ComplexType extends ParameterizedType {
 	 * <!-- end-user-doc -->
 	 * @return the value of the '<em>Features</em>' containment reference list.
 	 * @see org.yakindu.base.types.TypesPackage#getComplexType_Features()
-	 * @see org.yakindu.base.types.Feature#getOwningType
-	 * @model opposite="owningType" containment="true"
+	 * @model containment="true"
 	 * @generated
 	 */
-	EList<Feature> getFeatures();
+	EList<Declaration> getFeatures();
 
 	/**
 	 * Returns the value of the '<em><b>Super Types</b></em>' reference list.
@@ -62,6 +60,6 @@ public interface ComplexType extends ParameterizedType {
 	 * @model kind="operation"
 	 * @generated
 	 */
-	EList<Feature> getAllFeatures();
+	EList<Declaration> getAllFeatures();
 
 } // ComplexType

+ 18 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Declaration.java

@@ -0,0 +1,18 @@
+/**
+ */
+package org.yakindu.base.types;
+
+import org.yakindu.base.base.NamedElement;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Declaration</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.yakindu.base.types.TypesPackage#getDeclaration()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Declaration extends TypedElement, NamedElement {
+} // Declaration

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Event.java

@@ -17,5 +17,5 @@ package org.yakindu.base.types;
  * @model
  * @generated
  */
-public interface Event extends Feature {
+public interface Event extends Declaration {
 } // Event

+ 0 - 57
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Feature.java

@@ -1,57 +0,0 @@
-/**
- * <copyright>
- * </copyright>
- *
- * $Id$
- */
-package org.yakindu.base.types;
-
-import org.yakindu.base.base.NamedElement;
-
-
-/**
- * <!-- begin-user-doc -->
- * A representation of the model object '<em><b>Feature</b></em>'.
- * <!-- end-user-doc -->
- *
- * <p>
- * The following features are supported:
- * <ul>
- *   <li>{@link org.yakindu.base.types.Feature#getOwningType <em>Owning Type</em>}</li>
- * </ul>
- * </p>
- *
- * @see org.yakindu.base.types.TypesPackage#getFeature()
- * @model abstract="true"
- * @generated
- */
-public interface Feature extends TypedElement, NamedElement {
-	/**
-	 * Returns the value of the '<em><b>Owning Type</b></em>' container reference.
-	 * It is bidirectional and its opposite is '{@link org.yakindu.base.types.ComplexType#getFeatures <em>Features</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Owning Type</em>' container reference isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Owning Type</em>' container reference.
-	 * @see #setOwningType(ComplexType)
-	 * @see org.yakindu.base.types.TypesPackage#getFeature_OwningType()
-	 * @see org.yakindu.base.types.ComplexType#getFeatures
-	 * @model opposite="features" transient="false"
-	 * @generated
-	 */
-	ComplexType getOwningType();
-
-	/**
-	 * Sets the value of the '{@link org.yakindu.base.types.Feature#getOwningType <em>Owning Type</em>}' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @param value the new value of the '<em>Owning Type</em>' container reference.
-	 * @see #getOwningType()
-	 * @generated
-	 */
-	void setOwningType(ComplexType value);
-
-} // Feature

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Operation.java

@@ -24,7 +24,7 @@ import org.eclipse.emf.common.util.EList;
  * @model
  * @generated
  */
-public interface Operation extends Feature, PackageMember {
+public interface Operation extends Declaration, PackageMember {
 	/**
 	 * Returns the value of the '<em><b>Parameters</b></em>' containment reference list.
 	 * The list contents are of type {@link org.yakindu.base.types.Parameter}.

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Property.java

@@ -17,5 +17,5 @@ package org.yakindu.base.types;
  * @model
  * @generated
  */
-public interface Property extends Feature {
+public interface Property extends Declaration {
 } // Property

+ 33 - 88
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java

@@ -154,16 +154,6 @@ public interface TypesPackage extends EPackage {
 	 */
 	int TYPED_ELEMENT = 6;
 
-	/**
-	 * The meta object id for the '{@link org.yakindu.base.types.impl.FeatureImpl <em>Feature</em>}' class.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @see org.yakindu.base.types.impl.FeatureImpl
-	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getFeature()
-	 * @generated
-	 */
-	int FEATURE = 2;
-
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.types.impl.OperationImpl <em>Operation</em>}' class.
 	 * <!-- begin-user-doc -->
@@ -258,49 +248,50 @@ public interface TypesPackage extends EPackage {
 	int TYPED_ELEMENT_FEATURE_COUNT = 2;
 
 	/**
-	 * The feature id for the '<em><b>Type</b></em>' reference.
+	 * The meta object id for the '{@link org.yakindu.base.types.impl.DeclarationImpl <em>Declaration</em>}' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
+	 * @see org.yakindu.base.types.impl.DeclarationImpl
+	 * @see org.yakindu.base.types.impl.TypesPackageImpl#getDeclaration()
 	 * @generated
-	 * @ordered
 	 */
-	int FEATURE__TYPE = TYPED_ELEMENT__TYPE;
+	int DECLARATION = 2;
 
 	/**
-	 * The feature id for the '<em><b>Type Arguments</b></em>' reference list.
+	 * The feature id for the '<em><b>Type</b></em>' reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE__TYPE_ARGUMENTS = TYPED_ELEMENT__TYPE_ARGUMENTS;
+	int DECLARATION__TYPE = TYPED_ELEMENT__TYPE;
 
 	/**
-	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * The feature id for the '<em><b>Type Arguments</b></em>' reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE__NAME = TYPED_ELEMENT_FEATURE_COUNT + 0;
+	int DECLARATION__TYPE_ARGUMENTS = TYPED_ELEMENT__TYPE_ARGUMENTS;
 
 	/**
-	 * The feature id for the '<em><b>Owning Type</b></em>' container reference.
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE__OWNING_TYPE = TYPED_ELEMENT_FEATURE_COUNT + 1;
+	int DECLARATION__NAME = TYPED_ELEMENT_FEATURE_COUNT + 0;
 
 	/**
-	 * The number of structural features of the '<em>Feature</em>' class.
+	 * The number of structural features of the '<em>Declaration</em>' class.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int FEATURE_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 2;
+	int DECLARATION_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -309,7 +300,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION__TYPE = FEATURE__TYPE;
+	int OPERATION__TYPE = DECLARATION__TYPE;
 
 	/**
 	 * The feature id for the '<em><b>Type Arguments</b></em>' reference list.
@@ -318,7 +309,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION__TYPE_ARGUMENTS = FEATURE__TYPE_ARGUMENTS;
+	int OPERATION__TYPE_ARGUMENTS = DECLARATION__TYPE_ARGUMENTS;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -327,16 +318,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION__NAME = FEATURE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Owning Type</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int OPERATION__OWNING_TYPE = FEATURE__OWNING_TYPE;
+	int OPERATION__NAME = DECLARATION__NAME;
 
 	/**
 	 * The feature id for the '<em><b>Parameters</b></em>' containment reference list.
@@ -345,7 +327,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION__PARAMETERS = FEATURE_FEATURE_COUNT + 0;
+	int OPERATION__PARAMETERS = DECLARATION_FEATURE_COUNT + 0;
 
 	/**
 	 * The number of structural features of the '<em>Operation</em>' class.
@@ -354,7 +336,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int OPERATION_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 1;
+	int OPERATION_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -363,7 +345,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__TYPE = FEATURE__TYPE;
+	int PROPERTY__TYPE = DECLARATION__TYPE;
 
 	/**
 	 * The feature id for the '<em><b>Type Arguments</b></em>' reference list.
@@ -372,7 +354,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__TYPE_ARGUMENTS = FEATURE__TYPE_ARGUMENTS;
+	int PROPERTY__TYPE_ARGUMENTS = DECLARATION__TYPE_ARGUMENTS;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -381,16 +363,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY__NAME = FEATURE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Owning Type</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int PROPERTY__OWNING_TYPE = FEATURE__OWNING_TYPE;
+	int PROPERTY__NAME = DECLARATION__NAME;
 
 	/**
 	 * The number of structural features of the '<em>Property</em>' class.
@@ -399,7 +372,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PROPERTY_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 0;
+	int PROPERTY_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 0;
 
 	/**
 	 * The feature id for the '<em><b>Type</b></em>' reference.
@@ -464,7 +437,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__TYPE = FEATURE__TYPE;
+	int EVENT__TYPE = DECLARATION__TYPE;
 
 	/**
 	 * The feature id for the '<em><b>Type Arguments</b></em>' reference list.
@@ -473,7 +446,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__TYPE_ARGUMENTS = FEATURE__TYPE_ARGUMENTS;
+	int EVENT__TYPE_ARGUMENTS = DECLARATION__TYPE_ARGUMENTS;
 
 	/**
 	 * The feature id for the '<em><b>Name</b></em>' attribute.
@@ -482,16 +455,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT__NAME = FEATURE__NAME;
-
-	/**
-	 * The feature id for the '<em><b>Owning Type</b></em>' container reference.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int EVENT__OWNING_TYPE = FEATURE__OWNING_TYPE;
+	int EVENT__NAME = DECLARATION__NAME;
 
 	/**
 	 * The number of structural features of the '<em>Event</em>' class.
@@ -500,7 +464,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int EVENT_FEATURE_COUNT = FEATURE_FEATURE_COUNT + 0;
+	int EVENT_FEATURE_COUNT = DECLARATION_FEATURE_COUNT + 0;
 
 
 	/**
@@ -1083,25 +1047,14 @@ public interface TypesPackage extends EPackage {
 	EAttribute getType_Abstract();
 
 	/**
-	 * Returns the meta object for class '{@link org.yakindu.base.types.Feature <em>Feature</em>}'.
+	 * Returns the meta object for class '{@link org.yakindu.base.types.Declaration <em>Declaration</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
-	 * @return the meta object for class '<em>Feature</em>'.
-	 * @see org.yakindu.base.types.Feature
+	 * @return the meta object for class '<em>Declaration</em>'.
+	 * @see org.yakindu.base.types.Declaration
 	 * @generated
 	 */
-	EClass getFeature();
-
-	/**
-	 * Returns the meta object for the container reference '{@link org.yakindu.base.types.Feature#getOwningType <em>Owning Type</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the container reference '<em>Owning Type</em>'.
-	 * @see org.yakindu.base.types.Feature#getOwningType()
-	 * @see #getFeature()
-	 * @generated
-	 */
-	EReference getFeature_OwningType();
+	EClass getDeclaration();
 
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.Operation <em>Operation</em>}'.
@@ -1514,22 +1467,14 @@ public interface TypesPackage extends EPackage {
 		EAttribute TYPE__ABSTRACT = eINSTANCE.getType_Abstract();
 
 		/**
-		 * The meta object literal for the '{@link org.yakindu.base.types.impl.FeatureImpl <em>Feature</em>}' class.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @see org.yakindu.base.types.impl.FeatureImpl
-		 * @see org.yakindu.base.types.impl.TypesPackageImpl#getFeature()
-		 * @generated
-		 */
-		EClass FEATURE = eINSTANCE.getFeature();
-
-		/**
-		 * The meta object literal for the '<em><b>Owning Type</b></em>' container reference feature.
+		 * The meta object literal for the '{@link org.yakindu.base.types.impl.DeclarationImpl <em>Declaration</em>}' class.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
+		 * @see org.yakindu.base.types.impl.DeclarationImpl
+		 * @see org.yakindu.base.types.impl.TypesPackageImpl#getDeclaration()
 		 * @generated
 		 */
-		EReference FEATURE__OWNING_TYPE = eINSTANCE.getFeature_OwningType();
+		EClass DECLARATION = eINSTANCE.getDeclaration();
 
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.impl.OperationImpl <em>Operation</em>}' class.

+ 9 - 23
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ComplexTypeImpl.java

@@ -12,11 +12,11 @@ import org.eclipse.emf.common.util.BasicEList;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
-import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
 import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.base.types.ComplexType;
-import org.yakindu.base.types.Feature;
+import org.yakindu.base.types.Declaration;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypesPackage;
 
@@ -41,7 +41,7 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	 * @generated
 	 * @ordered
 	 */
-	protected EList<Feature> features;
+	protected EList<Declaration> features;
 
 	/**
 	 * The cached value of the '{@link #getSuperTypes() <em>Super Types</em>}' reference list.
@@ -73,9 +73,9 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EList<Feature> getFeatures() {
+	public EList<Declaration> getFeatures() {
 		if (features == null) {
-			features = new EObjectContainmentWithInverseEList<Feature>(Feature.class, this, TypesPackage.COMPLEX_TYPE__FEATURES, TypesPackage.FEATURE__OWNING_TYPE);
+			features = new EObjectContainmentEList<Declaration>(Declaration.class, this, TypesPackage.COMPLEX_TYPE__FEATURES);
 		}
 		return features;
 	}
@@ -96,8 +96,8 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	 * 
 	 * @generated NOT
 	 */
-	public EList<Feature> getAllFeatures() {
-		EList<Feature> features = new BasicEList<Feature>();
+	public EList<Declaration> getAllFeatures() {
+		EList<Declaration> features = new BasicEList<Declaration>();
 		collectFeatures(this, features, new HashSet<Type>());
 		return features;
 	}
@@ -107,7 +107,7 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 	 * super types.
 	 * 
 	 */
-	protected void collectFeatures(Type type, List<Feature> features, Set<Type> visited) {
+	protected void collectFeatures(Type type, List<Declaration> features, Set<Type> visited) {
 		if (type == null || visited.contains(type))
 			return;
 		if (type instanceof ComplexType) {
@@ -119,20 +119,6 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 		visited.add(type);
 	}
 
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	@SuppressWarnings("unchecked")
-	@Override
-	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case TypesPackage.COMPLEX_TYPE__FEATURES:
-				return ((InternalEList<InternalEObject>)(InternalEList<?>)getFeatures()).basicAdd(otherEnd, msgs);
-		}
-		return super.eInverseAdd(otherEnd, featureID, msgs);
-	}
-
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -171,7 +157,7 @@ public class ComplexTypeImpl extends ParameterizedTypeImpl implements ComplexTyp
 		switch (featureID) {
 			case TypesPackage.COMPLEX_TYPE__FEATURES:
 				getFeatures().clear();
-				getFeatures().addAll((Collection<? extends Feature>)newValue);
+				getFeatures().addAll((Collection<? extends Declaration>)newValue);
 				return;
 			case TypesPackage.COMPLEX_TYPE__SUPER_TYPES:
 				getSuperTypes().clear();

+ 33 - 130
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/FeatureImpl.java

@@ -1,46 +1,44 @@
 /**
- * <copyright>
- * </copyright>
- *
- * $Id$
  */
 package org.yakindu.base.types.impl;
 
 import java.util.Collection;
 
 import org.eclipse.emf.common.notify.Notification;
-import org.eclipse.emf.common.notify.NotificationChain;
+
 import org.eclipse.emf.common.util.EList;
+
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
+
 import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.EObjectImpl;
+
 import org.eclipse.emf.ecore.util.EObjectResolvingEList;
-import org.eclipse.emf.ecore.util.EcoreUtil;
+
 import org.yakindu.base.base.BasePackage;
 import org.yakindu.base.base.NamedElement;
-import org.yakindu.base.types.ComplexType;
-import org.yakindu.base.types.Feature;
+
+import org.yakindu.base.types.Declaration;
 import org.yakindu.base.types.Type;
 import org.yakindu.base.types.TypesPackage;
 
 /**
  * <!-- begin-user-doc -->
- * An implementation of the model object '<em><b>Feature</b></em>'.
+ * An implementation of the model object '<em><b>Declaration</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
  * <ul>
- *   <li>{@link org.yakindu.base.types.impl.FeatureImpl#getType <em>Type</em>}</li>
- *   <li>{@link org.yakindu.base.types.impl.FeatureImpl#getTypeArguments <em>Type Arguments</em>}</li>
- *   <li>{@link org.yakindu.base.types.impl.FeatureImpl#getName <em>Name</em>}</li>
- *   <li>{@link org.yakindu.base.types.impl.FeatureImpl#getOwningType <em>Owning Type</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.DeclarationImpl#getType <em>Type</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.DeclarationImpl#getTypeArguments <em>Type Arguments</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.DeclarationImpl#getName <em>Name</em>}</li>
  * </ul>
  * </p>
  *
  * @generated
  */
-public abstract class FeatureImpl extends EObjectImpl implements Feature {
+public abstract class DeclarationImpl extends EObjectImpl implements Declaration {
 	/**
 	 * The cached value of the '{@link #getType() <em>Type</em>}' reference.
 	 * <!-- begin-user-doc -->
@@ -86,7 +84,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	protected FeatureImpl() {
+	protected DeclarationImpl() {
 		super();
 	}
 
@@ -97,7 +95,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	 */
 	@Override
 	protected EClass eStaticClass() {
-		return TypesPackage.Literals.FEATURE;
+		return TypesPackage.Literals.DECLARATION;
 	}
 
 	/**
@@ -111,7 +109,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 			type = (Type)eResolveProxy(oldType);
 			if (type != oldType) {
 				if (eNotificationRequired())
-					eNotify(new ENotificationImpl(this, Notification.RESOLVE, TypesPackage.FEATURE__TYPE, oldType, type));
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, TypesPackage.DECLARATION__TYPE, oldType, type));
 			}
 		}
 		return type;
@@ -135,7 +133,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 		Type oldType = type;
 		type = newType;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.FEATURE__TYPE, oldType, type));
+			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.DECLARATION__TYPE, oldType, type));
 	}
 
 	/**
@@ -145,7 +143,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	 */
 	public EList<Type> getTypeArguments() {
 		if (typeArguments == null) {
-			typeArguments = new EObjectResolvingEList<Type>(Type.class, this, TypesPackage.FEATURE__TYPE_ARGUMENTS);
+			typeArguments = new EObjectResolvingEList<Type>(Type.class, this, TypesPackage.DECLARATION__TYPE_ARGUMENTS);
 		}
 		return typeArguments;
 	}
@@ -168,92 +166,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 		String oldName = name;
 		name = newName;
 		if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.FEATURE__NAME, oldName, name));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public ComplexType getOwningType() {
-		if (eContainerFeatureID() != TypesPackage.FEATURE__OWNING_TYPE) return null;
-		return (ComplexType)eInternalContainer();
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public NotificationChain basicSetOwningType(ComplexType newOwningType, NotificationChain msgs) {
-		msgs = eBasicSetContainer((InternalEObject)newOwningType, TypesPackage.FEATURE__OWNING_TYPE, msgs);
-		return msgs;
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public void setOwningType(ComplexType newOwningType) {
-		if (newOwningType != eInternalContainer() || (eContainerFeatureID() != TypesPackage.FEATURE__OWNING_TYPE && newOwningType != null)) {
-			if (EcoreUtil.isAncestor(this, newOwningType))
-				throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
-			NotificationChain msgs = null;
-			if (eInternalContainer() != null)
-				msgs = eBasicRemoveFromContainer(msgs);
-			if (newOwningType != null)
-				msgs = ((InternalEObject)newOwningType).eInverseAdd(this, TypesPackage.COMPLEX_TYPE__FEATURES, ComplexType.class, msgs);
-			msgs = basicSetOwningType(newOwningType, msgs);
-			if (msgs != null) msgs.dispatch();
-		}
-		else if (eNotificationRequired())
-			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.FEATURE__OWNING_TYPE, newOwningType, newOwningType));
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case TypesPackage.FEATURE__OWNING_TYPE:
-				if (eInternalContainer() != null)
-					msgs = eBasicRemoveFromContainer(msgs);
-				return basicSetOwningType((ComplexType)otherEnd, msgs);
-		}
-		return super.eInverseAdd(otherEnd, featureID, msgs);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
-		switch (featureID) {
-			case TypesPackage.FEATURE__OWNING_TYPE:
-				return basicSetOwningType(null, msgs);
-		}
-		return super.eInverseRemove(otherEnd, featureID, msgs);
-	}
-
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	@Override
-	public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
-		switch (eContainerFeatureID()) {
-			case TypesPackage.FEATURE__OWNING_TYPE:
-				return eInternalContainer().eInverseRemove(this, TypesPackage.COMPLEX_TYPE__FEATURES, ComplexType.class, msgs);
-		}
-		return super.eBasicRemoveFromContainerFeature(msgs);
+			eNotify(new ENotificationImpl(this, Notification.SET, TypesPackage.DECLARATION__NAME, oldName, name));
 	}
 
 	/**
@@ -264,15 +177,13 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
-			case TypesPackage.FEATURE__TYPE:
+			case TypesPackage.DECLARATION__TYPE:
 				if (resolve) return getType();
 				return basicGetType();
-			case TypesPackage.FEATURE__TYPE_ARGUMENTS:
+			case TypesPackage.DECLARATION__TYPE_ARGUMENTS:
 				return getTypeArguments();
-			case TypesPackage.FEATURE__NAME:
+			case TypesPackage.DECLARATION__NAME:
 				return getName();
-			case TypesPackage.FEATURE__OWNING_TYPE:
-				return getOwningType();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -286,19 +197,16 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
-			case TypesPackage.FEATURE__TYPE:
+			case TypesPackage.DECLARATION__TYPE:
 				setType((Type)newValue);
 				return;
-			case TypesPackage.FEATURE__TYPE_ARGUMENTS:
+			case TypesPackage.DECLARATION__TYPE_ARGUMENTS:
 				getTypeArguments().clear();
 				getTypeArguments().addAll((Collection<? extends Type>)newValue);
 				return;
-			case TypesPackage.FEATURE__NAME:
+			case TypesPackage.DECLARATION__NAME:
 				setName((String)newValue);
 				return;
-			case TypesPackage.FEATURE__OWNING_TYPE:
-				setOwningType((ComplexType)newValue);
-				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -311,18 +219,15 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
-			case TypesPackage.FEATURE__TYPE:
+			case TypesPackage.DECLARATION__TYPE:
 				setType((Type)null);
 				return;
-			case TypesPackage.FEATURE__TYPE_ARGUMENTS:
+			case TypesPackage.DECLARATION__TYPE_ARGUMENTS:
 				getTypeArguments().clear();
 				return;
-			case TypesPackage.FEATURE__NAME:
+			case TypesPackage.DECLARATION__NAME:
 				setName(NAME_EDEFAULT);
 				return;
-			case TypesPackage.FEATURE__OWNING_TYPE:
-				setOwningType((ComplexType)null);
-				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -335,14 +240,12 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
-			case TypesPackage.FEATURE__TYPE:
+			case TypesPackage.DECLARATION__TYPE:
 				return type != null;
-			case TypesPackage.FEATURE__TYPE_ARGUMENTS:
+			case TypesPackage.DECLARATION__TYPE_ARGUMENTS:
 				return typeArguments != null && !typeArguments.isEmpty();
-			case TypesPackage.FEATURE__NAME:
+			case TypesPackage.DECLARATION__NAME:
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
-			case TypesPackage.FEATURE__OWNING_TYPE:
-				return getOwningType() != null;
 		}
 		return super.eIsSet(featureID);
 	}
@@ -356,7 +259,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
 		if (baseClass == NamedElement.class) {
 			switch (derivedFeatureID) {
-				case TypesPackage.FEATURE__NAME: return BasePackage.NAMED_ELEMENT__NAME;
+				case TypesPackage.DECLARATION__NAME: return BasePackage.NAMED_ELEMENT__NAME;
 				default: return -1;
 			}
 		}
@@ -372,7 +275,7 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
 		if (baseClass == NamedElement.class) {
 			switch (baseFeatureID) {
-				case BasePackage.NAMED_ELEMENT__NAME: return TypesPackage.FEATURE__NAME;
+				case BasePackage.NAMED_ELEMENT__NAME: return TypesPackage.DECLARATION__NAME;
 				default: return -1;
 			}
 		}
@@ -395,4 +298,4 @@ public abstract class FeatureImpl extends EObjectImpl implements Feature {
 		return result.toString();
 	}
 
-} //FeatureImpl
+} //DeclarationImpl

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/EventImpl.java

@@ -19,7 +19,7 @@ import org.yakindu.base.types.TypesPackage;
  *
  * @generated
  */
-public class EventImpl extends FeatureImpl implements Event {
+public class EventImpl extends DeclarationImpl implements Event {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/OperationImpl.java

@@ -31,7 +31,7 @@ import org.yakindu.base.types.TypesPackage;
  *
  * @generated
  */
-public class OperationImpl extends FeatureImpl implements Operation {
+public class OperationImpl extends DeclarationImpl implements Operation {
 	/**
 	 * The cached value of the '{@link #getParameters() <em>Parameters</em>}' containment reference list.
 	 * <!-- begin-user-doc -->

+ 1 - 1
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/PropertyImpl.java

@@ -19,7 +19,7 @@ import org.yakindu.base.types.TypesPackage;
  *
  * @generated
  */
-public class PropertyImpl extends FeatureImpl implements Property {
+public class PropertyImpl extends DeclarationImpl implements Property {
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->

+ 17 - 25
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java

@@ -13,11 +13,11 @@ import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.yakindu.base.base.BasePackage;
 import org.yakindu.base.types.ComplexType;
+import org.yakindu.base.types.Declaration;
 import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
 import org.yakindu.base.types.Event;
-import org.yakindu.base.types.Feature;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Parameter;
@@ -53,10 +53,11 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	private EClass typeEClass = null;
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	private EClass featureEClass = null;
+	private EClass declarationEClass = null;
 
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -278,19 +279,12 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 	}
 
 	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EClass getFeature() {
-		return featureEClass;
-	}
-
-	/**
-	 * <!-- begin-user-doc --> <!-- end-user-doc -->
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getFeature_OwningType() {
-		return (EReference)featureEClass.getEStructuralFeatures().get(0);
+	public EClass getDeclaration() {
+		return declarationEClass;
 	}
 
 	/**
@@ -598,8 +592,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		createEReference(typeEClass, TYPE__CONSTRAINT);
 		createEAttribute(typeEClass, TYPE__ABSTRACT);
 
-		featureEClass = createEClass(FEATURE);
-		createEReference(featureEClass, FEATURE__OWNING_TYPE);
+		declarationEClass = createEClass(DECLARATION);
 
 		operationEClass = createEClass(OPERATION);
 		createEReference(operationEClass, OPERATION__PARAMETERS);
@@ -682,14 +675,14 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		// Add supertypes to classes
 		packageEClass.getESuperTypes().add(theBasePackage.getNamedElement());
 		typeEClass.getESuperTypes().add(this.getPackageMember());
-		featureEClass.getESuperTypes().add(this.getTypedElement());
-		featureEClass.getESuperTypes().add(theBasePackage.getNamedElement());
-		operationEClass.getESuperTypes().add(this.getFeature());
+		declarationEClass.getESuperTypes().add(this.getTypedElement());
+		declarationEClass.getESuperTypes().add(theBasePackage.getNamedElement());
+		operationEClass.getESuperTypes().add(this.getDeclaration());
 		operationEClass.getESuperTypes().add(this.getPackageMember());
-		propertyEClass.getESuperTypes().add(this.getFeature());
+		propertyEClass.getESuperTypes().add(this.getDeclaration());
 		parameterEClass.getESuperTypes().add(this.getTypedElement());
 		parameterEClass.getESuperTypes().add(theBasePackage.getNamedElement());
-		eventEClass.getESuperTypes().add(this.getFeature());
+		eventEClass.getESuperTypes().add(this.getDeclaration());
 		enumerationTypeEClass.getESuperTypes().add(this.getPrimitiveType());
 		primitiveTypeEClass.getESuperTypes().add(this.getType());
 		complexTypeEClass.getESuperTypes().add(this.getParameterizedType());
@@ -712,8 +705,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 
 		addEOperation(typeEClass, this.getType(), "getOriginType", 0, 1, IS_UNIQUE, IS_ORDERED);
 
-		initEClass(featureEClass, Feature.class, "Feature", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getFeature_OwningType(), this.getComplexType(), this.getComplexType_Features(), "owningType", null, 0, 1, Feature.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEClass(declarationEClass, Declaration.class, "Declaration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 
 		initEClass(operationEClass, Operation.class, "Operation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getOperation_Parameters(), this.getParameter(), this.getParameter_OwningOperation(), "parameters", null, 0, -1, Operation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
@@ -736,10 +728,10 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		initEReference(getPrimitiveType_BaseType(), this.getPrimitiveType(), null, "baseType", null, 0, 1, PrimitiveType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(complexTypeEClass, ComplexType.class, "ComplexType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getComplexType_Features(), this.getFeature(), this.getFeature_OwningType(), "features", null, 0, -1, ComplexType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getComplexType_Features(), this.getDeclaration(), null, "features", null, 0, -1, ComplexType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getComplexType_SuperTypes(), this.getComplexType(), null, "superTypes", null, 0, -1, ComplexType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
-		addEOperation(complexTypeEClass, this.getFeature(), "getAllFeatures", 0, -1, IS_UNIQUE, IS_ORDERED);
+		addEOperation(complexTypeEClass, this.getDeclaration(), "getAllFeatures", 0, -1, IS_UNIQUE, IS_ORDERED);
 
 		initEClass(enumeratorEClass, Enumerator.class, "Enumerator", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getEnumerator_OwningEnumeration(), this.getEnumerationType(), this.getEnumerationType_Enumerator(), "owningEnumeration", null, 0, 1, Enumerator.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+ 11 - 12
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesAdapterFactory.java

@@ -12,11 +12,11 @@ import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.base.base.NamedElement;
 import org.yakindu.base.types.ComplexType;
+import org.yakindu.base.types.Declaration;
 import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
 import org.yakindu.base.types.Event;
-import org.yakindu.base.types.Feature;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Parameter;
@@ -49,7 +49,7 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 	/**
 	 * Creates an instance of the adapter factory.
 	 * <!-- begin-user-doc --> <!--
-	 * end-user-doc -->
+	 * end-user-doc -->	
 	 * @generated
 	 */
 	public TypesAdapterFactory() {
@@ -93,8 +93,8 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 				return createTypeAdapter();
 			}
 			@Override
-			public Adapter caseFeature(Feature object) {
-				return createFeatureAdapter();
+			public Adapter caseDeclaration(Declaration object) {
+				return createDeclarationAdapter();
 			}
 			@Override
 			public Adapter caseOperation(Operation object) {
@@ -212,17 +212,16 @@ public class TypesAdapterFactory extends AdapterFactoryImpl {
 	}
 
 	/**
-	 * Creates a new adapter for an object of class '
-	 * {@link org.yakindu.base.types.Feature <em>Feature</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 -->
-	 * 
+	 * Creates a new adapter for an object of class '{@link org.yakindu.base.types.Declaration <em>Declaration</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.yakindu.base.types.Feature
+	 * @see org.yakindu.base.types.Declaration
 	 * @generated
 	 */
-	public Adapter createFeatureAdapter() {
+	public Adapter createDeclarationAdapter() {
 		return null;
 	}
 

+ 16 - 15
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/util/TypesSwitch.java

@@ -11,11 +11,11 @@ import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.util.Switch;
 import org.yakindu.base.base.NamedElement;
 import org.yakindu.base.types.ComplexType;
+import org.yakindu.base.types.Declaration;
 import org.yakindu.base.types.Domain;
 import org.yakindu.base.types.EnumerationType;
 import org.yakindu.base.types.Enumerator;
 import org.yakindu.base.types.Event;
-import org.yakindu.base.types.Feature;
 import org.yakindu.base.types.Operation;
 import org.yakindu.base.types.PackageMember;
 import org.yakindu.base.types.Parameter;
@@ -98,18 +98,18 @@ public class TypesSwitch<T> extends Switch<T> {
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
-			case TypesPackage.FEATURE: {
-				Feature feature = (Feature)theEObject;
-				T result = caseFeature(feature);
-				if (result == null) result = caseTypedElement(feature);
-				if (result == null) result = caseNamedElement(feature);
+			case TypesPackage.DECLARATION: {
+				Declaration declaration = (Declaration)theEObject;
+				T result = caseDeclaration(declaration);
+				if (result == null) result = caseTypedElement(declaration);
+				if (result == null) result = caseNamedElement(declaration);
 				if (result == null) result = defaultCase(theEObject);
 				return result;
 			}
 			case TypesPackage.OPERATION: {
 				Operation operation = (Operation)theEObject;
 				T result = caseOperation(operation);
-				if (result == null) result = caseFeature(operation);
+				if (result == null) result = caseDeclaration(operation);
 				if (result == null) result = casePackageMember(operation);
 				if (result == null) result = caseTypedElement(operation);
 				if (result == null) result = caseNamedElement(operation);
@@ -119,7 +119,7 @@ public class TypesSwitch<T> extends Switch<T> {
 			case TypesPackage.PROPERTY: {
 				Property property = (Property)theEObject;
 				T result = caseProperty(property);
-				if (result == null) result = caseFeature(property);
+				if (result == null) result = caseDeclaration(property);
 				if (result == null) result = caseTypedElement(property);
 				if (result == null) result = caseNamedElement(property);
 				if (result == null) result = defaultCase(theEObject);
@@ -142,7 +142,7 @@ public class TypesSwitch<T> extends Switch<T> {
 			case TypesPackage.EVENT: {
 				Event event = (Event)theEObject;
 				T result = caseEvent(event);
-				if (result == null) result = caseFeature(event);
+				if (result == null) result = caseDeclaration(event);
 				if (result == null) result = caseTypedElement(event);
 				if (result == null) result = caseNamedElement(event);
 				if (result == null) result = defaultCase(theEObject);
@@ -275,16 +275,17 @@ public class TypesSwitch<T> extends Switch<T> {
 	}
 
 	/**
-	 * Returns the result of interpreting the object as an instance of '<em>Feature</em>'.
-	 * <!-- begin-user-doc --> This implementation returns
-	 * null; returning a non-null result will terminate the switch. <!--
-	 * end-user-doc -->
+	 * Returns the result of interpreting the object as an instance of '<em>Declaration</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>Feature</em>'.
+	 * @return the result of interpreting the object as an instance of '<em>Declaration</em>'.
 	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
 	 * @generated
 	 */
-	public T caseFeature(Feature object) {
+	public T caseDeclaration(Declaration object) {
 		return null;
 	}