瀏覽代碼

Implemted annotation containment

Andreas Muelder 8 年之前
父節點
當前提交
7d58432ffe
共有 20 個文件被更改,包括 406 次插入83 次删除
  1. 二進制
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreatePackageMember_annotations_Annotation.gif
  2. 二進制
      plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateParameter_annotations_Annotation.gif
  3. 2 0
      plugins/org.yakindu.base.types.edit/plugin.properties
  4. 2 2
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/DeclarationItemProvider.java
  5. 40 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PackageMemberItemProvider.java
  6. 7 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ParameterItemProvider.java
  7. 7 0
      plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypeAliasItemProvider.java
  8. 5 4
      plugins/org.yakindu.base.types/model/types.ecore
  9. 0 23
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Declaration.java
  10. 18 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/PackageMember.java
  11. 18 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/Parameter.java
  12. 125 25
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java
  13. 3 0
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/DeclarationImpl.java
  14. 70 3
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/PackageMemberImpl.java
  15. 43 9
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterImpl.java
  16. 30 3
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypeAliasImpl.java
  17. 22 11
      plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java
  18. 9 0
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphPackage.java
  19. 3 2
      plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/impl/StatechartImpl.java
  20. 2 1
      plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/SText.xtext

二進制
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreatePackageMember_annotations_Annotation.gif


二進制
plugins/org.yakindu.base.types.edit/icons/full/ctool16/CreateParameter_annotations_Annotation.gif


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

@@ -223,3 +223,5 @@ _UI_Annotation_type_feature = Type
 _UI_AnnotationType_properties_feature = Properties
 _UI_AnnotationType_targets_feature = Targets
 _UI_Declaration_annotations_feature = Annotations
+_UI_Parameter_annotations_feature = Annotations
+_UI_PackageMember_annotations_feature = Annotations

+ 2 - 2
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/DeclarationItemProvider.java

@@ -147,7 +147,7 @@ public class DeclarationItemProvider extends ItemProviderAdapter implements IEdi
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(TypesPackage.Literals.TYPED_ELEMENT__TYPE_SPECIFIER);
-			childrenFeatures.add(TypesPackage.Literals.DECLARATION__ANNOTATIONS);
+			childrenFeatures.add(TypesPackage.Literals.PACKAGE_MEMBER__ANNOTATIONS);
 		}
 		return childrenFeatures;
 	}
@@ -224,7 +224,7 @@ public class DeclarationItemProvider extends ItemProviderAdapter implements IEdi
 
 		newChildDescriptors.add
 			(createChildParameter
-				(TypesPackage.Literals.DECLARATION__ANNOTATIONS,
+				(TypesPackage.Literals.PACKAGE_MEMBER__ANNOTATIONS,
 				 TypesFactory.eINSTANCE.createAnnotation()));
 	}
 

+ 40 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/PackageMemberItemProvider.java

@@ -17,12 +17,14 @@ 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.ecore.EStructuralFeature;
 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
 import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ItemPropertyDescriptor;
 import org.eclipse.emf.edit.provider.ViewerNotification;
 import org.yakindu.base.base.provider.NamedElementItemProvider;
 import org.yakindu.base.types.PackageMember;
