Переглянути джерело

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

Andreas Mülder 10 роки тому
батько
коміт
1d773bf1d6
22 змінених файлів з 371 додано та 603 видалено
  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;
 	}