add linklabel test sample
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.classpath b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.classpath
new file mode 100644
index 0000000..121e527
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.gitignore b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.gitignore
new file mode 100644
index 0000000..7985f5e
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.gitignore
@@ -0,0 +1,3 @@
+/bin
+/xtend-gen
+*.java._trace
\ No newline at end of file
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.project b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.project
new file mode 100644
index 0000000..d9412f2
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.gmf.tooling.examples.linklabels</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/linklabels.gmfgen.prefs b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/linklabels.gmfgen.prefs
new file mode 100644
index 0000000..ee8d801
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/linklabels.gmfgen.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+generate_rcp=false
+ignore_gmfgen_validation=false
+ignore_mapmodel_validation=false
+use_in_transfo_code_gen=false
+use_map_mode=true
+use_runtime_figures=true
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs
new file mode 100644
index 0000000..2728541
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/.settings/org.eclipse.gmf.bridge.ui.dashboard.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+gmf_dashboard/domainGenerationModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel
+gmf_dashboard/domainModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore
+gmf_dashboard/graphicalDefinitionModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph
+gmf_dashboard/mappingModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap
+gmf_dashboard/toolingDefinitionModel=platform\:/resource/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/META-INF/MANIFEST.MF b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..bc15d97
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/META-INF/MANIFEST.MF
@@ -0,0 +1,15 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.gmf.tooling.examples.linklabels;singleton:=true
+Bundle-Version: 1.0.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport
+Bundle-ActivationPolicy: lazy
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Export-Package: org.eclipse.gmf.tooling.examples.linklabels,
+ org.eclipse.gmf.tooling.examples.linklabels.impl,
+ org.eclipse.gmf.tooling.examples.linklabels.util
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/about.html b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/about.html
new file mode 100644
index 0000000..c258ef5
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+ 
+<p>June 5, 2006</p>	
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content.  Check the Redistributor's license that was 
+provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/build.properties b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/build.properties
new file mode 100644
index 0000000..4465407
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/build.properties
@@ -0,0 +1,10 @@
+#
+
+bin.includes = .,\
+               model/,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties
+jars.compile.order = .
+source.. = src/
+output.. = bin/
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore
new file mode 100644
index 0000000..98cdc6e
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.ecore
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="linklabels" nsURI="http://org.eclipse.gmf.tooling.examples.linklabels"
+    nsPrefix="linklabels">
+  <eClassifiers xsi:type="ecore:EClass" name="Canvas">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="elements" upperBound="-1"
+        eType="#//CanvasElement" containment="true"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="CanvasElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="Node" eSuperTypes="#//CanvasElement"/>
+  <eClassifiers xsi:type="ecore:EClass" name="LabeledLink" eSuperTypes="#//CanvasElement">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="semanticLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
+        defaultValueLiteral="Target"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="fixedLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="oclLabel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="source" eType="#//CanvasElement"/>
+    <eStructuralFeatures xsi:type="ecore:EReference" name="target" eType="#//CanvasElement"/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel
new file mode 100644
index 0000000..967deb4
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.genmodel
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.gmf.tooling.examples.linklabels/src"
+    modelPluginID="org.eclipse.gmf.tooling.examples.linklabels" modelName="Linklabels"
+    rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container" importerID="org.eclipse.emf.importer.ecore"
+    complianceLevel="6.0" copyrightFields="false" operationReflection="true" importOrganizing="true">
+  <foreignModel>linklabels.ecore</foreignModel>
+  <genPackages prefix="Linklabels" basePackage="org.eclipse.gmf.tooling.examples"
+      disposableProviderFactory="true" ecorePackage="linklabels.ecore#/">
+    <genClasses ecoreClass="linklabels.ecore#//Canvas">
+      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference linklabels.ecore#//Canvas/elements"/>
+    </genClasses>
+    <genClasses ecoreClass="linklabels.ecore#//CanvasElement"/>
+    <genClasses ecoreClass="linklabels.ecore#//Node"/>
+    <genClasses ecoreClass="linklabels.ecore#//LabeledLink">
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute linklabels.ecore#//LabeledLink/semanticLabel"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute linklabels.ecore#//LabeledLink/fixedLabel"/>
+      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute linklabels.ecore#//LabeledLink/oclLabel"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference linklabels.ecore#//LabeledLink/source"/>
+      <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference linklabels.ecore#//LabeledLink/target"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen
new file mode 100644
index 0000000..b180938
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen
@@ -0,0 +1,320 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmfgen:GenEditorGenerator
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:gmfgen="http://www.eclipse.org/gmf/2009/GenModel">
+  <diagram
+      visualID="1000"
+      editPartClassName="CanvasEditPart"
+      itemSemanticEditPolicyClassName="CanvasItemSemanticEditPolicy"
+      canonicalEditPolicyClassName="CanvasCanonicalEditPolicy"
+      iconProviderPriority="Low"
+      validationProviderPriority="Low">
+    <diagramRunTimeClass
+        href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Diagram"/>
+    <elementType
+        xsi:type="gmfgen:MetamodelType"
+        editHelperClassName="CanvasEditHelper"/>
+    <viewmap
+        xsi:type="gmfgen:ModeledViewmap">
+      <figureModel
+          href="linklabels.gmfgraph#linklabels"/>
+    </viewmap>
+    <domainDiagramElement
+        href="linklabels.genmodel#//linklabels/Canvas"/>
+    <topLevelNodes
+        visualID="2001"
+        editPartClassName="NodeEditPart"
+        itemSemanticEditPolicyClassName="NodeItemSemanticEditPolicy"
+        notationViewFactoryClassName="NodeViewFactory"
+        canonicalEditPolicyClassName="NodeCanonicalEditPolicy"
+        graphicalNodeEditPolicyClassName="NodeGraphicalNodeEditPolicy"
+        createCommandClassName="NodeCreateCommand">
+      <diagramRunTimeClass
+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+      <elementType
+          xsi:type="gmfgen:MetamodelType"
+          editHelperClassName="NodeEditHelper"/>
+      <viewmap
+          xsi:type="gmfgen:ModeledViewmap">
+        <figureModel
+            href="linklabels.gmfgraph#Node"/>
+      </viewmap>
+      <modelFacet>
+        <metaClass
+            href="linklabels.genmodel#//linklabels/Node"/>
+        <containmentMetaFeature
+            href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+        <childMetaFeature
+            href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+      </modelFacet>
+    </topLevelNodes>
+    <links
+        visualID="4001"
+        editPartClassName="LabeledLinkEditPart"
+        itemSemanticEditPolicyClassName="LabeledLinkItemSemanticEditPolicy"
+        notationViewFactoryClassName="LabeledLinkViewFactory"
+        createCommandClassName="LabeledLinkCreateCommand"
+        reorientCommandClassName="LabeledLinkReorientCommand">
+      <diagramRunTimeClass
+          href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Edge"/>
+      <elementType
+          xsi:type="gmfgen:MetamodelType"
+          editHelperClassName="LabeledLinkEditHelper"/>
+      <viewmap
+          xsi:type="gmfgen:ModeledViewmap">
+        <figureModel
+            href="linklabels.gmfgraph#LabeledLink"/>
+      </viewmap>
+      <modelFacet
+          xsi:type="gmfgen:TypeLinkModelFacet">
+        <metaClass
+            href="linklabels.genmodel#//linklabels/LabeledLink"/>
+        <containmentMetaFeature
+            href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+        <childMetaFeature
+            href="linklabels.genmodel#//linklabels/Canvas/elements"/>
+        <modelElementInitializer
+            xsi:type="gmfgen:GenFeatureSeqInitializer">
+          <initializers
+              xsi:type="gmfgen:GenFeatureValueSpec"
+              value="//@expressionProviders/@providers.0/@expressions.0">
+            <feature
+                href="linklabels.genmodel#//linklabels/LabeledLink/fixedLabel"/>
+          </initializers>
+        </modelElementInitializer>
+        <sourceMetaFeature
+            href="linklabels.genmodel#//linklabels/LabeledLink/source"/>
+        <targetMetaFeature
+            href="linklabels.genmodel#//linklabels/LabeledLink/target"/>
+      </modelFacet>
+      <labels
+          visualID="6001"
+          editPartClassName="LabeledLinkFixedLabelEditPart"
+          itemSemanticEditPolicyClassName="LabeledLinkFixedLabelItemSemanticEditPolicy"
+          notationViewFactoryClassName="LabeledLinkFixedLabelViewFactory"
+          readOnly="true"
+          elementIcon="true">
+        <diagramRunTimeClass
+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+        <viewmap
+            xsi:type="gmfgen:ModeledViewmap">
+          <attributes
+              xsi:type="gmfgen:LabelOffsetAttributes"
+              y="40"/>
+          <figureModel
+              href="linklabels.gmfgraph#LabeledLinkFixedLabel"/>
+        </viewmap>
+        <modelFacet
+            xsi:type="gmfgen:FeatureLabelModelFacet"
+            parser="//@labelParsers/@implementations.0">
+          <metaFeatures
+              href="linklabels.genmodel#//linklabels/LabeledLink/fixedLabel"/>
+        </modelFacet>
+      </labels>
+      <labels
+          visualID="6002"
+          editPartClassName="LabeledLinkSemanticLabelEditPart"
+          itemSemanticEditPolicyClassName="LabeledLinkSemanticLabelItemSemanticEditPolicy"
+          notationViewFactoryClassName="LabeledLinkSemanticLabelViewFactory"
+          elementIcon="true"
+          alignment="SOURCE">
+        <diagramRunTimeClass
+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+        <viewmap
+            xsi:type="gmfgen:ModeledViewmap">
+          <attributes
+              xsi:type="gmfgen:LabelOffsetAttributes"
+              y="60"/>
+          <figureModel
+              href="linklabels.gmfgraph#LabeledLinkSemanticLabel"/>
+        </viewmap>
+        <modelFacet
+            xsi:type="gmfgen:FeatureLabelModelFacet"
+            parser="//@labelParsers/@implementations.0">
+          <metaFeatures
+              href="linklabels.genmodel#//linklabels/LabeledLink/semanticLabel"/>
+        </modelFacet>
+      </labels>
+      <labels
+          visualID="6003"
+          editPartClassName="LabeledLinkLabelEditPart"
+          itemSemanticEditPolicyClassName="LabeledLinkLabelItemSemanticEditPolicy"
+          notationViewFactoryClassName="LabeledLinkLabelViewFactory"
+          elementIcon="true"
+          alignment="TARGET">
+        <diagramRunTimeClass
+            href="../../../plugin/org.eclipse.gmf.runtime.notation/model/notation.genmodel#//notation/Node"/>
+        <viewmap
+            xsi:type="gmfgen:ModeledViewmap">
+          <attributes
+              xsi:type="gmfgen:LabelOffsetAttributes"
+              y="80"/>
+          <figureModel
+              href="linklabels.gmfgraph#LabeledLinkOclLabel"/>
+        </viewmap>
+        <modelFacet
+            xsi:type="gmfgen:ExpressionLabelModelFacet"
+            parser="//@labelParsers/@implementations.1"/>
+      </labels>
+    </links>
+    <palette>
+      <groups
+          title="linklabels">
+        <entries
+            xsi:type="gmfgen:ToolEntry"
+            title="Node"
+            description="Create new Node"
+            genNodes="//@diagram/@topLevelNodes.0"/>
+        <entries
+            xsi:type="gmfgen:ToolEntry"
+            title="LabeledLink"
+            description="Create new LabeledLink"
+            genLinks="//@diagram/@links.0"/>
+      </groups>
+    </palette>
+    <preferencePages
+        xsi:type="gmfgen:GenStandardPreferencePage"
+        iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.general"
+        name="Linklabels Diagram">
+      <children
+          xsi:type="gmfgen:GenStandardPreferencePage"
+          iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.appearance"
+          name="Appearance"
+          kind="Appearance"/>
+      <children
+          xsi:type="gmfgen:GenStandardPreferencePage"
+          iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.connections"
+          name="Connections"
+          kind="Connections"/>
+      <children
+          xsi:type="gmfgen:GenStandardPreferencePage"
+          iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.printing"
+          name="Printing"
+          kind="Printing"/>
+      <children
+          xsi:type="gmfgen:GenStandardPreferencePage"
+          iD="org.eclipse.gmf.tooling.examples.linklabels.diagram.rulersAndGrid"
+          name="Rulers And Grid"
+          kind="RulersAndGrid"/>
+    </preferencePages>
+  </diagram>
+  <plugin>
+    <requiredPlugins>org.eclipse.gmf.tooling.runtime</requiredPlugins>
+  </plugin>
+  <editor/>
+  <navigator>
+    <childReferences
+        child="//@diagram"/>
+    <childReferences
+        parent="//@diagram"
+        child="//@diagram/@topLevelNodes.0"/>
+    <childReferences
+        parent="//@diagram"
+        child="//@diagram/@links.0"
+        groupName="links"
+        groupIcon="icons/linksNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@links.0"
+        child="//@diagram/@topLevelNodes.0"
+        referenceType="out_target"
+        groupName="target"
+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@topLevelNodes.0"
+        child="//@diagram/@links.0"
+        referenceType="in_source"
+        groupName="incoming links"
+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@links.0"
+        child="//@diagram/@links.0"
+        referenceType="out_target"
+        groupName="target"
+        groupIcon="icons/linkTargetNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@links.0"
+        child="//@diagram/@links.0"
+        referenceType="in_source"
+        groupName="incoming links"
+        groupIcon="icons/incomingLinksNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@links.0"
+        child="//@diagram/@topLevelNodes.0"
+        referenceType="in_source"
+        groupName="source"
+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@topLevelNodes.0"
+        child="//@diagram/@links.0"
+        referenceType="out_target"
+        groupName="outgoing links"
+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@links.0"
+        child="//@diagram/@links.0"
+        referenceType="in_source"
+        groupName="source"
+        groupIcon="icons/linkSourceNavigatorGroup.gif"/>
+    <childReferences
+        parent="//@diagram/@links.0"
+        child="//@diagram/@links.0"
+        referenceType="out_target"
+        groupName="outgoing links"
+        groupIcon="icons/outgoingLinksNavigatorGroup.gif"/>
+  </navigator>
+  <diagramUpdater/>
+  <propertySheet>
+    <tabs
+        xsi:type="gmfgen:GenStandardPropertyTab"
+        iD="appearance"/>
+    <tabs
+        xsi:type="gmfgen:GenStandardPropertyTab"
+        iD="diagram"/>
+    <tabs
+        xsi:type="gmfgen:GenCustomPropertyTab"
+        iD="domain"
+        label="Core">
+      <filter
+          xsi:type="gmfgen:TypeTabFilter">
+        <types>org.eclipse.gmf.runtime.notation.View</types>
+        <types>org.eclipse.gef.EditPart</types>
+        <generatedTypes>abstractNavigatorItem</generatedTypes>
+      </filter>
+    </tabs>
+  </propertySheet>
+  <domainGenModel
+      href="linklabels.genmodel#/"/>
+  <expressionProviders>
+    <providers
+        xsi:type="gmfgen:GenLiteralExpressionProvider">
+      <expressions
+          body="&quot;CanvasLink&quot;"/>
+    </providers>
+    <providers
+        xsi:type="gmfgen:GenExpressionInterpreter">
+      <expressions
+          xsi:type="gmfgen:GenConstraint"
+          body="if (self.source.oclIsKindOf(linklabels::Node)) then 'Source element - node' else 'Source element - link' endif"/>
+    </providers>
+  </expressionProviders>
+  <labelParsers
+      extensibleViaService="true">
+    <implementations
+        xsi:type="gmfgen:PredefinedParser"
+        uses="//@diagram/@links.0/@labels.0/@modelFacet //@diagram/@links.0/@labels.1/@modelFacet"/>
+    <implementations
+        xsi:type="gmfgen:ExpressionLabelParser"
+        uses="//@diagram/@links.0/@labels.2/@modelFacet"
+        viewExpression="//@expressionProviders/@providers.1/@expressions.0">
+      <expressionContext
+          href="linklabels.genmodel#//linklabels/LabeledLink"/>
+    </implementations>
+  </labelParsers>
+  <contextMenus
+      context="//@diagram">
+    <items
+        xsi:type="gmfgen:LoadResourceAction"/>
+  </contextMenus>
+</gmfgen:GenEditorGenerator>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph
new file mode 100644
index 0000000..6126757
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgraph
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmfgraph:Canvas xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gmfgraph="http://www.eclipse.org/gmf/2006/GraphicalDefinition" name="linklabels">
+  <figures name="Default">
+    <descriptors name="NodeFigure">
+      <actualFigure xsi:type="gmfgraph:Rectangle" name="NodeFigure"/>
+    </descriptors>
+    <descriptors name="LabeledLinkFigure">
+      <actualFigure xsi:type="gmfgraph:PolylineConnection" name="LabeledLinkFigure">
+        <children xsi:type="gmfgraph:Label" name="LabeledLinkSemanticLabelFigure" text="Target"/>
+        <children xsi:type="gmfgraph:Label" name="LabeledLinkFixedLabelFigure" text="&lt;...>"/>
+        <children xsi:type="gmfgraph:Label" name="LabeledLinkOclLabelFigure" text="&lt;...>"/>
+      </actualFigure>
+      <accessors figure="//@figures.0/@descriptors.1/@actualFigure/@children.0"/>
+      <accessors figure="//@figures.0/@descriptors.1/@actualFigure/@children.1"/>
+      <accessors figure="//@figures.0/@descriptors.1/@actualFigure/@children.2"/>
+    </descriptors>
+  </figures>
+  <nodes name="Node" figure="NodeFigure"/>
+  <connections name="LabeledLink" figure="LabeledLinkFigure"/>
+  <labels name="LabeledLinkSemanticLabel" figure="LabeledLinkFigure" accessor="//@figures.0/@descriptors.1/@accessors.0">
+    <facets xsi:type="gmfgraph:AlignmentFacet"/>
+  </labels>
+  <labels name="LabeledLinkFixedLabel" figure="LabeledLinkFigure" accessor="//@figures.0/@descriptors.1/@accessors.1"/>
+  <labels name="LabeledLinkOclLabel" figure="LabeledLinkFigure" accessor="//@figures.0/@descriptors.1/@accessors.2">
+    <facets xsi:type="gmfgraph:AlignmentFacet" alignment="END"/>
+  </labels>
+</gmfgraph:Canvas>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap
new file mode 100644
index 0000000..6eaf146
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfmap
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmfmap:Mapping
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+    xmlns:gmfmap="http://www.eclipse.org/gmf/2008/mappings"
+    xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">
+  <nodes>
+    <containmentFeature
+        href="linklabels.ecore#//Canvas/elements"/>
+    <ownedChild>
+      <domainMetaElement
+          href="linklabels.ecore#//Node"/>
+      <tool
+          xsi:type="gmftool:CreationTool"
+          href="linklabels.gmftool#//@palette/@tools.0/@tools.0"/>
+      <diagramNode
+          href="linklabels.gmfgraph#Node"/>
+    </ownedChild>
+  </nodes>
+  <links>
+    <domainMetaElement
+        href="linklabels.ecore#//LabeledLink"/>
+    <domainInitializer
+        xsi:type="gmfmap:FeatureSeqInitializer">
+      <initializers
+          xsi:type="gmfmap:FeatureValueSpec">
+        <feature
+            xsi:type="ecore:EAttribute"
+            href="linklabels.ecore#//LabeledLink/fixedLabel"/>
+        <value
+            body="&quot;CanvasLink&quot;"
+            language="literal"/>
+      </initializers>
+    </domainInitializer>
+    <labelMappings
+        xsi:type="gmfmap:FeatureLabelMapping"
+        readOnly="true">
+      <diagramLabel
+          href="linklabels.gmfgraph#LabeledLinkFixedLabel"/>
+      <features
+          href="linklabels.ecore#//LabeledLink/fixedLabel"/>
+    </labelMappings>
+    <labelMappings
+        xsi:type="gmfmap:FeatureLabelMapping">
+      <diagramLabel
+          href="linklabels.gmfgraph#LabeledLinkSemanticLabel"/>
+      <features
+          href="linklabels.ecore#//LabeledLink/semanticLabel"/>
+    </labelMappings>
+    <labelMappings
+        xsi:type="gmfmap:ExpressionLabelMapping">
+      <diagramLabel
+          href="linklabels.gmfgraph#LabeledLinkOclLabel"/>
+      <viewExpression
+          xsi:type="gmfmap:Constraint"
+          body="if (self.source.oclIsKindOf(linklabels::Node)) then 'Source element - node' else 'Source element - link' endif"/>
+    </labelMappings>
+    <containmentFeature
+        href="linklabels.ecore#//Canvas/elements"/>
+    <tool
+        xsi:type="gmftool:CreationTool"
+        href="linklabels.gmftool#//@palette/@tools.0/@tools.1"/>
+    <diagramLink
+        href="linklabels.gmfgraph#LabeledLink"/>
+    <sourceMetaFeature
+        xsi:type="ecore:EReference"
+        href="linklabels.ecore#//LabeledLink/source"/>
+    <linkMetaFeature
+        xsi:type="ecore:EReference"
+        href="linklabels.ecore#//LabeledLink/target"/>
+  </links>
+  <diagram>
+    <diagramCanvas
+        href="linklabels.gmfgraph#linklabels"/>
+    <domainModel
+        href="linklabels.ecore#/"/>
+    <domainMetaElement
+        href="linklabels.ecore#//Canvas"/>
+    <palette
+        href="linklabels.gmftool#//@palette"/>
+  </diagram>
+</gmfmap:Mapping>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool
new file mode 100644
index 0000000..a2d385b
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmftool
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gmftool:ToolRegistry
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:gmftool="http://www.eclipse.org/gmf/2005/ToolDefinition">
+  <palette
+      title="linklabelsPalette">
+    <tools
+        xsi:type="gmftool:ToolGroup"
+        title="linklabels">
+      <tools
+          xsi:type="gmftool:CreationTool"
+          title="Node"
+          description="Create new Node">
+        <smallIcon
+            xsi:type="gmftool:DefaultImage"/>
+        <largeIcon
+            xsi:type="gmftool:DefaultImage"/>
+      </tools>
+      <tools
+          xsi:type="gmftool:CreationTool"
+          title="LabeledLink"
+          description="Create new LabeledLink">
+        <smallIcon
+            xsi:type="gmftool:DefaultImage"/>
+        <largeIcon
+            xsi:type="gmftool:DefaultImage"/>
+      </tools>
+    </tools>
+  </palette>
+</gmftool:ToolRegistry>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.trace b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.trace
new file mode 100644
index 0000000..374581c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.trace
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<trace:TraceModel
+    xmi:version="2.0"
+    xmlns:xmi="http://www.omg.org/XMI"
+    xmlns:trace="http://www.eclipse.org/gmf/2006/Trace">
+  <nodeTraces
+      visualID="2001"
+      queryText="(let _eClass_:ecore::EClass = modelFacet.metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://org.eclipse.gmf.tooling.examples.linklabels' and _eClass_.name = 'Node') and (let _containmentMF_:ecore::EStructuralFeature = modelFacet.containmentMetaFeature.ecoreFeature in (let _eClass_:ecore::EClass = _containmentMF_.eContainingClass in _eClass_.ePackage.nsURI = 'http://org.eclipse.gmf.tooling.examples.linklabels' and _eClass_.name = 'Canvas') and _containmentMF_.name = 'elements')"/>
+  <linkTraces
+      visualID="4001"
+      queryText="modelFacet.oclIsKindOf(gmfgen::TypeLinkModelFacet) and (let _eClass_:ecore::EClass = modelFacet.oclAsType(gmfgen::TypeLinkModelFacet).metaClass.ecoreClass in _eClass_.ePackage.nsURI = 'http://org.eclipse.gmf.tooling.examples.linklabels' and _eClass_.name = 'LabeledLink')">
+    <linkLabelTraces
+        visualID="6001"
+        queryText="true"/>
+    <linkLabelTraces
+        visualID="6002"
+        queryText="true"/>
+    <linkLabelTraces
+        visualID="6003"
+        queryText="true"/>
+  </linkTraces>
+</trace:TraceModel>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.properties b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.properties
new file mode 100644
index 0000000..1e330d8
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.properties
@@ -0,0 +1,4 @@
+#
+
+pluginName = Linklabels Model
+providerName = www.example.org
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.xml b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.xml
new file mode 100644
index 0000000..7d2925c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/plugin.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated linklabels -->
+      <package
+            uri="http://org.eclipse.gmf.tooling.examples.linklabels"
+            class="org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage"
+            genModel="model/linklabels.genmodel"/>
+   </extension>
+
+</plugin>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/pom.xml b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/pom.xml
new file mode 100644
index 0000000..8ce1519
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/pom.xml
@@ -0,0 +1,23 @@
+<!--
+ * Copyright (c) 2013 Montages AG
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.gmf-tooling</groupId>
+  <artifactId>org.eclipse.gmf.tooling.examples.linklabels</artifactId>
+  <version>1.0.0-SNAPSHOT</version>
+  <packaging>eclipse-plugin</packaging>
+  
+  <parent>
+  	<groupId>org.eclipse.gmf-tooling</groupId>
+	<artifactId>link_labels-example</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../</relativePath>
+  </parent>
+
+</project>
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Canvas.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Canvas.java
new file mode 100644
index 0000000..9e2ca08
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Canvas.java
@@ -0,0 +1,42 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Canvas</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.Canvas#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getCanvas()
+ * @model
+ * @generated
+ */
+public interface Canvas extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Elements</b></em>' containment reference list.
+	 * The list contents are of type {@link org.eclipse.gmf.tooling.examples.linklabels.CanvasElement}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Elements</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>Elements</em>' containment reference list.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getCanvas_Elements()
+	 * @model containment="true"
+	 * @generated
+	 */
+	EList<CanvasElement> getElements();
+
+} // Canvas
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/CanvasElement.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/CanvasElement.java
new file mode 100644
index 0000000..c70d6fd
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/CanvasElement.java
@@ -0,0 +1,18 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Canvas Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getCanvasElement()
+ * @model
+ * @generated
+ */
+public interface CanvasElement extends EObject {
+} // CanvasElement
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LabeledLink.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LabeledLink.java
new file mode 100644
index 0000000..ad2f0ff
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LabeledLink.java
@@ -0,0 +1,158 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Labeled Link</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * <ul>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel <em>Semantic Label</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel <em>Fixed Label</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel <em>Ocl Label</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource <em>Source</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget <em>Target</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink()
+ * @model
+ * @generated
+ */
+public interface LabeledLink extends CanvasElement {
+	/**
+	 * Returns the value of the '<em><b>Semantic Label</b></em>' attribute.
+	 * The default value is <code>"Semantic"</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Semantic Label</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Semantic Label</em>' attribute.
+	 * @see #setSemanticLabel(String)
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_SemanticLabel()
+	 * @model default="Semantic"
+	 * @generated
+	 */
+	String getSemanticLabel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel <em>Semantic Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Semantic Label</em>' attribute.
+	 * @see #getSemanticLabel()
+	 * @generated
+	 */
+	void setSemanticLabel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Fixed Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Fixed Label</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Fixed Label</em>' attribute.
+	 * @see #setFixedLabel(String)
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_FixedLabel()
+	 * @model
+	 * @generated
+	 */
+	String getFixedLabel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel <em>Fixed Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Fixed Label</em>' attribute.
+	 * @see #getFixedLabel()
+	 * @generated
+	 */
+	void setFixedLabel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Ocl Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ocl Label</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ocl Label</em>' attribute.
+	 * @see #setOclLabel(String)
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_OclLabel()
+	 * @model
+	 * @generated
+	 */
+	String getOclLabel();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel <em>Ocl Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ocl Label</em>' attribute.
+	 * @see #getOclLabel()
+	 * @generated
+	 */
+	void setOclLabel(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Source</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Source</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Source</em>' reference.
+	 * @see #setSource(CanvasElement)
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_Source()
+	 * @model
+	 * @generated
+	 */
+	CanvasElement getSource();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource <em>Source</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Source</em>' reference.
+	 * @see #getSource()
+	 * @generated
+	 */
+	void setSource(CanvasElement value);
+
+	/**
+	 * Returns the value of the '<em><b>Target</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Target</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Target</em>' reference.
+	 * @see #setTarget(CanvasElement)
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getLabeledLink_Target()
+	 * @model
+	 * @generated
+	 */
+	CanvasElement getTarget();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget <em>Target</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Target</em>' reference.
+	 * @see #getTarget()
+	 * @generated
+	 */
+	void setTarget(CanvasElement value);
+
+} // LabeledLink
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsFactory.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsFactory.java
new file mode 100644
index 0000000..da49609
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsFactory.java
@@ -0,0 +1,69 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+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.gmf.tooling.examples.linklabels.LinklabelsPackage
+ * @generated
+ */
+public interface LinklabelsFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LinklabelsFactory eINSTANCE = org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Canvas</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Canvas</em>'.
+	 * @generated
+	 */
+	Canvas createCanvas();
+
+	/**
+	 * Returns a new object of class '<em>Canvas Element</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Canvas Element</em>'.
+	 * @generated
+	 */
+	CanvasElement createCanvasElement();
+
+	/**
+	 * Returns a new object of class '<em>Node</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Node</em>'.
+	 * @generated
+	 */
+	Node createNode();
+
+	/**
+	 * Returns a new object of class '<em>Labeled Link</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Labeled Link</em>'.
+	 * @generated
+	 */
+	LabeledLink createLabeledLink();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	LinklabelsPackage getLinklabelsPackage();
+
+} //LinklabelsFactory
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsPackage.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsPackage.java
new file mode 100644
index 0000000..619c855
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/LinklabelsPackage.java
@@ -0,0 +1,445 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+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.gmf.tooling.examples.linklabels.LinklabelsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface LinklabelsPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "linklabels";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://org.eclipse.gmf.tooling.examples.linklabels";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "linklabels";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	LinklabelsPackage eINSTANCE = org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl <em>Canvas</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvas()
+	 * @generated
+	 */
+	int CANVAS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Elements</b></em>' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CANVAS__ELEMENTS = 0;
+
+	/**
+	 * The number of structural features of the '<em>Canvas</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CANVAS_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Canvas</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CANVAS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl <em>Canvas Element</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvasElement()
+	 * @generated
+	 */
+	int CANVAS_ELEMENT = 1;
+
+	/**
+	 * The number of structural features of the '<em>Canvas Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CANVAS_ELEMENT_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>Canvas Element</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CANVAS_ELEMENT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl <em>Node</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getNode()
+	 * @generated
+	 */
+	int NODE = 2;
+
+	/**
+	 * The number of structural features of the '<em>Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NODE_FEATURE_COUNT = CANVAS_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Node</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NODE_OPERATION_COUNT = CANVAS_ELEMENT_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl <em>Labeled Link</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getLabeledLink()
+	 * @generated
+	 */
+	int LABELED_LINK = 3;
+
+	/**
+	 * The feature id for the '<em><b>Semantic Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABELED_LINK__SEMANTIC_LABEL = CANVAS_ELEMENT_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Fixed Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABELED_LINK__FIXED_LABEL = CANVAS_ELEMENT_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Ocl Label</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABELED_LINK__OCL_LABEL = CANVAS_ELEMENT_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Source</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABELED_LINK__SOURCE = CANVAS_ELEMENT_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Target</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABELED_LINK__TARGET = CANVAS_ELEMENT_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Labeled Link</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABELED_LINK_FEATURE_COUNT = CANVAS_ELEMENT_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Labeled Link</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LABELED_LINK_OPERATION_COUNT = CANVAS_ELEMENT_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.Canvas <em>Canvas</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Canvas</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.Canvas
+	 * @generated
+	 */
+	EClass getCanvas();
+
+	/**
+	 * Returns the meta object for the containment reference list '{@link org.eclipse.gmf.tooling.examples.linklabels.Canvas#getElements <em>Elements</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the containment reference list '<em>Elements</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.Canvas#getElements()
+	 * @see #getCanvas()
+	 * @generated
+	 */
+	EReference getCanvas_Elements();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.CanvasElement <em>Canvas Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Canvas Element</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.CanvasElement
+	 * @generated
+	 */
+	EClass getCanvasElement();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.Node <em>Node</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Node</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.Node
+	 * @generated
+	 */
+	EClass getNode();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink <em>Labeled Link</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Labeled Link</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink
+	 * @generated
+	 */
+	EClass getLabeledLink();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel <em>Semantic Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Semantic Label</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSemanticLabel()
+	 * @see #getLabeledLink()
+	 * @generated
+	 */
+	EAttribute getLabeledLink_SemanticLabel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel <em>Fixed Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Fixed Label</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getFixedLabel()
+	 * @see #getLabeledLink()
+	 * @generated
+	 */
+	EAttribute getLabeledLink_FixedLabel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel <em>Ocl Label</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Ocl Label</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getOclLabel()
+	 * @see #getLabeledLink()
+	 * @generated
+	 */
+	EAttribute getLabeledLink_OclLabel();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource <em>Source</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Source</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getSource()
+	 * @see #getLabeledLink()
+	 * @generated
+	 */
+	EReference getLabeledLink_Source();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget <em>Target</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Target</em>'.
+	 * @see org.eclipse.gmf.tooling.examples.linklabels.LabeledLink#getTarget()
+	 * @see #getLabeledLink()
+	 * @generated
+	 */
+	EReference getLabeledLink_Target();
+
+	/**
+	 * 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
+	 */
+	LinklabelsFactory getLinklabelsFactory();
+
+	/**
+	 * <!-- 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.gmf.tooling.examples.linklabels.impl.CanvasImpl <em>Canvas</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvas()
+		 * @generated
+		 */
+		EClass CANVAS = eINSTANCE.getCanvas();
+
+		/**
+		 * The meta object literal for the '<em><b>Elements</b></em>' containment reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CANVAS__ELEMENTS = eINSTANCE.getCanvas_Elements();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl <em>Canvas Element</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasElementImpl
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getCanvasElement()
+		 * @generated
+		 */
+		EClass CANVAS_ELEMENT = eINSTANCE.getCanvasElement();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl <em>Node</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.NodeImpl
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getNode()
+		 * @generated
+		 */
+		EClass NODE = eINSTANCE.getNode();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl <em>Labeled Link</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl
+		 * @see org.eclipse.gmf.tooling.examples.linklabels.impl.LinklabelsPackageImpl#getLabeledLink()
+		 * @generated
+		 */
+		EClass LABELED_LINK = eINSTANCE.getLabeledLink();
+
+		/**
+		 * The meta object literal for the '<em><b>Semantic Label</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LABELED_LINK__SEMANTIC_LABEL = eINSTANCE.getLabeledLink_SemanticLabel();
+
+		/**
+		 * The meta object literal for the '<em><b>Fixed Label</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LABELED_LINK__FIXED_LABEL = eINSTANCE.getLabeledLink_FixedLabel();
+
+		/**
+		 * The meta object literal for the '<em><b>Ocl Label</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LABELED_LINK__OCL_LABEL = eINSTANCE.getLabeledLink_OclLabel();
+
+		/**
+		 * The meta object literal for the '<em><b>Source</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LABELED_LINK__SOURCE = eINSTANCE.getLabeledLink_Source();
+
+		/**
+		 * The meta object literal for the '<em><b>Target</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LABELED_LINK__TARGET = eINSTANCE.getLabeledLink_Target();
+
+	}
+
+} //LinklabelsPackage
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Node.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Node.java
new file mode 100644
index 0000000..2540d15
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/Node.java
@@ -0,0 +1,17 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage#getNode()
+ * @model
+ * @generated
+ */
+public interface Node extends CanvasElement {
+} // Node
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasElementImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasElementImpl.java
new file mode 100644
index 0000000..51a9ef7
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasElementImpl.java
@@ -0,0 +1,41 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Canvas Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class CanvasElementImpl extends MinimalEObjectImpl.Container implements CanvasElement {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CanvasElementImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LinklabelsPackage.Literals.CANVAS_ELEMENT;
+	}
+
+} //CanvasElementImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasImpl.java
new file mode 100644
index 0000000..0ee121c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/CanvasImpl.java
@@ -0,0 +1,152 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.gmf.tooling.examples.linklabels.Canvas;
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Canvas</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.CanvasImpl#getElements <em>Elements</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class CanvasImpl extends MinimalEObjectImpl.Container implements Canvas {
+	/**
+	 * The cached value of the '{@link #getElements() <em>Elements</em>}' containment reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getElements()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<CanvasElement> elements;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CanvasImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LinklabelsPackage.Literals.CANVAS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EList<CanvasElement> getElements() {
+		if (elements == null) {
+			elements = new EObjectContainmentEList<CanvasElement>(CanvasElement.class, this, LinklabelsPackage.CANVAS__ELEMENTS);
+		}
+		return elements;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+		switch (featureID) {
+			case LinklabelsPackage.CANVAS__ELEMENTS:
+				return ((InternalEList<?>)getElements()).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 LinklabelsPackage.CANVAS__ELEMENTS:
+				return getElements();
+		}
+		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 LinklabelsPackage.CANVAS__ELEMENTS:
+				getElements().clear();
+				getElements().addAll((Collection<? extends CanvasElement>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case LinklabelsPackage.CANVAS__ELEMENTS:
+				getElements().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case LinklabelsPackage.CANVAS__ELEMENTS:
+				return elements != null && !elements.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //CanvasImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LabeledLinkImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LabeledLinkImpl.java
new file mode 100644
index 0000000..795db35
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LabeledLinkImpl.java
@@ -0,0 +1,392 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LabeledLink;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Labeled Link</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * <ul>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getSemanticLabel <em>Semantic Label</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getFixedLabel <em>Fixed Label</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getOclLabel <em>Ocl Label</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getSource <em>Source</em>}</li>
+ *   <li>{@link org.eclipse.gmf.tooling.examples.linklabels.impl.LabeledLinkImpl#getTarget <em>Target</em>}</li>
+ * </ul>
+ * </p>
+ *
+ * @generated
+ */
+public class LabeledLinkImpl extends CanvasElementImpl implements LabeledLink {
+	/**
+	 * The default value of the '{@link #getSemanticLabel() <em>Semantic Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemanticLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String SEMANTIC_LABEL_EDEFAULT = "Semantic";
+
+	/**
+	 * The cached value of the '{@link #getSemanticLabel() <em>Semantic Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSemanticLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String semanticLabel = SEMANTIC_LABEL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getFixedLabel() <em>Fixed Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFixedLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String FIXED_LABEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getFixedLabel() <em>Fixed Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getFixedLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String fixedLabel = FIXED_LABEL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getOclLabel() <em>Ocl Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOclLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String OCL_LABEL_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getOclLabel() <em>Ocl Label</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOclLabel()
+	 * @generated
+	 * @ordered
+	 */
+	protected String oclLabel = OCL_LABEL_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSource()
+	 * @generated
+	 * @ordered
+	 */
+	protected CanvasElement source;
+
+	/**
+	 * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getTarget()
+	 * @generated
+	 * @ordered
+	 */
+	protected CanvasElement target;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LabeledLinkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LinklabelsPackage.Literals.LABELED_LINK;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getSemanticLabel() {
+		return semanticLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSemanticLabel(String newSemanticLabel) {
+		String oldSemanticLabel = semanticLabel;
+		semanticLabel = newSemanticLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL, oldSemanticLabel, semanticLabel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getFixedLabel() {
+		return fixedLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setFixedLabel(String newFixedLabel) {
+		String oldFixedLabel = fixedLabel;
+		fixedLabel = newFixedLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__FIXED_LABEL, oldFixedLabel, fixedLabel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getOclLabel() {
+		return oclLabel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setOclLabel(String newOclLabel) {
+		String oldOclLabel = oclLabel;
+		oclLabel = newOclLabel;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__OCL_LABEL, oldOclLabel, oclLabel));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CanvasElement getSource() {
+		if (source != null && source.eIsProxy()) {
+			InternalEObject oldSource = (InternalEObject)source;
+			source = (CanvasElement)eResolveProxy(oldSource);
+			if (source != oldSource) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LinklabelsPackage.LABELED_LINK__SOURCE, oldSource, source));
+			}
+		}
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CanvasElement basicGetSource() {
+		return source;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSource(CanvasElement newSource) {
+		CanvasElement oldSource = source;
+		source = newSource;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__SOURCE, oldSource, source));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CanvasElement getTarget() {
+		if (target != null && target.eIsProxy()) {
+			InternalEObject oldTarget = (InternalEObject)target;
+			target = (CanvasElement)eResolveProxy(oldTarget);
+			if (target != oldTarget) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, LinklabelsPackage.LABELED_LINK__TARGET, oldTarget, target));
+			}
+		}
+		return target;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CanvasElement basicGetTarget() {
+		return target;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setTarget(CanvasElement newTarget) {
+		CanvasElement oldTarget = target;
+		target = newTarget;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, LinklabelsPackage.LABELED_LINK__TARGET, oldTarget, target));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+				return getSemanticLabel();
+			case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+				return getFixedLabel();
+			case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+				return getOclLabel();
+			case LinklabelsPackage.LABELED_LINK__SOURCE:
+				if (resolve) return getSource();
+				return basicGetSource();
+			case LinklabelsPackage.LABELED_LINK__TARGET:
+				if (resolve) return getTarget();
+				return basicGetTarget();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+				setSemanticLabel((String)newValue);
+				return;
+			case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+				setFixedLabel((String)newValue);
+				return;
+			case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+				setOclLabel((String)newValue);
+				return;
+			case LinklabelsPackage.LABELED_LINK__SOURCE:
+				setSource((CanvasElement)newValue);
+				return;
+			case LinklabelsPackage.LABELED_LINK__TARGET:
+				setTarget((CanvasElement)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+				setSemanticLabel(SEMANTIC_LABEL_EDEFAULT);
+				return;
+			case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+				setFixedLabel(FIXED_LABEL_EDEFAULT);
+				return;
+			case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+				setOclLabel(OCL_LABEL_EDEFAULT);
+				return;
+			case LinklabelsPackage.LABELED_LINK__SOURCE:
+				setSource((CanvasElement)null);
+				return;
+			case LinklabelsPackage.LABELED_LINK__TARGET:
+				setTarget((CanvasElement)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case LinklabelsPackage.LABELED_LINK__SEMANTIC_LABEL:
+				return SEMANTIC_LABEL_EDEFAULT == null ? semanticLabel != null : !SEMANTIC_LABEL_EDEFAULT.equals(semanticLabel);
+			case LinklabelsPackage.LABELED_LINK__FIXED_LABEL:
+				return FIXED_LABEL_EDEFAULT == null ? fixedLabel != null : !FIXED_LABEL_EDEFAULT.equals(fixedLabel);
+			case LinklabelsPackage.LABELED_LINK__OCL_LABEL:
+				return OCL_LABEL_EDEFAULT == null ? oclLabel != null : !OCL_LABEL_EDEFAULT.equals(oclLabel);
+			case LinklabelsPackage.LABELED_LINK__SOURCE:
+				return source != null;
+			case LinklabelsPackage.LABELED_LINK__TARGET:
+				return target != null;
+		}
+		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(" (semanticLabel: ");
+		result.append(semanticLabel);
+		result.append(", fixedLabel: ");
+		result.append(fixedLabel);
+		result.append(", oclLabel: ");
+		result.append(oclLabel);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LabeledLinkImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsFactoryImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsFactoryImpl.java
new file mode 100644
index 0000000..fa8717f
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsFactoryImpl.java
@@ -0,0 +1,128 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+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;
+
+import org.eclipse.gmf.tooling.examples.linklabels.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinklabelsFactoryImpl extends EFactoryImpl implements LinklabelsFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static LinklabelsFactory init() {
+		try {
+			LinklabelsFactory theLinklabelsFactory = (LinklabelsFactory)EPackage.Registry.INSTANCE.getEFactory(LinklabelsPackage.eNS_URI);
+			if (theLinklabelsFactory != null) {
+				return theLinklabelsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new LinklabelsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinklabelsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case LinklabelsPackage.CANVAS: return createCanvas();
+			case LinklabelsPackage.CANVAS_ELEMENT: return createCanvasElement();
+			case LinklabelsPackage.NODE: return createNode();
+			case LinklabelsPackage.LABELED_LINK: return createLabeledLink();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Canvas createCanvas() {
+		CanvasImpl canvas = new CanvasImpl();
+		return canvas;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public CanvasElement createCanvasElement() {
+		CanvasElementImpl canvasElement = new CanvasElementImpl();
+		return canvasElement;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Node createNode() {
+		NodeImpl node = new NodeImpl();
+		return node;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LabeledLink createLabeledLink() {
+		LabeledLinkImpl labeledLink = new LabeledLinkImpl();
+		return labeledLink;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinklabelsPackage getLinklabelsPackage() {
+		return (LinklabelsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static LinklabelsPackage getPackage() {
+		return LinklabelsPackage.eINSTANCE;
+	}
+
+} //LinklabelsFactoryImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsPackageImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsPackageImpl.java
new file mode 100644
index 0000000..80546a9
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/LinklabelsPackageImpl.java
@@ -0,0 +1,298 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+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.impl.EPackageImpl;
+
+import org.eclipse.gmf.tooling.examples.linklabels.Canvas;
+import org.eclipse.gmf.tooling.examples.linklabels.CanvasElement;
+import org.eclipse.gmf.tooling.examples.linklabels.LabeledLink;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsFactory;
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+import org.eclipse.gmf.tooling.examples.linklabels.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class LinklabelsPackageImpl extends EPackageImpl implements LinklabelsPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass canvasEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass canvasElementEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass nodeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass labeledLinkEClass = 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.gmf.tooling.examples.linklabels.LinklabelsPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private LinklabelsPackageImpl() {
+		super(eNS_URI, LinklabelsFactory.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 LinklabelsPackage#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 LinklabelsPackage init() {
+		if (isInited) return (LinklabelsPackage)EPackage.Registry.INSTANCE.getEPackage(LinklabelsPackage.eNS_URI);
+
+		// Obtain or create and register package
+		LinklabelsPackageImpl theLinklabelsPackage = (LinklabelsPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof LinklabelsPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new LinklabelsPackageImpl());
+
+		isInited = true;
+
+		// Create package meta-data objects
+		theLinklabelsPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLinklabelsPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLinklabelsPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(LinklabelsPackage.eNS_URI, theLinklabelsPackage);
+		return theLinklabelsPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCanvas() {
+		return canvasEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getCanvas_Elements() {
+		return (EReference)canvasEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getCanvasElement() {
+		return canvasElementEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getNode() {
+		return nodeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getLabeledLink() {
+		return labeledLinkEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLabeledLink_SemanticLabel() {
+		return (EAttribute)labeledLinkEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLabeledLink_FixedLabel() {
+		return (EAttribute)labeledLinkEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getLabeledLink_OclLabel() {
+		return (EAttribute)labeledLinkEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLabeledLink_Source() {
+		return (EReference)labeledLinkEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getLabeledLink_Target() {
+		return (EReference)labeledLinkEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinklabelsFactory getLinklabelsFactory() {
+		return (LinklabelsFactory)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
+		canvasEClass = createEClass(CANVAS);
+		createEReference(canvasEClass, CANVAS__ELEMENTS);
+
+		canvasElementEClass = createEClass(CANVAS_ELEMENT);
+
+		nodeEClass = createEClass(NODE);
+
+		labeledLinkEClass = createEClass(LABELED_LINK);
+		createEAttribute(labeledLinkEClass, LABELED_LINK__SEMANTIC_LABEL);
+		createEAttribute(labeledLinkEClass, LABELED_LINK__FIXED_LABEL);
+		createEAttribute(labeledLinkEClass, LABELED_LINK__OCL_LABEL);
+		createEReference(labeledLinkEClass, LABELED_LINK__SOURCE);
+		createEReference(labeledLinkEClass, LABELED_LINK__TARGET);
+	}
+
+	/**
+	 * <!-- 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);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		nodeEClass.getESuperTypes().add(this.getCanvasElement());
+		labeledLinkEClass.getESuperTypes().add(this.getCanvasElement());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(canvasEClass, Canvas.class, "Canvas", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCanvas_Elements(), this.getCanvasElement(), null, "elements", null, 0, -1, Canvas.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+		initEClass(canvasElementEClass, CanvasElement.class, "CanvasElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(nodeEClass, Node.class, "Node", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+
+		initEClass(labeledLinkEClass, LabeledLink.class, "LabeledLink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getLabeledLink_SemanticLabel(), ecorePackage.getEString(), "semanticLabel", "Semantic", 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLabeledLink_FixedLabel(), ecorePackage.getEString(), "fixedLabel", null, 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEAttribute(getLabeledLink_OclLabel(), ecorePackage.getEString(), "oclLabel", null, 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLabeledLink_Source(), this.getCanvasElement(), null, "source", null, 0, 1, LabeledLink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+		initEReference(getLabeledLink_Target(), this.getCanvasElement(), null, "target", null, 0, 1, LabeledLink.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);
+	}
+
+} //LinklabelsPackageImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/NodeImpl.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/NodeImpl.java
new file mode 100644
index 0000000..4515480
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/impl/NodeImpl.java
@@ -0,0 +1,39 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.gmf.tooling.examples.linklabels.LinklabelsPackage;
+import org.eclipse.gmf.tooling.examples.linklabels.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * </p>
+ *
+ * @generated
+ */
+public class NodeImpl extends CanvasElementImpl implements Node {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NodeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return LinklabelsPackage.Literals.NODE;
+	}
+
+} //NodeImpl
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsAdapterFactory.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsAdapterFactory.java
new file mode 100644
index 0000000..d6bcc9c
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsAdapterFactory.java
@@ -0,0 +1,174 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.util;
+
+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;
+
+import org.eclipse.gmf.tooling.examples.linklabels.*;
+
+/**
+ * <!-- 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.gmf.tooling.examples.linklabels.LinklabelsPackage
+ * @generated
+ */
+public class LinklabelsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static LinklabelsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinklabelsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = LinklabelsPackage.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 LinklabelsSwitch<Adapter> modelSwitch =
+		new LinklabelsSwitch<Adapter>() {
+			@Override
+			public Adapter caseCanvas(Canvas object) {
+				return createCanvasAdapter();
+			}
+			@Override
+			public Adapter caseCanvasElement(CanvasElement object) {
+				return createCanvasElementAdapter();
+			}
+			@Override
+			public Adapter caseNode(Node object) {
+				return createNodeAdapter();
+			}
+			@Override
+			public Adapter caseLabeledLink(LabeledLink object) {
+				return createLabeledLinkAdapter();
+			}
+			@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.gmf.tooling.examples.linklabels.Canvas <em>Canvas</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.gmf.tooling.examples.linklabels.Canvas
+	 * @generated
+	 */
+	public Adapter createCanvasAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.gmf.tooling.examples.linklabels.CanvasElement <em>Canvas Element</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.gmf.tooling.examples.linklabels.CanvasElement
+	 * @generated
+	 */
+	public Adapter createCanvasElementAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.gmf.tooling.examples.linklabels.Node <em>Node</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.gmf.tooling.examples.linklabels.Node
+	 * @generated
+	 */
+	public Adapter createNodeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.gmf.tooling.examples.linklabels.LabeledLink <em>Labeled Link</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.gmf.tooling.examples.linklabels.LabeledLink
+	 * @generated
+	 */
+	public Adapter createLabeledLinkAdapter() {
+		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;
+	}
+
+} //LinklabelsAdapterFactory
diff --git a/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsSwitch.java b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsSwitch.java
new file mode 100644
index 0000000..f565324
--- /dev/null
+++ b/test-examples/link_labels/org.eclipse.gmf.tooling.examples.linklabels/src/org/eclipse/gmf/tooling/examples/linklabels/util/LinklabelsSwitch.java
@@ -0,0 +1,175 @@
+/**
+ */
+package org.eclipse.gmf.tooling.examples.linklabels.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.gmf.tooling.examples.linklabels.*;
+
+/**
+ * <!-- 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.gmf.tooling.examples.linklabels.LinklabelsPackage
+ * @generated
+ */
+public class LinklabelsSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static LinklabelsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LinklabelsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = LinklabelsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @parameter 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 LinklabelsPackage.CANVAS: {
+				Canvas canvas = (Canvas)theEObject;
+				T result = caseCanvas(canvas);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LinklabelsPackage.CANVAS_ELEMENT: {
+				CanvasElement canvasElement = (CanvasElement)theEObject;
+				T result = caseCanvasElement(canvasElement);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LinklabelsPackage.NODE: {
+				Node node = (Node)theEObject;
+				T result = caseNode(node);
+				if (result == null) result = caseCanvasElement(node);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case LinklabelsPackage.LABELED_LINK: {
+				LabeledLink labeledLink = (LabeledLink)theEObject;
+				T result = caseLabeledLink(labeledLink);
+				if (result == null) result = caseCanvasElement(labeledLink);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Canvas</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>Canvas</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCanvas(Canvas object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Canvas Element</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>Canvas Element</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCanvasElement(CanvasElement object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Node</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>Node</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNode(Node object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Labeled Link</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>Labeled Link</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLabeledLink(LabeledLink 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;
+	}
+
+} //LinklabelsSwitch
diff --git a/test-examples/link_labels/pom.xml b/test-examples/link_labels/pom.xml
new file mode 100644
index 0000000..c36cc90
--- /dev/null
+++ b/test-examples/link_labels/pom.xml
@@ -0,0 +1,27 @@
+<!--
+ * Copyright (c) 2013 Montages AG
+ *  All rights reserved. This program and the accompanying materials
+ *  are made available under the terms of the Eclipse Public License v1.0
+ *  which accompanies this distribution, and is available at
+ *  http://www.eclipse.org/legal/epl-v10.html
+ *  
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.eclipse.gmf-tooling</groupId>
+  <artifactId>link_labels-example</artifactId>
+  <packaging>pom</packaging>
+  <version>1.0.0-SNAPSHOT</version>
+
+  
+  <parent>
+  	<groupId>org.eclipse.gmf-tooling</groupId>
+	<artifactId>test-examples</artifactId>
+	<version>1.0.0-SNAPSHOT</version>
+	<relativePath>../</relativePath>
+  </parent>
+  
+  <modules>
+		<module>org.eclipse.gmf.tooling.examples.linklabels</module>
+  </modules>
+</project>
diff --git a/test-examples/pom.xml b/test-examples/pom.xml
index 3e311b9..86c7b5d 100644
--- a/test-examples/pom.xml
+++ b/test-examples/pom.xml
@@ -30,6 +30,7 @@
 		<module>pins</module>
 		<module>shortcut</module>
 		<module>svg</module>
+		<module>link_labels</module>
 	</modules>
 	
 </project>
diff --git a/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF b/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF
index 257e8e9..3592ac9 100644
--- a/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.gmf.tests/META-INF/MANIFEST.MF
@@ -42,7 +42,8 @@
  org.eclipse.gmf.tooling.examples.border,
  org.eclipse.gmf.runtime.lite.svg,
  org.eclipse.gmf.tooling.examples.border.custom,
- org.eclipse.gmf.tooling.examples.labels
+ org.eclipse.gmf.tooling.examples.labels,
+ org.eclipse.gmf.tooling.examples.linklabels
 Bundle-Activator: org.eclipse.gmf.tests.Plugin
 Bundle-ActivationPolicy: lazy
 Export-Package: org.eclipse.gmf.tests;x-friends:="org.eclipse.gmf.tests.lite,org.eclipse.gmf.tooling.tests.xtend",
diff --git a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java
index d61e95e..4594355 100644
--- a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java
+++ b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/TestSamplesSuite.java
@@ -6,6 +6,7 @@
 import org.eclipse.gmf.tests.samples.AffixedSampleTest;
 import org.eclipse.gmf.tests.samples.CompartmentsSampleTest;
 import org.eclipse.gmf.tests.samples.LabelsSampleTest;
+import org.eclipse.gmf.tests.samples.LinkLabelsTest;
 import org.eclipse.gmf.tests.samples.LinksSampleTest;
 import org.eclipse.gmf.tests.samples.PinsSampleTest;
 import org.eclipse.gmf.tests.samples.SVGSampleTest;
@@ -23,6 +24,7 @@
 		suite.addTestSuite(AffixedSampleTest.class);
 		suite.addTestSuite(LabelsSampleTest.class);
 		//suite.addTestSuite(BorderSampleTest.class);
+		suite.addTestSuite(LinkLabelsTest.class);
 		return suite;
 	}
 
diff --git a/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/samples/LinkLabelsTest.java b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/samples/LinkLabelsTest.java
new file mode 100644
index 0000000..fc3138a
--- /dev/null
+++ b/tests/org.eclipse.gmf.tests/src/org/eclipse/gmf/tests/samples/LinkLabelsTest.java
@@ -0,0 +1,23 @@
+package org.eclipse.gmf.tests.samples;
+
+import org.eclipse.gmf.tests.setup.RuntimeBasedGeneratorConfiguration;
+
+
+public class LinkLabelsTest extends BaseSampleTest {
+
+	public static final String GIT_GMFGEN_PATH = "platform:/plugin/org.eclipse.gmf.tooling.examples.linklabels/model/linklabels.gmfgen";
+	
+	public LinkLabelsTest(String name) {
+		this(name, new RuntimeBasedGeneratorConfiguration());
+	}
+
+	public LinkLabelsTest(String name, RuntimeBasedGeneratorConfiguration genConfig) {
+		super(name, genConfig);
+	}
+	
+	@Override
+	protected String getRelativeGMFGENPath() {
+		return GIT_GMFGEN_PATH;
+	}
+	
+}
diff --git a/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF b/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF
index 3bcab8b..6bdf474 100644
--- a/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.gmf.tooling.tests.xtend/META-INF/MANIFEST.MF
@@ -48,7 +48,8 @@
  org.eclipse.gmf.tooling.examples.border,
  org.eclipse.gmf.runtime.lite.svg,
  org.eclipse.gmf.tooling.examples.border.custom,
- org.eclipse.gmf.tooling.examples.labels
+ org.eclipse.gmf.tooling.examples.labels,
+ org.eclipse.gmf.tooling.examples.linklabels
 Bundle-Activator: org.eclipse.gmf.tooling.tests.xtend.XtendsTestPluginActivator
 Bundle-ActivationPolicy: lazy
 Export-Package: edithelpers,
diff --git a/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java
index a0ea08a..d2d3027 100644
--- a/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java
+++ b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/TestSamplesSuiteXtend.java
@@ -6,6 +6,7 @@
 import org.eclipse.gmf.tooling.tests.xtend.samples.AffixedSampleTestXtend;
 import org.eclipse.gmf.tooling.tests.xtend.samples.CompartmentsSampleTestXtend;
 import org.eclipse.gmf.tooling.tests.xtend.samples.LabelsSampleTestXtend;
+import org.eclipse.gmf.tooling.tests.xtend.samples.LinkLabelsTestXtend;
 import org.eclipse.gmf.tooling.tests.xtend.samples.LinksSampleTestXtend;
 import org.eclipse.gmf.tooling.tests.xtend.samples.PinsSampleTestXtend;
 import org.eclipse.gmf.tooling.tests.xtend.samples.SVGSampleTestXtend;
@@ -22,6 +23,7 @@
 		suite.addTestSuite(ShourtcutSampleTestXtend.class);
 		suite.addTestSuite(AffixedSampleTestXtend.class);
 		suite.addTestSuite(LabelsSampleTestXtend.class);
+		suite.addTestSuite(LinkLabelsTestXtend.class);
 		return suite;
 	}
 }
diff --git a/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/samples/LinkLabelsTestXtend.java b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/samples/LinkLabelsTestXtend.java
new file mode 100644
index 0000000..82ce7ef
--- /dev/null
+++ b/tests/org.eclipse.gmf.tooling.tests.xtend/src/org/eclipse/gmf/tooling/tests/xtend/samples/LinkLabelsTestXtend.java
@@ -0,0 +1,13 @@
+package org.eclipse.gmf.tooling.tests.xtend.samples;
+
+import org.eclipse.gmf.tests.samples.LinkLabelsTest;
+import org.eclipse.gmf.tooling.tests.xtend.setup.RuntimeBasedGeneratorConfigurationXtend;
+
+
+public class LinkLabelsTestXtend extends LinkLabelsTest {
+
+	public LinkLabelsTestXtend(String name) {
+		super(name, new RuntimeBasedGeneratorConfigurationXtend());
+	}
+	
+}