+import org.yakindu.base.types.TypesFactory;
 import org.yakindu.base.types.TypesPackage;
 
 /**
@@ -81,6 +83,36 @@ public class PackageMemberItemProvider
 				 null));
 	}
 
+	/**
+	 * 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
+	public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) {
+		if (childrenFeatures == null) {
+			super.getChildrenFeatures(object);
+			childrenFeatures.add(TypesPackage.Literals.PACKAGE_MEMBER__ANNOTATIONS);
+		}
+		return childrenFeatures;
+	}
+
+	/**
+	 * <!-- 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
+		// adding (see {@link AddCommand}) it as a child.
+
+		return super.getChildFeature(object, child);
+	}
+
 	/**
 	 * This returns PackageMember.gif.
 	 * <!-- begin-user-doc -->
@@ -121,6 +153,9 @@ public class PackageMemberItemProvider
 			case TypesPackage.PACKAGE_MEMBER__ID:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
+			case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS:
+				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
+				return;
 		}
 		super.notifyChanged(notification);
 	}
@@ -135,6 +170,11 @@ public class PackageMemberItemProvider
 	@Override
 	protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
 		super.collectNewChildDescriptors(newChildDescriptors, object);
+
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.PACKAGE_MEMBER__ANNOTATIONS,
+				 TypesFactory.eINSTANCE.createAnnotation()));
 	}
 
 	/**

+ 7 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/ParameterItemProvider.java

@@ -177,6 +177,7 @@ public class ParameterItemProvider
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(TypesPackage.Literals.TYPED_ELEMENT__TYPE_SPECIFIER);
+			childrenFeatures.add(TypesPackage.Literals.PARAMETER__ANNOTATIONS);
 		}
 		return childrenFeatures;
 	}
@@ -237,6 +238,7 @@ public class ParameterItemProvider
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case TypesPackage.PARAMETER__TYPE_SPECIFIER:
+			case TypesPackage.PARAMETER__ANNOTATIONS:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
 		}
@@ -263,6 +265,11 @@ public class ParameterItemProvider
 			(createChildParameter
 				(TypesPackage.Literals.TYPED_ELEMENT__TYPE_SPECIFIER,
 				 TypesFactory.eINSTANCE.createArrayTypeSpecifier()));
+
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.PARAMETER__ANNOTATIONS,
+				 TypesFactory.eINSTANCE.createAnnotation()));
 	}
 
 	/**

+ 7 - 0
plugins/org.yakindu.base.types.edit/src/org/yakindu/base/types/provider/TypeAliasItemProvider.java

@@ -200,6 +200,7 @@ public class TypeAliasItemProvider
 		if (childrenFeatures == null) {
 			super.getChildrenFeatures(object);
 			childrenFeatures.add(TypesPackage.Literals.TYPED_ELEMENT__TYPE_SPECIFIER);
+			childrenFeatures.add(TypesPackage.Literals.PACKAGE_MEMBER__ANNOTATIONS);
 			childrenFeatures.add(TypesPackage.Literals.TYPE__CONSTRAINT);
 		}
 		return childrenFeatures;
@@ -275,6 +276,7 @@ public class TypeAliasItemProvider
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true));
 				return;
 			case TypesPackage.TYPE_ALIAS__TYPE_SPECIFIER:
+			case TypesPackage.TYPE_ALIAS__ANNOTATIONS:
 			case TypesPackage.TYPE_ALIAS__CONSTRAINT:
 				fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false));
 				return;
@@ -303,6 +305,11 @@ public class TypeAliasItemProvider
 				(TypesPackage.Literals.TYPED_ELEMENT__TYPE_SPECIFIER,
 				 TypesFactory.eINSTANCE.createArrayTypeSpecifier()));
 
+		newChildDescriptors.add
+			(createChildParameter
+				(TypesPackage.Literals.PACKAGE_MEMBER__ANNOTATIONS,
+				 TypesFactory.eINSTANCE.createAnnotation()));
+
 		newChildDescriptors.add
 			(createChildParameter
 				(TypesPackage.Literals.TYPE__CONSTRAINT,

+ 5 - 4
plugins/org.yakindu.base.types/model/types.ecore

@@ -17,10 +17,7 @@
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="visible" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         defaultValueLiteral="true"/>
   </eClassifiers>
-  <eClassifiers xsi:type="ecore:EClass" name="Declaration" abstract="true" eSuperTypes="#//TypedElement base.ecore#//NamedElement #//PackageMember">
-    <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
-        eType="#//Annotation" containment="true"/>
-  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Declaration" abstract="true" eSuperTypes="#//TypedElement base.ecore#//NamedElement #//PackageMember"/>
   <eClassifiers xsi:type="ecore:EClass" name="Operation" eSuperTypes="#//Declaration #//GenericElement">
     <eOperations name="getVarArgIndex" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/>
     <eStructuralFeatures xsi:type="ecore:EReference" name="parameters" upperBound="-1"
@@ -40,6 +37,8 @@
         defaultValueLiteral="false"/>
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="optional" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
         defaultValueLiteral="false"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+        eType="#//Annotation" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="TypedElement" abstract="true" interface="true">
     <eStructuralFeatures xsi:type="ecore:EReference" name="type" eType="#//Type" changeable="false"
@@ -93,6 +92,8 @@
   <eClassifiers xsi:type="ecore:EClass" name="PackageMember" eSuperTypes="base.ecore#//NamedElement #//AnnotatableElement">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="id" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
         changeable="false" volatile="true" transient="true" derived="true" iD="true"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="annotations" upperBound="-1"
+        eType="#//Annotation" containment="true"/>
   </eClassifiers>
   <eClassifiers xsi:type="ecore:EClass" name="RangeConstraint" eSuperTypes="#//TypeConstraint">
     <eStructuralFeatures xsi:type="ecore:EAttribute" name="lowerBound" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//ELong"/>

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

@@ -2,7 +2,6 @@
  */
 package org.yakindu.base.types;
 
-import org.eclipse.emf.common.util.EList;
 import org.yakindu.base.base.NamedElement;
 
 /**
@@ -10,32 +9,10 @@ import org.yakindu.base.base.NamedElement;
  * A representation of the model object '<em><b>Declaration</b></em>'.
  * <!-- end-user-doc -->
  *
- * <p>
- * The following features are supported:
- * </p>
- * <ul>
- *   <li>{@link org.yakindu.base.types.Declaration#getAnnotations <em>Annotations</em>}</li>
- * </ul>
  *
  * @see org.yakindu.base.types.TypesPackage#getDeclaration()
  * @model abstract="true"
  * @generated
  */
 public interface Declaration extends TypedElement, NamedElement, PackageMember {
-
-	/**
-	 * Returns the value of the '<em><b>Annotations</b></em>' containment reference list.
-	 * The list contents are of type {@link org.yakindu.base.types.Annotation}.
-	 * <!-- begin-user-doc -->
-	 * <p>
-	 * If the meaning of the '<em>Annotations</em>' containment reference list isn't clear,
-	 * there really should be more of a description here...
-	 * </p>
-	 * <!-- end-user-doc -->
-	 * @return the value of the '<em>Annotations</em>' containment reference list.
-	 * @see org.yakindu.base.types.TypesPackage#getDeclaration_Annotations()
-	 * @model containment="true"
-	 * @generated
-	 */
-	EList<Annotation> getAnnotations();
 } // Declaration

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

