add generated code

Code generation does not work when building headless. See
https://bugs.eclipse.org/bugs/show_bug.cgi?id=487683

Signed-off-by: Hans-Erik Floryd <hans-erik.floryd@rt-labs.com>
diff --git a/.gitignore b/.gitignore
index 97fe0a1..c7cdd03 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,3 @@
 /.DS_Store
-**/xtend-gen
-**/src-gen
 **/bin
 **/target
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/ArtifactWrapper.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/ArtifactWrapper.java
new file mode 100644
index 0000000..4c8093e
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/ArtifactWrapper.java
@@ -0,0 +1,104 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Artifact Wrapper</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getUri <em>Uri</em>}</li>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getArtifactHandler <em>Artifact Handler</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage#getArtifactWrapper()
+ * @model
+ * @generated
+ */
+public interface ArtifactWrapper extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Uri</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Uri</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Uri</em>' attribute.
+	 * @see #setUri(String)
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage#getArtifactWrapper_Uri()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getUri();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getUri <em>Uri</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Uri</em>' attribute.
+	 * @see #getUri()
+	 * @generated
+	 */
+	void setUri(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage#getArtifactWrapper_Name()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Artifact Handler</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Artifact Handler</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Artifact Handler</em>' attribute.
+	 * @see #setArtifactHandler(String)
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage#getArtifactWrapper_ArtifactHandler()
+	 * @model unique="false"
+	 * @generated
+	 */
+	String getArtifactHandler();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getArtifactHandler <em>Artifact Handler</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Artifact Handler</em>' attribute.
+	 * @see #getArtifactHandler()
+	 * @generated
+	 */
+	void setArtifactHandler(String value);
+
+} // ArtifactWrapper
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/ArtifactWrapperContainer.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/ArtifactWrapperContainer.java
new file mode 100644
index 0000000..cbc37fa
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/ArtifactWrapperContainer.java
@@ -0,0 +1,42 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Artifact Wrapper Container</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer#getArtifacts <em>Artifacts</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage#getArtifactWrapperContainer()
+ * @model
+ * @generated
+ */
+public interface ArtifactWrapperContainer extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Artifacts</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Artifacts</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>Artifacts</em>' containment reference list.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage#getArtifactWrapperContainer_Artifacts()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<ArtifactWrapper> getArtifacts();
+
+} // ArtifactWrapperContainer
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/GenericArtifactMetaModelFactory.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/GenericArtifactMetaModelFactory.java
new file mode 100644
index 0000000..59b5ae5
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/GenericArtifactMetaModelFactory.java
@@ -0,0 +1,51 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage
+ * @generated
+ */
+public interface GenericArtifactMetaModelFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	GenericArtifactMetaModelFactory eINSTANCE = org.eclipse.capra.GenericArtifactMetaModel.impl.GenericArtifactMetaModelFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Artifact Wrapper Container</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Artifact Wrapper Container</em>'.
+	 * @generated
+	 */
+	ArtifactWrapperContainer createArtifactWrapperContainer();
+
+	/**
+	 * Returns a new object of class '<em>Artifact Wrapper</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Artifact Wrapper</em>'.
+	 * @generated
+	 */
+	ArtifactWrapper createArtifactWrapper();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	GenericArtifactMetaModelPackage getGenericArtifactMetaModelPackage();
+
+} //GenericArtifactMetaModelFactory
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/GenericArtifactMetaModelPackage.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/GenericArtifactMetaModelPackage.java
new file mode 100644
index 0000000..b365c6c
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/GenericArtifactMetaModelPackage.java
@@ -0,0 +1,294 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel basePackage='org.eclipse.capra'"
+ * @generated
+ */
+public interface GenericArtifactMetaModelPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "GenericArtifactMetaModel";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "org.eclipse.capra.GenericArtifactMetaModel";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "GenericArtifactMetaModel";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	GenericArtifactMetaModelPackage eINSTANCE = org.eclipse.capra.GenericArtifactMetaModel.impl.GenericArtifactMetaModelPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperContainerImpl <em>Artifact Wrapper Container</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperContainerImpl
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.GenericArtifactMetaModelPackageImpl#getArtifactWrapperContainer()
+	 * @generated
+	 */
+	int ARTIFACT_WRAPPER_CONTAINER = 0;
+
+	/**
+	 * The feature id for the '<em><b>Artifacts</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Artifact Wrapper Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER_CONTAINER_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Artifact Wrapper Container</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER_CONTAINER_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperImpl <em>Artifact Wrapper</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperImpl
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.GenericArtifactMetaModelPackageImpl#getArtifactWrapper()
+	 * @generated
+	 */
+	int ARTIFACT_WRAPPER = 1;
+
+	/**
+	 * The feature id for the '<em><b>Uri</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER__URI = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Artifact Handler</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER__ARTIFACT_HANDLER = 2;
+
+	/**
+	 * The number of structural features of the '<em>Artifact Wrapper</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER_FEATURE_COUNT = 3;
+
+	/**
+	 * The number of operations of the '<em>Artifact Wrapper</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ARTIFACT_WRAPPER_OPERATION_COUNT = 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer <em>Artifact Wrapper Container</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Artifact Wrapper Container</em>'.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer
+	 * @generated
+	 */
+	EClass getArtifactWrapperContainer();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer#getArtifacts <em>Artifacts</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Artifacts</em>'.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer#getArtifacts()
+	 * @see #getArtifactWrapperContainer()
+	 * @generated
+	 */
+	EReference getArtifactWrapperContainer_Artifacts();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper <em>Artifact Wrapper</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Artifact Wrapper</em>'.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper
+	 * @generated
+	 */
+	EClass getArtifactWrapper();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getUri <em>Uri</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Uri</em>'.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getUri()
+	 * @see #getArtifactWrapper()
+	 * @generated
+	 */
+	EAttribute getArtifactWrapper_Uri();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getName()
+	 * @see #getArtifactWrapper()
+	 * @generated
+	 */
+	EAttribute getArtifactWrapper_Name();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getArtifactHandler <em>Artifact Handler</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Artifact Handler</em>'.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper#getArtifactHandler()
+	 * @see #getArtifactWrapper()
+	 * @generated
+	 */
+	EAttribute getArtifactWrapper_ArtifactHandler();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	GenericArtifactMetaModelFactory getGenericArtifactMetaModelFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperContainerImpl <em>Artifact Wrapper Container</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperContainerImpl
+		 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.GenericArtifactMetaModelPackageImpl#getArtifactWrapperContainer()
+		 * @generated
+		 */
+		EClass ARTIFACT_WRAPPER_CONTAINER = eINSTANCE.getArtifactWrapperContainer();
+
+		/**
+		 * The meta object literal for the '<em><b>Artifacts</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS = eINSTANCE.getArtifactWrapperContainer_Artifacts();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperImpl <em>Artifact Wrapper</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperImpl
+		 * @see org.eclipse.capra.GenericArtifactMetaModel.impl.GenericArtifactMetaModelPackageImpl#getArtifactWrapper()
+		 * @generated
+		 */
+		EClass ARTIFACT_WRAPPER = eINSTANCE.getArtifactWrapper();
+
+		/**
+		 * The meta object literal for the '<em><b>Uri</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ARTIFACT_WRAPPER__URI = eINSTANCE.getArtifactWrapper_Uri();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ARTIFACT_WRAPPER__NAME = eINSTANCE.getArtifactWrapper_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Artifact Handler</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ARTIFACT_WRAPPER__ARTIFACT_HANDLER = eINSTANCE.getArtifactWrapper_ArtifactHandler();
+
+	}
+
+} //GenericArtifactMetaModelPackage
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/ArtifactWrapperContainerImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/ArtifactWrapperContainerImpl.java
new file mode 100644
index 0000000..ed19b87
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/ArtifactWrapperContainerImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel.impl;
+
+import java.util.Collection;
+
+import org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper;
+import org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer;
+import org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage;
+
+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.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Artifact Wrapper Container</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperContainerImpl#getArtifacts <em>Artifacts</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ArtifactWrapperContainerImpl extends MinimalEObjectImpl.Container implements ArtifactWrapperContainer {
+	/**
+	 * The cached value of the '{@link #getArtifacts() <em>Artifacts</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getArtifacts()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<ArtifactWrapper> artifacts;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArtifactWrapperContainerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return GenericArtifactMetaModelPackage.Literals.ARTIFACT_WRAPPER_CONTAINER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<ArtifactWrapper> getArtifacts() {
+		if (artifacts == null) {
+			artifacts = new EObjectContainmentEList<ArtifactWrapper>(ArtifactWrapper.class, this, GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS);
+		}
+		return artifacts;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS:
+				return ((InternalEList<?>)getArtifacts()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS:
+				return getArtifacts();
+		}
+		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 GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS:
+				getArtifacts().clear();
+				getArtifacts().addAll((Collection<? extends ArtifactWrapper>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS:
+				getArtifacts().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS:
+				return artifacts != null && !artifacts.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ArtifactWrapperContainerImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/ArtifactWrapperImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/ArtifactWrapperImpl.java
new file mode 100644
index 0000000..fc12178
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/ArtifactWrapperImpl.java
@@ -0,0 +1,271 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel.impl;
+
+import org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper;
+import org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Artifact Wrapper</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperImpl#getUri <em>Uri</em>}</li>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.capra.GenericArtifactMetaModel.impl.ArtifactWrapperImpl#getArtifactHandler <em>Artifact Handler</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ArtifactWrapperImpl extends MinimalEObjectImpl.Container implements ArtifactWrapper {
+	/**
+	 * The default value of the '{@link #getUri() <em>Uri</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUri()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String URI_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getUri() <em>Uri</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUri()
+	 * @generated
+	 * @ordered
+	 */
+	protected String uri = URI_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getArtifactHandler() <em>Artifact Handler</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getArtifactHandler()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ARTIFACT_HANDLER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getArtifactHandler() <em>Artifact Handler</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getArtifactHandler()
+	 * @generated
+	 * @ordered
+	 */
+	protected String artifactHandler = ARTIFACT_HANDLER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ArtifactWrapperImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return GenericArtifactMetaModelPackage.Literals.ARTIFACT_WRAPPER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getUri() {
+		return uri;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setUri(String newUri) {
+		String oldUri = uri;
+		uri = newUri;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__URI, oldUri, uri));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getArtifactHandler() {
+		return artifactHandler;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setArtifactHandler(String newArtifactHandler) {
+		String oldArtifactHandler = artifactHandler;
+		artifactHandler = newArtifactHandler;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__ARTIFACT_HANDLER, oldArtifactHandler, artifactHandler));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__URI:
+				return getUri();
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__NAME:
+				return getName();
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__ARTIFACT_HANDLER:
+				return getArtifactHandler();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__URI:
+				setUri((String)newValue);
+				return;
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__NAME:
+				setName((String)newValue);
+				return;
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__ARTIFACT_HANDLER:
+				setArtifactHandler((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__URI:
+				setUri(URI_EDEFAULT);
+				return;
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__ARTIFACT_HANDLER:
+				setArtifactHandler(ARTIFACT_HANDLER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__URI:
+				return URI_EDEFAULT == null ? uri != null : !URI_EDEFAULT.equals(uri);
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER__ARTIFACT_HANDLER:
+				return ARTIFACT_HANDLER_EDEFAULT == null ? artifactHandler != null : !ARTIFACT_HANDLER_EDEFAULT.equals(artifactHandler);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (uri: ");
+		result.append(uri);
+		result.append(", name: ");
+		result.append(name);
+		result.append(", ArtifactHandler: ");
+		result.append(artifactHandler);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ArtifactWrapperImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/GenericArtifactMetaModelFactoryImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/GenericArtifactMetaModelFactoryImpl.java
new file mode 100644
index 0000000..9f11027
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/GenericArtifactMetaModelFactoryImpl.java
@@ -0,0 +1,106 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel.impl;
+
+import org.eclipse.capra.GenericArtifactMetaModel.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericArtifactMetaModelFactoryImpl extends EFactoryImpl implements GenericArtifactMetaModelFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static GenericArtifactMetaModelFactory init() {
+		try {
+			GenericArtifactMetaModelFactory theGenericArtifactMetaModelFactory = (GenericArtifactMetaModelFactory)EPackage.Registry.INSTANCE.getEFactory(GenericArtifactMetaModelPackage.eNS_URI);
+			if (theGenericArtifactMetaModelFactory != null) {
+				return theGenericArtifactMetaModelFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new GenericArtifactMetaModelFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericArtifactMetaModelFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER: return createArtifactWrapperContainer();
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER: return createArtifactWrapper();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ArtifactWrapperContainer createArtifactWrapperContainer() {
+		ArtifactWrapperContainerImpl artifactWrapperContainer = new ArtifactWrapperContainerImpl();
+		return artifactWrapperContainer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ArtifactWrapper createArtifactWrapper() {
+		ArtifactWrapperImpl artifactWrapper = new ArtifactWrapperImpl();
+		return artifactWrapper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericArtifactMetaModelPackage getGenericArtifactMetaModelPackage() {
+		return (GenericArtifactMetaModelPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static GenericArtifactMetaModelPackage getPackage() {
+		return GenericArtifactMetaModelPackage.eINSTANCE;
+	}
+
+} //GenericArtifactMetaModelFactoryImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/GenericArtifactMetaModelPackageImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/GenericArtifactMetaModelPackageImpl.java
new file mode 100644
index 0000000..34d5e6d
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/impl/GenericArtifactMetaModelPackageImpl.java
@@ -0,0 +1,239 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel.impl;
+
+import org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper;
+import org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer;
+import org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelFactory;
+import org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericArtifactMetaModelPackageImpl extends EPackageImpl implements GenericArtifactMetaModelPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass artifactWrapperContainerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass artifactWrapperEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private GenericArtifactMetaModelPackageImpl() {
+		super(eNS_URI, GenericArtifactMetaModelFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link GenericArtifactMetaModelPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static GenericArtifactMetaModelPackage init() {
+		if (isInited) return (GenericArtifactMetaModelPackage)EPackage.Registry.INSTANCE.getEPackage(GenericArtifactMetaModelPackage.eNS_URI);
+
+		// Obtain or create and register package
+		GenericArtifactMetaModelPackageImpl theGenericArtifactMetaModelPackage = (GenericArtifactMetaModelPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof GenericArtifactMetaModelPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new GenericArtifactMetaModelPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theGenericArtifactMetaModelPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theGenericArtifactMetaModelPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theGenericArtifactMetaModelPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(GenericArtifactMetaModelPackage.eNS_URI, theGenericArtifactMetaModelPackage);
+		return theGenericArtifactMetaModelPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getArtifactWrapperContainer() {
+		return artifactWrapperContainerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getArtifactWrapperContainer_Artifacts() {
+		return (EReference)artifactWrapperContainerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getArtifactWrapper() {
+		return artifactWrapperEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getArtifactWrapper_Uri() {
+		return (EAttribute)artifactWrapperEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getArtifactWrapper_Name() {
+		return (EAttribute)artifactWrapperEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getArtifactWrapper_ArtifactHandler() {
+		return (EAttribute)artifactWrapperEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericArtifactMetaModelFactory getGenericArtifactMetaModelFactory() {
+		return (GenericArtifactMetaModelFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		artifactWrapperContainerEClass = createEClass(ARTIFACT_WRAPPER_CONTAINER);
+		createEReference(artifactWrapperContainerEClass, ARTIFACT_WRAPPER_CONTAINER__ARTIFACTS);
+
+		artifactWrapperEClass = createEClass(ARTIFACT_WRAPPER);
+		createEAttribute(artifactWrapperEClass, ARTIFACT_WRAPPER__URI);
+		createEAttribute(artifactWrapperEClass, ARTIFACT_WRAPPER__NAME);
+		createEAttribute(artifactWrapperEClass, ARTIFACT_WRAPPER__ARTIFACT_HANDLER);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(artifactWrapperContainerEClass, ArtifactWrapperContainer.class, "ArtifactWrapperContainer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getArtifactWrapperContainer_Artifacts(), this.getArtifactWrapper(), null, "artifacts", null, 0, -1, ArtifactWrapperContainer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(artifactWrapperEClass, ArtifactWrapper.class, "ArtifactWrapper", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getArtifactWrapper_Uri(), theEcorePackage.getEString(), "uri", null, 0, 1, ArtifactWrapper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getArtifactWrapper_Name(), theEcorePackage.getEString(), "name", null, 0, 1, ArtifactWrapper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getArtifactWrapper_ArtifactHandler(), theEcorePackage.getEString(), "ArtifactHandler", null, 0, 1, ArtifactWrapper.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //GenericArtifactMetaModelPackageImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/util/GenericArtifactMetaModelAdapterFactory.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/util/GenericArtifactMetaModelAdapterFactory.java
new file mode 100644
index 0000000..d867048
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/util/GenericArtifactMetaModelAdapterFactory.java
@@ -0,0 +1,138 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel.util;
+
+import org.eclipse.capra.GenericArtifactMetaModel.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage
+ * @generated
+ */
+public class GenericArtifactMetaModelAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static GenericArtifactMetaModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericArtifactMetaModelAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = GenericArtifactMetaModelPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GenericArtifactMetaModelSwitch<Adapter> modelSwitch =
+		new GenericArtifactMetaModelSwitch<Adapter>() {
+			@Override
+			public Adapter caseArtifactWrapperContainer(ArtifactWrapperContainer object) {
+				return createArtifactWrapperContainerAdapter();
+			}
+			@Override
+			public Adapter caseArtifactWrapper(ArtifactWrapper object) {
+				return createArtifactWrapperAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer <em>Artifact Wrapper Container</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapperContainer
+	 * @generated
+	 */
+	public Adapter createArtifactWrapperContainerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper <em>Artifact Wrapper</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.capra.GenericArtifactMetaModel.ArtifactWrapper
+	 * @generated
+	 */
+	public Adapter createArtifactWrapperAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //GenericArtifactMetaModelAdapterFactory
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/util/GenericArtifactMetaModelSwitch.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/util/GenericArtifactMetaModelSwitch.java
new file mode 100644
index 0000000..46279cb
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericArtifactMetaModel/util/GenericArtifactMetaModelSwitch.java
@@ -0,0 +1,131 @@
+/**
+ */
+package org.eclipse.capra.GenericArtifactMetaModel.util;
+
+import org.eclipse.capra.GenericArtifactMetaModel.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericArtifactMetaModel.GenericArtifactMetaModelPackage
+ * @generated
+ */
+public class GenericArtifactMetaModelSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static GenericArtifactMetaModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericArtifactMetaModelSwitch() {
+		if (modelPackage == null) {
+			modelPackage = GenericArtifactMetaModelPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER_CONTAINER: {
+				ArtifactWrapperContainer artifactWrapperContainer = (ArtifactWrapperContainer)theEObject;
+				T result = caseArtifactWrapperContainer(artifactWrapperContainer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case GenericArtifactMetaModelPackage.ARTIFACT_WRAPPER: {
+				ArtifactWrapper artifactWrapper = (ArtifactWrapper)theEObject;
+				T result = caseArtifactWrapper(artifactWrapper);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Artifact Wrapper Container</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>Artifact Wrapper Container</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseArtifactWrapperContainer(ArtifactWrapperContainer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Artifact Wrapper</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>Artifact Wrapper</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseArtifactWrapper(ArtifactWrapper object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //GenericArtifactMetaModelSwitch
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceMetaModelFactory.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceMetaModelFactory.java
new file mode 100644
index 0000000..b0ec180
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceMetaModelFactory.java
@@ -0,0 +1,51 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage
+ * @generated
+ */
+public interface GenericTraceMetaModelFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	GenericTraceMetaModelFactory eINSTANCE = org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceMetaModelFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Generic Trace Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Generic Trace Model</em>'.
+	 * @generated
+	 */
+	GenericTraceModel createGenericTraceModel();
+
+	/**
+	 * Returns a new object of class '<em>Related To</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Related To</em>'.
+	 * @generated
+	 */
+	RelatedTo createRelatedTo();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	GenericTraceMetaModelPackage getGenericTraceMetaModelPackage();
+
+} //GenericTraceMetaModelFactory
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceMetaModelPackage.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceMetaModelPackage.java
new file mode 100644
index 0000000..e2926e5
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceMetaModelPackage.java
@@ -0,0 +1,237 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel basePackage='org.eclipse.capra'"
+ * @generated
+ */
+public interface GenericTraceMetaModelPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "GenericTraceMetaModel";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "org.eclipse.capra.GenericTraceMetaModel";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "GenericTraceMetaModel";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	GenericTraceMetaModelPackage eINSTANCE = org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceMetaModelPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceModelImpl <em>Generic Trace Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceModelImpl
+	 * @see org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceMetaModelPackageImpl#getGenericTraceModel()
+	 * @generated
+	 */
+	int GENERIC_TRACE_MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Traces</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_TRACE_MODEL__TRACES = 0;
+
+	/**
+	 * The number of structural features of the '<em>Generic Trace Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_TRACE_MODEL_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Generic Trace Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GENERIC_TRACE_MODEL_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.capra.GenericTraceMetaModel.impl.RelatedToImpl <em>Related To</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.capra.GenericTraceMetaModel.impl.RelatedToImpl
+	 * @see org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceMetaModelPackageImpl#getRelatedTo()
+	 * @generated
+	 */
+	int RELATED_TO = 1;
+
+	/**
+	 * The feature id for the '<em><b>Item</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATED_TO__ITEM = 0;
+
+	/**
+	 * The number of structural features of the '<em>Related To</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATED_TO_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Related To</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RELATED_TO_OPERATION_COUNT = 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel <em>Generic Trace Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Generic Trace Model</em>'.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel
+	 * @generated
+	 */
+	EClass getGenericTraceModel();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel#getTraces <em>Traces</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Traces</em>'.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel#getTraces()
+	 * @see #getGenericTraceModel()
+	 * @generated
+	 */
+	EReference getGenericTraceModel_Traces();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.capra.GenericTraceMetaModel.RelatedTo <em>Related To</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Related To</em>'.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.RelatedTo
+	 * @generated
+	 */
+	EClass getRelatedTo();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.capra.GenericTraceMetaModel.RelatedTo#getItem <em>Item</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Item</em>'.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.RelatedTo#getItem()
+	 * @see #getRelatedTo()
+	 * @generated
+	 */
+	EReference getRelatedTo_Item();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	GenericTraceMetaModelFactory getGenericTraceMetaModelFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceModelImpl <em>Generic Trace Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceModelImpl
+		 * @see org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceMetaModelPackageImpl#getGenericTraceModel()
+		 * @generated
+		 */
+		EClass GENERIC_TRACE_MODEL = eINSTANCE.getGenericTraceModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Traces</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference GENERIC_TRACE_MODEL__TRACES = eINSTANCE.getGenericTraceModel_Traces();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.capra.GenericTraceMetaModel.impl.RelatedToImpl <em>Related To</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.capra.GenericTraceMetaModel.impl.RelatedToImpl
+		 * @see org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceMetaModelPackageImpl#getRelatedTo()
+		 * @generated
+		 */
+		EClass RELATED_TO = eINSTANCE.getRelatedTo();
+
+		/**
+		 * The meta object literal for the '<em><b>Item</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RELATED_TO__ITEM = eINSTANCE.getRelatedTo_Item();
+
+	}
+
+} //GenericTraceMetaModelPackage
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceModel.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceModel.java
new file mode 100644
index 0000000..1ceb8ab
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/GenericTraceModel.java
@@ -0,0 +1,42 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Generic Trace Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel#getTraces <em>Traces</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage#getGenericTraceModel()
+ * @model
+ * @generated
+ */
+public interface GenericTraceModel extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Traces</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.capra.GenericTraceMetaModel.RelatedTo}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Traces</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>Traces</em>' containment reference list.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage#getGenericTraceModel_Traces()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<RelatedTo> getTraces();
+
+} // GenericTraceModel
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/RelatedTo.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/RelatedTo.java
new file mode 100644
index 0000000..23d8c2a
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/RelatedTo.java
@@ -0,0 +1,42 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Related To</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericTraceMetaModel.RelatedTo#getItem <em>Item</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage#getRelatedTo()
+ * @model
+ * @generated
+ */
+public interface RelatedTo extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Item</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.emf.ecore.EObject}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Item</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Item</em>' reference list.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage#getRelatedTo_Item()
+	 * @model
+	 * @generated
+	 */
+	EList<EObject> getItem();
+
+} // RelatedTo
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceMetaModelFactoryImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceMetaModelFactoryImpl.java
new file mode 100644
index 0000000..1a7c01e
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceMetaModelFactoryImpl.java
@@ -0,0 +1,106 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel.impl;
+
+import org.eclipse.capra.GenericTraceMetaModel.*;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericTraceMetaModelFactoryImpl extends EFactoryImpl implements GenericTraceMetaModelFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static GenericTraceMetaModelFactory init() {
+		try {
+			GenericTraceMetaModelFactory theGenericTraceMetaModelFactory = (GenericTraceMetaModelFactory)EPackage.Registry.INSTANCE.getEFactory(GenericTraceMetaModelPackage.eNS_URI);
+			if (theGenericTraceMetaModelFactory != null) {
+				return theGenericTraceMetaModelFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new GenericTraceMetaModelFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTraceMetaModelFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL: return createGenericTraceModel();
+			case GenericTraceMetaModelPackage.RELATED_TO: return createRelatedTo();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTraceModel createGenericTraceModel() {
+		GenericTraceModelImpl genericTraceModel = new GenericTraceModelImpl();
+		return genericTraceModel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public RelatedTo createRelatedTo() {
+		RelatedToImpl relatedTo = new RelatedToImpl();
+		return relatedTo;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTraceMetaModelPackage getGenericTraceMetaModelPackage() {
+		return (GenericTraceMetaModelPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static GenericTraceMetaModelPackage getPackage() {
+		return GenericTraceMetaModelPackage.eINSTANCE;
+	}
+
+} //GenericTraceMetaModelFactoryImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceMetaModelPackageImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceMetaModelPackageImpl.java
new file mode 100644
index 0000000..b1c09a7
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceMetaModelPackageImpl.java
@@ -0,0 +1,216 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel.impl;
+
+import org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelFactory;
+import org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage;
+import org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel;
+import org.eclipse.capra.GenericTraceMetaModel.RelatedTo;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class GenericTraceMetaModelPackageImpl extends EPackageImpl implements GenericTraceMetaModelPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass genericTraceModelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass relatedToEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private GenericTraceMetaModelPackageImpl() {
+		super(eNS_URI, GenericTraceMetaModelFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link GenericTraceMetaModelPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static GenericTraceMetaModelPackage init() {
+		if (isInited) return (GenericTraceMetaModelPackage)EPackage.Registry.INSTANCE.getEPackage(GenericTraceMetaModelPackage.eNS_URI);
+
+		// Obtain or create and register package
+		GenericTraceMetaModelPackageImpl theGenericTraceMetaModelPackage = (GenericTraceMetaModelPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof GenericTraceMetaModelPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new GenericTraceMetaModelPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theGenericTraceMetaModelPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theGenericTraceMetaModelPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theGenericTraceMetaModelPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(GenericTraceMetaModelPackage.eNS_URI, theGenericTraceMetaModelPackage);
+		return theGenericTraceMetaModelPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getGenericTraceModel() {
+		return genericTraceModelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getGenericTraceModel_Traces() {
+		return (EReference)genericTraceModelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getRelatedTo() {
+		return relatedToEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getRelatedTo_Item() {
+		return (EReference)relatedToEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTraceMetaModelFactory getGenericTraceMetaModelFactory() {
+		return (GenericTraceMetaModelFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		genericTraceModelEClass = createEClass(GENERIC_TRACE_MODEL);
+		createEReference(genericTraceModelEClass, GENERIC_TRACE_MODEL__TRACES);
+
+		relatedToEClass = createEClass(RELATED_TO);
+		createEReference(relatedToEClass, RELATED_TO__ITEM);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(genericTraceModelEClass, GenericTraceModel.class, "GenericTraceModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getGenericTraceModel_Traces(), this.getRelatedTo(), null, "traces", null, 0, -1, GenericTraceModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(relatedToEClass, RelatedTo.class, "RelatedTo", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getRelatedTo_Item(), theEcorePackage.getEObject(), null, "item", null, 0, -1, RelatedTo.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //GenericTraceMetaModelPackageImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceModelImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceModelImpl.java
new file mode 100644
index 0000000..a4a0695
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/GenericTraceModelImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel.impl;
+
+import java.util.Collection;
+
+import org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage;
+import org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel;
+import org.eclipse.capra.GenericTraceMetaModel.RelatedTo;
+
+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.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Generic Trace Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericTraceMetaModel.impl.GenericTraceModelImpl#getTraces <em>Traces</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GenericTraceModelImpl extends MinimalEObjectImpl.Container implements GenericTraceModel {
+	/**
+	 * The cached value of the '{@link #getTraces() <em>Traces</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTraces()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<RelatedTo> traces;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GenericTraceModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return GenericTraceMetaModelPackage.Literals.GENERIC_TRACE_MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<RelatedTo> getTraces() {
+		if (traces == null) {
+			traces = new EObjectContainmentEList<RelatedTo>(RelatedTo.class, this, GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL__TRACES);
+		}
+		return traces;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL__TRACES:
+				return ((InternalEList<?>)getTraces()).basicRemove(otherEnd, msgs);
+		}
+		return super.eInverseRemove(otherEnd, featureID, msgs);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL__TRACES:
+				return getTraces();
+		}
+		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 GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL__TRACES:
+				getTraces().clear();
+				getTraces().addAll((Collection<? extends RelatedTo>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL__TRACES:
+				getTraces().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL__TRACES:
+				return traces != null && !traces.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //GenericTraceModelImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/RelatedToImpl.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/RelatedToImpl.java
new file mode 100644
index 0000000..7fe9987
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/impl/RelatedToImpl.java
@@ -0,0 +1,134 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel.impl;
+
+import java.util.Collection;
+
+import org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage;
+import org.eclipse.capra.GenericTraceMetaModel.RelatedTo;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Related To</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.capra.GenericTraceMetaModel.impl.RelatedToImpl#getItem <em>Item</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RelatedToImpl extends MinimalEObjectImpl.Container implements RelatedTo {
+	/**
+	 * The cached value of the '{@link #getItem() <em>Item</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getItem()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<EObject> item;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RelatedToImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return GenericTraceMetaModelPackage.Literals.RELATED_TO;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<EObject> getItem() {
+		if (item == null) {
+			item = new EObjectResolvingEList<EObject>(EObject.class, this, GenericTraceMetaModelPackage.RELATED_TO__ITEM);
+		}
+		return item;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case GenericTraceMetaModelPackage.RELATED_TO__ITEM:
+				return getItem();
+		}
+		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 GenericTraceMetaModelPackage.RELATED_TO__ITEM:
+				getItem().clear();
+				getItem().addAll((Collection<? extends EObject>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case GenericTraceMetaModelPackage.RELATED_TO__ITEM:
+				getItem().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case GenericTraceMetaModelPackage.RELATED_TO__ITEM:
+				return item != null && !item.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //RelatedToImpl
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/util/GenericTraceMetaModelAdapterFactory.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/util/GenericTraceMetaModelAdapterFactory.java
new file mode 100644
index 0000000..9545325
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/util/GenericTraceMetaModelAdapterFactory.java
@@ -0,0 +1,138 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel.util;
+
+import org.eclipse.capra.GenericTraceMetaModel.*;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage
+ * @generated
+ */
+public class GenericTraceMetaModelAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static GenericTraceMetaModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTraceMetaModelAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = GenericTraceMetaModelPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GenericTraceMetaModelSwitch<Adapter> modelSwitch =
+		new GenericTraceMetaModelSwitch<Adapter>() {
+			@Override
+			public Adapter caseGenericTraceModel(GenericTraceModel object) {
+				return createGenericTraceModelAdapter();
+			}
+			@Override
+			public Adapter caseRelatedTo(RelatedTo object) {
+				return createRelatedToAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel <em>Generic Trace Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceModel
+	 * @generated
+	 */
+	public Adapter createGenericTraceModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.capra.GenericTraceMetaModel.RelatedTo <em>Related To</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.capra.GenericTraceMetaModel.RelatedTo
+	 * @generated
+	 */
+	public Adapter createRelatedToAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //GenericTraceMetaModelAdapterFactory
diff --git a/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/util/GenericTraceMetaModelSwitch.java b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/util/GenericTraceMetaModelSwitch.java
new file mode 100644
index 0000000..8546fe7
--- /dev/null
+++ b/org.eclipse.capra.generic.tracemodels/src-gen/org/eclipse/capra/GenericTraceMetaModel/util/GenericTraceMetaModelSwitch.java
@@ -0,0 +1,131 @@
+/**
+ */
+package org.eclipse.capra.GenericTraceMetaModel.util;
+
+import org.eclipse.capra.GenericTraceMetaModel.*;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.capra.GenericTraceMetaModel.GenericTraceMetaModelPackage
+ * @generated
+ */
+public class GenericTraceMetaModelSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static GenericTraceMetaModelPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public GenericTraceMetaModelSwitch() {
+		if (modelPackage == null) {
+			modelPackage = GenericTraceMetaModelPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case GenericTraceMetaModelPackage.GENERIC_TRACE_MODEL: {
+				GenericTraceModel genericTraceModel = (GenericTraceModel)theEObject;
+				T result = caseGenericTraceModel(genericTraceModel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case GenericTraceMetaModelPackage.RELATED_TO: {
+				RelatedTo relatedTo = (RelatedTo)theEObject;
+				T result = caseRelatedTo(relatedTo);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Generic Trace Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Generic Trace Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGenericTraceModel(GenericTraceModel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Related To</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>Related To</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRelatedTo(RelatedTo object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //GenericTraceMetaModelSwitch
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
new file mode 100644
index 0000000..bb33b88
--- /dev/null
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.VisualizationHelper.xtendbin
Binary files differ
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.gitignore b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.gitignore
new file mode 100644
index 0000000..6b4eb14
--- /dev/null
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/.gitignore
@@ -0,0 +1 @@
+/.VisualizationHelper.java._trace
diff --git a/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
new file mode 100644
index 0000000..5f05224
--- /dev/null
+++ b/org.eclipse.capra.ui.plantuml/xtend-gen/org/eclipse/capra/ui/plantuml/VisualizationHelper.java
@@ -0,0 +1,116 @@
+package org.eclipse.capra.ui.plantuml;
+
+import com.google.common.base.Objects;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+import org.eclipse.capra.core.adapters.Connection;
+import org.eclipse.capra.core.adapters.TraceMetaModelAdapter;
+import org.eclipse.capra.core.helpers.ExtensionPointHelper;
+import org.eclipse.capra.ui.helpers.EMFHelper;
+import org.eclipse.capra.ui.plantuml.Connections;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+@SuppressWarnings("all")
+public class VisualizationHelper {
+  public static String createMatrix(final EObject traceModel, final Collection<EObject> firstElements, final Collection<EObject> secondElements) {
+    String _xblockexpression = null;
+    {
+      Optional<TraceMetaModelAdapter> _traceMetamodelAdapter = ExtensionPointHelper.getTraceMetamodelAdapter();
+      final TraceMetaModelAdapter traceAdapter = _traceMetamodelAdapter.get();
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("@startuml");
+      _builder.newLine();
+      _builder.append("salt");
+      _builder.newLine();
+      _builder.append("{#");
+      _builder.newLine();
+      {
+        boolean _notEquals = (!Objects.equal(firstElements, null));
+        if (_notEquals) {
+          _builder.append(".");
+          {
+            for(final EObject e : secondElements) {
+              _builder.append("|");
+              String _identifier = EMFHelper.getIdentifier(e);
+              _builder.append(_identifier, "");
+            }
+          }
+          _builder.newLineIfNotEmpty();
+          {
+            for(final EObject first : firstElements) {
+              String _identifier_1 = EMFHelper.getIdentifier(first);
+              _builder.append(_identifier_1, "");
+              _builder.append(" ");
+              {
+                for(final EObject second : secondElements) {
+                  _builder.append("|");
+                  {
+                    boolean _isThereATraceBetween = traceAdapter.isThereATraceBetween(first, second, traceModel);
+                    if (_isThereATraceBetween) {
+                      _builder.append("X");
+                    } else {
+                      _builder.append(".");
+                    }
+                  }
+                }
+              }
+              _builder.newLineIfNotEmpty();
+            }
+          }
+        } else {
+          _builder.append("Choose two containers to show a traceability matrix of their contents.");
+          _builder.newLine();
+        }
+      }
+      _builder.append("}");
+      _builder.newLine();
+      _builder.newLine();
+      _builder.append("@enduml");
+      _builder.newLine();
+      _xblockexpression = _builder.toString();
+    }
+    return _xblockexpression;
+  }
+  
+  public static String createNeighboursView(final List<Connection> connections, final EObject selectedObject) {
+    String _xblockexpression = null;
+    {
+      Connections helper = new Connections(connections, selectedObject);
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("@startuml");
+      _builder.newLine();
+      _builder.append("object \"");
+      String _originLabel = helper.originLabel();
+      _builder.append(_originLabel, "");
+      _builder.append("\" as ");
+      String _originId = helper.originId();
+      _builder.append(_originId, "");
+      _builder.append(" #pink");
+      _builder.newLineIfNotEmpty();
+      {
+        Collection<String> _objectIdsWithoutOrigin = helper.objectIdsWithoutOrigin();
+        for(final String id : _objectIdsWithoutOrigin) {
+          _builder.append("object \"");
+          String _label = helper.label(id);
+          _builder.append(_label, "");
+          _builder.append("\" as ");
+          _builder.append(id, "");
+          _builder.newLineIfNotEmpty();
+        }
+      }
+      {
+        List<String> _arrows = helper.arrows();
+        for(final String a : _arrows) {
+          _builder.append(a, "");
+          _builder.newLineIfNotEmpty();
+        }
+      }
+      _builder.append("@enduml");
+      _builder.newLine();
+      _xblockexpression = _builder.toString();
+    }
+    return _xblockexpression;
+  }
+}