@@ -2,6 +2,7 @@
  */
 package org.yakindu.base.types;
 
+import org.eclipse.emf.common.util.EList;
 import org.yakindu.base.base.NamedElement;
 
 /**
@@ -14,6 +15,7 @@ import org.yakindu.base.base.NamedElement;
  * </p>
  * <ul>
  *   <li>{@link org.yakindu.base.types.PackageMember#getId <em>Id</em>}</li>
+ *   <li>{@link org.yakindu.base.types.PackageMember#getAnnotations <em>Annotations</em>}</li>
  * </ul>
  *
  * @see org.yakindu.base.types.TypesPackage#getPackageMember()
@@ -37,4 +39,20 @@ public interface PackageMember extends NamedElement, AnnotatableElement {
 	 */
 	String getId();
 
+	/**
+	 * Returns the value of the '<em><b>Annotations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.base.types.Annotation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Annotations</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Annotations</em>' containment reference list.
+	 * @see org.yakindu.base.types.TypesPackage#getPackageMember_Annotations()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Annotation> getAnnotations();
+
 } // PackageMember

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

@@ -6,6 +6,7 @@
  */
 package org.yakindu.base.types;
 
+import org.eclipse.emf.common.util.EList;
 import org.yakindu.base.base.NamedElement;
 
 /**
@@ -20,6 +21,7 @@ import org.yakindu.base.base.NamedElement;
  *   <li>{@link org.yakindu.base.types.Parameter#getOwningOperation <em>Owning Operation</em>}</li>
  *   <li>{@link org.yakindu.base.types.Parameter#isVarArgs <em>Var Args</em>}</li>
  *   <li>{@link org.yakindu.base.types.Parameter#isOptional <em>Optional</em>}</li>
+ *   <li>{@link org.yakindu.base.types.Parameter#getAnnotations <em>Annotations</em>}</li>
  * </ul>
  *
  * @see org.yakindu.base.types.TypesPackage#getParameter()
@@ -109,4 +111,20 @@ public interface Parameter extends TypedElement, NamedElement, AnnotatableElemen
 	 */
 	void setOptional(boolean value);
 
+	/**
+	 * Returns the value of the '<em><b>Annotations</b></em>' containment reference list.
+	 * The list contents are of type {@link org.yakindu.base.types.Annotation}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Annotations</em>' containment reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Annotations</em>' containment reference list.
+	 * @see org.yakindu.base.types.TypesPackage#getParameter_Annotations()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<Annotation> getAnnotations();
+
 } // Parameter

+ 125 - 25
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/TypesPackage.java

@@ -144,6 +144,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int PACKAGE_MEMBER__ID = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 0;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PACKAGE_MEMBER__ANNOTATIONS = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+
 	/**
 	 * The number of structural features of the '<em>Package Member</em>' class.
 	 * <!-- begin-user-doc -->
@@ -151,7 +160,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PACKAGE_MEMBER_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 1;
+	int PACKAGE_MEMBER_FEATURE_COUNT = BasePackage.NAMED_ELEMENT_FEATURE_COUNT + 2;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.types.impl.TypeImpl <em>Type</em>}' class.
@@ -221,6 +230,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int TYPE__ID = PACKAGE_MEMBER__ID;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE__ANNOTATIONS = PACKAGE_MEMBER__ANNOTATIONS;
+
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -564,6 +582,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int PARAMETER__OPTIONAL = TYPED_ELEMENT_FEATURE_COUNT + 3;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PARAMETER__ANNOTATIONS = TYPED_ELEMENT_FEATURE_COUNT + 4;
+
 	/**
 	 * The number of structural features of the '<em>Parameter</em>' class.
 	 * <!-- begin-user-doc -->
@@ -571,7 +598,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int PARAMETER_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 4;
+	int PARAMETER_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 5;
 
 
 	/**
@@ -723,6 +750,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int PRIMITIVE_TYPE__ID = TYPE__ID;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRIMITIVE_TYPE__ANNOTATIONS = TYPE__ANNOTATIONS;
+
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -786,6 +822,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int ENUMERATION_TYPE__ID = PRIMITIVE_TYPE__ID;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ENUMERATION_TYPE__ANNOTATIONS = PRIMITIVE_TYPE__ANNOTATIONS;
+
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -878,6 +923,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int COMPLEX_TYPE__ID = TYPE__ID;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COMPLEX_TYPE__ANNOTATIONS = TYPE__ANNOTATIONS;
+
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -1080,6 +1134,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int TYPE_PARAMETER__ID = TYPE__ID;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_PARAMETER__ANNOTATIONS = TYPE__ANNOTATIONS;
+
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -1272,6 +1335,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int TYPE_ALIAS__ID = TYPED_ELEMENT_FEATURE_COUNT + 1;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TYPE_ALIAS__ANNOTATIONS = TYPED_ELEMENT_FEATURE_COUNT + 2;
+
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -1279,7 +1351,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE_ALIAS__CONSTRAINT = TYPED_ELEMENT_FEATURE_COUNT + 2;
+	int TYPE_ALIAS__CONSTRAINT = TYPED_ELEMENT_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Abstract</b></em>' attribute.
@@ -1288,7 +1360,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE_ALIAS__ABSTRACT = TYPED_ELEMENT_FEATURE_COUNT + 3;
+	int TYPE_ALIAS__ABSTRACT = TYPED_ELEMENT_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Visible</b></em>' attribute.
@@ -1297,7 +1369,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE_ALIAS__VISIBLE = TYPED_ELEMENT_FEATURE_COUNT + 4;
+	int TYPE_ALIAS__VISIBLE = TYPED_ELEMENT_FEATURE_COUNT + 5;
 
 	/**
 	 * The number of structural features of the '<em>Type Alias</em>' class.
@@ -1306,7 +1378,7 @@ public interface TypesPackage extends EPackage {
 	 * @generated
 	 * @ordered
 	 */
-	int TYPE_ALIAS_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 5;
+	int TYPE_ALIAS_FEATURE_COUNT = TYPED_ELEMENT_FEATURE_COUNT + 6;
 
 	/**
 	 * The meta object id for the '{@link org.yakindu.base.types.impl.AnnotationImpl <em>Annotation</em>}' class.
@@ -1429,6 +1501,15 @@ public interface TypesPackage extends EPackage {
 	 */
 	int ANNOTATION_TYPE__ID = TYPE__ID;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ANNOTATION_TYPE__ANNOTATIONS = TYPE__ANNOTATIONS;
+
 	/**
 	 * The feature id for the '<em><b>Constraint</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
@@ -1589,17 +1670,6 @@ public interface TypesPackage extends EPackage {
 	 */
 	EClass getDeclaration();
 
-	/**
-	 * Returns the meta object for the containment reference list '{@link org.yakindu.base.types.Declaration#getAnnotations <em>Annotations</em>}'.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @return the meta object for the containment reference list '<em>Annotations</em>'.
-	 * @see org.yakindu.base.types.Declaration#getAnnotations()
-	 * @see #getDeclaration()
-	 * @generated
-	 */
-	EReference getDeclaration_Annotations();
-
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.Operation <em>Operation</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1718,6 +1788,17 @@ public interface TypesPackage extends EPackage {
 	 */
 	EAttribute getParameter_Optional();
 
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.yakindu.base.types.Parameter#getAnnotations <em>Annotations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Annotations</em>'.
+	 * @see org.yakindu.base.types.Parameter#getAnnotations()
+	 * @see #getParameter()
+	 * @generated
+	 */
+	EReference getParameter_Annotations();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.TypedElement <em>Typed Element</em>}'.
 	 * <!-- begin-user-doc -->
@@ -1993,6 +2074,17 @@ public interface TypesPackage extends EPackage {
 	 */
 	EAttribute getPackageMember_Id();
 
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.yakindu.base.types.PackageMember#getAnnotations <em>Annotations</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Annotations</em>'.
+	 * @see org.yakindu.base.types.PackageMember#getAnnotations()
+	 * @see #getPackageMember()
+	 * @generated
+	 */
+	EReference getPackageMember_Annotations();
+
 	/**
 	 * Returns the meta object for class '{@link org.yakindu.base.types.RangeConstraint <em>Range Constraint</em>}'.
 	 * <!-- begin-user-doc -->
@@ -2250,14 +2342,6 @@ public interface TypesPackage extends EPackage {
 		 */
 		EClass DECLARATION = eINSTANCE.getDeclaration();
 
-		/**
-		 * The meta object literal for the '<em><b>Annotations</b></em>' containment reference list feature.
-		 * <!-- begin-user-doc -->
-		 * <!-- end-user-doc -->
-		 * @generated
-		 */
-		EReference DECLARATION__ANNOTATIONS = eINSTANCE.getDeclaration_Annotations();
-
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.impl.OperationImpl <em>Operation</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -2352,6 +2436,14 @@ public interface TypesPackage extends EPackage {
 		 */
 		EAttribute PARAMETER__OPTIONAL = eINSTANCE.getParameter_Optional();
 
+		/**
+		 * The meta object literal for the '<em><b>Annotations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PARAMETER__ANNOTATIONS = eINSTANCE.getParameter_Annotations();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.TypedElement <em>Typed Element</em>}' class.
 		 * <!-- begin-user-doc -->
@@ -2582,6 +2674,14 @@ public interface TypesPackage extends EPackage {
 		 */
 		EAttribute PACKAGE_MEMBER__ID = eINSTANCE.getPackageMember_Id();
 
+		/**
+		 * The meta object literal for the '<em><b>Annotations</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PACKAGE_MEMBER__ANNOTATIONS = eINSTANCE.getPackageMember_Annotations();
+
 		/**
 		 * The meta object literal for the '{@link org.yakindu.base.types.impl.RangeConstraintImpl <em>Range Constraint</em>}' class.
 		 * <!-- begin-user-doc -->

+ 3 - 0
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/DeclarationImpl.java

@@ -3,6 +3,7 @@
 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;
@@ -334,6 +335,7 @@ public abstract class DeclarationImpl extends EObjectImpl implements Declaration
 		if (baseClass == PackageMember.class) {
 			switch (derivedFeatureID) {
 				case TypesPackage.DECLARATION__ID: return TypesPackage.PACKAGE_MEMBER__ID;
+				case TypesPackage.DECLARATION__ANNOTATIONS: return TypesPackage.PACKAGE_MEMBER__ANNOTATIONS;
 				default: return -1;
 			}
 		}
@@ -361,6 +363,7 @@ public abstract class DeclarationImpl extends EObjectImpl implements Declaration
 		if (baseClass == PackageMember.class) {
 			switch (baseFeatureID) {
 				case TypesPackage.PACKAGE_MEMBER__ID: return TypesPackage.DECLARATION__ID;
+				case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS: return TypesPackage.DECLARATION__ANNOTATIONS;
 				default: return -1;
 			}
 		}

+ 70 - 3
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/PackageMemberImpl.java

@@ -2,8 +2,13 @@
  */
 package org.yakindu.base.types.impl;
 
+import java.util.Collection;
+import org.eclipse.emf.common.notify.NotificationChain;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.base.base.impl.NamedElementImpl;
 import org.yakindu.base.types.Annotation;
 import org.yakindu.base.types.PackageMember;
@@ -19,6 +24,7 @@ import org.yakindu.base.types.TypesUtil;
  * </p>
  * <ul>
  *   <li>{@link org.yakindu.base.types.impl.PackageMemberImpl#getId <em>Id</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.PackageMemberImpl#getAnnotations <em>Annotations</em>}</li>
  * </ul>
  *
  * @generated
@@ -34,6 +40,16 @@ public class PackageMemberImpl extends NamedElementImpl implements PackageMember
 	 */
 	protected static final String ID_EDEFAULT = null;
 
+	/**
+	 * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Annotation> annotations;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -60,9 +76,10 @@ public class PackageMemberImpl extends NamedElementImpl implements PackageMember
 	 * @generated
 	 */
 	public EList<Annotation> getAnnotations() {
-		// TODO: implement this method
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+		if (annotations == null) {
+			annotations = new EObjectContainmentEList<Annotation>(Annotation.class, this, TypesPackage.PACKAGE_MEMBER__ANNOTATIONS);
+		}
+		return annotations;
 	}
 
 	/**
@@ -76,6 +93,20 @@ public class PackageMemberImpl extends NamedElementImpl implements PackageMember
 		throw new UnsupportedOperationException();
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS:
+				return ((InternalEList<?>)getAnnotations()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -96,10 +127,44 @@ public class PackageMemberImpl extends NamedElementImpl implements PackageMember
 		switch (featureID) {
 			case TypesPackage.PACKAGE_MEMBER__ID:
 				return getId();
+			case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS:
+				return getAnnotations();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS:
+				getAnnotations().clear();
+				getAnnotations().addAll((Collection<? extends Annotation>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS:
+				getAnnotations().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -110,6 +175,8 @@ public class PackageMemberImpl extends NamedElementImpl implements PackageMember
 		switch (featureID) {
 			case TypesPackage.PACKAGE_MEMBER__ID:
 				return ID_EDEFAULT == null ? getId() != null : !ID_EDEFAULT.equals(getId());
+			case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS:
+				return annotations != null && !annotations.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}

+ 43 - 9
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/ParameterImpl.java

@@ -6,6 +6,7 @@
  */
 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;
@@ -13,7 +14,9 @@ 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.EObjectContainmentEList;
 import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.util.InternalEList;
 import org.yakindu.base.base.BasePackage;
 import org.yakindu.base.base.NamedElement;
 import org.yakindu.base.types.AnnotatableElement;
@@ -38,6 +41,7 @@ import org.yakindu.base.types.TypesPackage;
  *   <li>{@link org.yakindu.base.types.impl.ParameterImpl#getOwningOperation <em>Owning Operation</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.ParameterImpl#isVarArgs <em>Var Args</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.ParameterImpl#isOptional <em>Optional</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.ParameterImpl#getAnnotations <em>Annotations</em>}</li>
  * </ul>
  *
  * @generated
@@ -113,6 +117,16 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 	 */
 	protected boolean optional = OPTIONAL_EDEFAULT;
 
+	/**
+	 * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Annotation> annotations;
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -224,20 +238,26 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 	 * @generated
 	 */
 	public EList<Annotation> getAnnotations() {
-		// TODO: implement this method
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+		if (annotations == null) {
+			annotations = new EObjectContainmentEList<Annotation>(Annotation.class, this, TypesPackage.PARAMETER__ANNOTATIONS);
+		}
+		return annotations;
 	}
 
 	/**
-	 * <!-- begin-user-doc -->
+	 * <!-- begin-user-doc --> 
 	 * <!-- end-user-doc -->
-	 * @generated
+	 * 
+	 * @generated NOT
 	 */
-	public Annotation getAnnotationOfType(String typeName) {
-		// TODO: implement this method
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+	public Annotation getAnnotationOfType(final String typeName) {
+		EList<Annotation> annotations = getAnnotations();
+		for (Annotation annotation : annotations) {
+			if (typeName.equals(annotation.getType().getName())) {
+				return annotation;
+			}
+		}
+		return null;
 	}
 
 	/**
@@ -351,6 +371,8 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 				return basicSetTypeSpecifier(null, msgs);
 			case TypesPackage.PARAMETER__OWNING_OPERATION:
 				return basicSetOwningOperation(null, msgs);
+			case TypesPackage.PARAMETER__ANNOTATIONS:
+				return ((InternalEList<?>)getAnnotations()).basicRemove(otherEnd, msgs);
 		}
 		return super.eInverseRemove(otherEnd, featureID, msgs);
 	}
@@ -390,6 +412,8 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 				return isVarArgs();
 			case TypesPackage.PARAMETER__OPTIONAL:
 				return isOptional();
+			case TypesPackage.PARAMETER__ANNOTATIONS:
+				return getAnnotations();
 		}
 		return super.eGet(featureID, resolve, coreType);
 	}
@@ -399,6 +423,7 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	@SuppressWarnings("unchecked")
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
@@ -417,6 +442,10 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 			case TypesPackage.PARAMETER__OPTIONAL:
 				setOptional((Boolean)newValue);
 				return;
+			case TypesPackage.PARAMETER__ANNOTATIONS:
+				getAnnotations().clear();
+				getAnnotations().addAll((Collection<? extends Annotation>)newValue);
+				return;
 		}
 		super.eSet(featureID, newValue);
 	}
@@ -444,6 +473,9 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 			case TypesPackage.PARAMETER__OPTIONAL:
 				setOptional(OPTIONAL_EDEFAULT);
 				return;
+			case TypesPackage.PARAMETER__ANNOTATIONS:
+				getAnnotations().clear();
+				return;
 		}
 		super.eUnset(featureID);
 	}
@@ -468,6 +500,8 @@ public class ParameterImpl extends EObjectImpl implements Parameter {
 				return varArgs != VAR_ARGS_EDEFAULT;
 			case TypesPackage.PARAMETER__OPTIONAL:
 				return optional != OPTIONAL_EDEFAULT;
+			case TypesPackage.PARAMETER__ANNOTATIONS:
+				return annotations != null && !annotations.isEmpty();
 		}
 		return super.eIsSet(featureID);
 	}

+ 30 - 3
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypeAliasImpl.java

@@ -36,6 +36,7 @@ import org.yakindu.base.types.TypesUtil;
  *   <li>{@link org.yakindu.base.types.impl.TypeAliasImpl#getTypeSpecifier <em>Type Specifier</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeAliasImpl#getName <em>Name</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeAliasImpl#getId <em>Id</em>}</li>
+ *   <li>{@link org.yakindu.base.types.impl.TypeAliasImpl#getAnnotations <em>Annotations</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeAliasImpl#getConstraint <em>Constraint</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeAliasImpl#isAbstract <em>Abstract</em>}</li>
  *   <li>{@link org.yakindu.base.types.impl.TypeAliasImpl#isVisible <em>Visible</em>}</li>
@@ -82,6 +83,16 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 	 */
 	protected static final String ID_EDEFAULT = null;
 
+	/**
+	 * The cached value of the '{@link #getAnnotations() <em>Annotations</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAnnotations()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Annotation> annotations;
+
 	/**
 	 * The cached value of the '{@link #getConstraint() <em>Constraint</em>}' containment reference list.
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -234,9 +245,10 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 	 * @generated
 	 */
 	public EList<Annotation> getAnnotations() {
-		// TODO: implement this method
-		// Ensure that you remove @generated or mark it @generated NOT
-		throw new UnsupportedOperationException();
+		if (annotations == null) {
+			annotations = new EObjectContainmentEList<Annotation>(Annotation.class, this, TypesPackage.TYPE_ALIAS__ANNOTATIONS);
+		}
+		return annotations;
 	}
 
 	/**
@@ -322,6 +334,8 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 		switch (featureID) {
 			case TypesPackage.TYPE_ALIAS__TYPE_SPECIFIER:
 				return basicSetTypeSpecifier(null, msgs);
+			case TypesPackage.TYPE_ALIAS__ANNOTATIONS:
+				return ((InternalEList<?>)getAnnotations()).basicRemove(otherEnd, msgs);
 			case TypesPackage.TYPE_ALIAS__CONSTRAINT:
 				return ((InternalEList<?>)getConstraint()).basicRemove(otherEnd, msgs);
 		}
@@ -344,6 +358,8 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 				return getName();
 			case TypesPackage.TYPE_ALIAS__ID:
 				return getId();
+			case TypesPackage.TYPE_ALIAS__ANNOTATIONS:
+				return getAnnotations();
 			case TypesPackage.TYPE_ALIAS__CONSTRAINT:
 				return getConstraint();
 			case TypesPackage.TYPE_ALIAS__ABSTRACT:
@@ -368,6 +384,10 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 			case TypesPackage.TYPE_ALIAS__NAME:
 				setName((String)newValue);
 				return;
+			case TypesPackage.TYPE_ALIAS__ANNOTATIONS:
+				getAnnotations().clear();
+				getAnnotations().addAll((Collection<? extends Annotation>)newValue);
+				return;
 			case TypesPackage.TYPE_ALIAS__CONSTRAINT:
 				getConstraint().clear();
 				getConstraint().addAll((Collection<? extends TypeConstraint>)newValue);
@@ -395,6 +415,9 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 			case TypesPackage.TYPE_ALIAS__NAME:
 				setName(NAME_EDEFAULT);
 				return;
+			case TypesPackage.TYPE_ALIAS__ANNOTATIONS:
+				getAnnotations().clear();
+				return;
 			case TypesPackage.TYPE_ALIAS__CONSTRAINT:
 				getConstraint().clear();
 				return;
@@ -423,6 +446,8 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
 			case TypesPackage.TYPE_ALIAS__ID:
 				return ID_EDEFAULT == null ? getId() != null : !ID_EDEFAULT.equals(getId());
+			case TypesPackage.TYPE_ALIAS__ANNOTATIONS:
+				return annotations != null && !annotations.isEmpty();
 			case TypesPackage.TYPE_ALIAS__CONSTRAINT:
 				return constraint != null && !constraint.isEmpty();
 			case TypesPackage.TYPE_ALIAS__ABSTRACT:
@@ -453,6 +478,7 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 		if (baseClass == PackageMember.class) {
 			switch (derivedFeatureID) {
 				case TypesPackage.TYPE_ALIAS__ID: return TypesPackage.PACKAGE_MEMBER__ID;
+				case TypesPackage.TYPE_ALIAS__ANNOTATIONS: return TypesPackage.PACKAGE_MEMBER__ANNOTATIONS;
 				default: return -1;
 			}
 		}
@@ -487,6 +513,7 @@ public class TypeAliasImpl extends EObjectImpl implements TypeAlias {
 		if (baseClass == PackageMember.class) {
 			switch (baseFeatureID) {
 				case TypesPackage.PACKAGE_MEMBER__ID: return TypesPackage.TYPE_ALIAS__ID;
+				case TypesPackage.PACKAGE_MEMBER__ANNOTATIONS: return TypesPackage.TYPE_ALIAS__ANNOTATIONS;
 				default: return -1;
 			}
 		}

+ 22 - 11
plugins/org.yakindu.base.types/src-gen/org/yakindu/base/types/impl/TypesPackageImpl.java

@@ -355,15 +355,6 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		return declarationEClass;
 	}
 
-	/**
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 */
-	public EReference getDeclaration_Annotations() {
-		return (EReference)declarationEClass.getEStructuralFeatures().get(0);
-	}
-
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -458,6 +449,15 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		return (EAttribute)parameterEClass.getEStructuralFeatures().get(2);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getParameter_Annotations() {
+		return (EReference)parameterEClass.getEStructuralFeatures().get(3);
+	}
+
 	/**
 	 * <!-- begin-user-doc --> <!-- end-user-doc -->
 	 * @generated
@@ -680,6 +680,15 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		return (EAttribute)packageMemberEClass.getEStructuralFeatures().get(0);
 	}
 
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getPackageMember_Annotations() {
+		return (EReference)packageMemberEClass.getEStructuralFeatures().get(1);
+	}
+
 	/**
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -852,7 +861,6 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		createEAttribute(typeEClass, TYPE__VISIBLE);
 
 		declarationEClass = createEClass(DECLARATION);
-		createEReference(declarationEClass, DECLARATION__ANNOTATIONS);
 
 		operationEClass = createEClass(OPERATION);
 		createEReference(operationEClass, OPERATION__PARAMETERS);
@@ -867,6 +875,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		createEReference(parameterEClass, PARAMETER__OWNING_OPERATION);
 		createEAttribute(parameterEClass, PARAMETER__VAR_ARGS);
 		createEAttribute(parameterEClass, PARAMETER__OPTIONAL);
+		createEReference(parameterEClass, PARAMETER__ANNOTATIONS);
 
 		typedElementEClass = createEClass(TYPED_ELEMENT);
 		createEReference(typedElementEClass, TYPED_ELEMENT__TYPE);
@@ -904,6 +913,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 
 		packageMemberEClass = createEClass(PACKAGE_MEMBER);
 		createEAttribute(packageMemberEClass, PACKAGE_MEMBER__ID);
+		createEReference(packageMemberEClass, PACKAGE_MEMBER__ANNOTATIONS);
 
 		rangeConstraintEClass = createEClass(RANGE_CONSTRAINT);
 		createEAttribute(rangeConstraintEClass, RANGE_CONSTRAINT__LOWER_BOUND);
@@ -1001,7 +1011,6 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		addEOperation(typeEClass, this.getType(), "getOriginType", 0, 1, IS_UNIQUE, IS_ORDERED);
 
 		initEClass(declarationEClass, Declaration.class, "Declaration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
-		initEReference(getDeclaration_Annotations(), this.getAnnotation(), null, "annotations", null, 0, -1, Declaration.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		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);
@@ -1018,6 +1027,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 		initEReference(getParameter_OwningOperation(), this.getOperation(), this.getOperation_Parameters(), "owningOperation", null, 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getParameter_VarArgs(), ecorePackage.getEBoolean(), "varArgs", "false", 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getParameter_Optional(), ecorePackage.getEBoolean(), "optional", "false", 0, 1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getParameter_Annotations(), this.getAnnotation(), null, "annotations", null, 0, -1, Parameter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(typedElementEClass, TypedElement.class, "TypedElement", IS_ABSTRACT, IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEReference(getTypedElement_Type(), this.getType(), null, "type", null, 0, 1, TypedElement.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
@@ -1057,6 +1067,7 @@ public class TypesPackageImpl extends EPackageImpl implements TypesPackage {
 
 		initEClass(packageMemberEClass, PackageMember.class, "PackageMember", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getPackageMember_Id(), ecorePackage.getEString(), "id", null, 0, 1, PackageMember.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
+		initEReference(getPackageMember_Annotations(), this.getAnnotation(), null, "annotations", null, 0, -1, PackageMember.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(rangeConstraintEClass, RangeConstraint.class, "RangeConstraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
 		initEAttribute(getRangeConstraint_LowerBound(), ecorePackage.getELong(), "lowerBound", null, 0, 1, RangeConstraint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

+ 9 - 0
plugins/org.yakindu.sct.model.sgraph/src/org/yakindu/sct/model/sgraph/SGraphPackage.java

@@ -1229,6 +1229,15 @@ public interface SGraphPackage extends EPackage {
 	 */
 	int IMPORT_DECLARATION__ID = TypesPackage.DECLARATION__ID;
 
+	/**
+	 * The feature id for the '<em><b>Annotations</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IMPORT_DECLARATION__ANNOTATIONS = TypesPackage.DECLARATION__ANNOTATIONS;
+
 	/**
 	 * The feature id for the '<em><b>Declaration</b></em>' reference.
 	 * <!-- begin-user-doc -->

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

@@ -26,6 +26,7 @@ import org.yakindu.base.base.BasePackage;
 import org.yakindu.base.base.DocumentedElement;
 import org.yakindu.base.base.DomainElement;
 import org.yakindu.base.base.NamedElement;
+import org.yakindu.base.types.AnnotatableElement;
 import org.yakindu.base.types.Annotation;
 import org.yakindu.sct.model.sgraph.CompositeElement;
 import org.yakindu.sct.model.sgraph.Reaction;
@@ -537,7 +538,7 @@ public class StatechartImpl extends SpecificationElementImpl implements
 				default: return -1;
 			}
 		}
-		if (baseClass == org.yakindu.base.types.AnnotatableElement.class) {
+		if (baseClass == AnnotatableElement.class) {
 			switch (derivedFeatureID) {
 				default: return -1;
 			}
@@ -588,7 +589,7 @@ public class StatechartImpl extends SpecificationElementImpl implements
 				default: return -1;
 			}
 		}
-		if (baseClass == org.yakindu.base.types.AnnotatableElement.class) {
+		if (baseClass == AnnotatableElement.class) {
 			switch (baseFeatureID) {
 				default: return -1;
 			}

+ 2 - 1
plugins/org.yakindu.sct.model.stext/src/org/yakindu/sct/model/stext/SText.xtext

@@ -85,7 +85,8 @@ TypeAliasDefinition:
 	{TypeAliasDefinition} 'alias' name=XID ':' typeSpecifier=TypeSpecifier;
 
 OperationDefinition:
-	{OperationDefinition} 'operation' name=XID '(' (parameters+=Parameter (',' parameters+=Parameter)*)? ')' (':'
+	{OperationDefinition} 
+	'operation' name=XID '(' (parameters+=Parameter (',' parameters+=Parameter)*)? ')' (':'
 	typeSpecifier=TypeSpecifier)?;
 	
 ArgumentedAnnotation returns types::Annotation: