Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Willink2016-01-19 14:06:38 +0000
committerEd Willink2016-01-28 21:20:37 +0000
commitd1601bc1b7500273a3c4e9d9da4c4fbb5babe042 (patch)
tree7dc7b98689a50765814d8dab35bb5330566e2801 /tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd
parentba9412883b74b738a5ad9b60d4308c7b8e6fe51d (diff)
downloadorg.eclipse.qvtd-d1601bc1b7500273a3c4e9d9da4c4fbb5babe042.tar.gz
org.eclipse.qvtd-d1601bc1b7500273a3c4e9d9da4c4fbb5babe042.tar.xz
org.eclipse.qvtd-d1601bc1b7500273a3c4e9d9da4c4fbb5babe042.zip
[461992] Generate testQVTcCompiler_Upper2Lower example model
Diffstat (limited to 'tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd')
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Edge.java80
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Element.java52
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Graph.java71
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Node.java88
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphFactory.java60
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphPackage.java519
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/EdgeImpl.java298
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/ElementImpl.java197
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/GraphImpl.java238
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/NodeImpl.java275
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphFactoryImpl.java117
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphPackageImpl.java330
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphAdapterFactory.java176
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphSwitch.java177
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Edge2Edge.java135
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Element2Element.java52
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Graph2Graph.java131
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Node2Node.java108
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphFactory.java60
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphPackage.java631
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Edge2EdgeImpl.java339
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Element2ElementImpl.java197
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Graph2GraphImpl.java360
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Node2NodeImpl.java286
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphFactoryImpl.java117
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphPackageImpl.java523
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphAdapterFactory.java176
-rw-r--r--tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphSwitch.java177
28 files changed, 5970 insertions, 0 deletions
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Edge.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Edge.java
new file mode 100644
index 000000000..dabcd6469
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Edge.java
@@ -0,0 +1,80 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Edge</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getSource <em>Source</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getEdge()
+ * @model
+ * @generated
+ */
+public interface Edge extends Element {
+ /**
+ * Returns the value of the '<em><b>Target</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getIncoming <em>Incoming</em>}'.
+ * <!-- 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(Node)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getEdge_Target()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getIncoming
+ * @model opposite="incoming"
+ * @generated
+ */
+ Node getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#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(Node value);
+
+ /**
+ * Returns the value of the '<em><b>Source</b></em>' reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getOutgoing <em>Outgoing</em>}'.
+ * <!-- 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(Node)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getEdge_Source()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getOutgoing
+ * @model opposite="outgoing"
+ * @generated
+ */
+ Node getSource();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#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(Node value);
+
+} // Edge
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Element.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Element.java
new file mode 100644
index 000000000..ada1ded61
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Element.java
@@ -0,0 +1,52 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element#getGraph <em>Graph</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getElement()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Element extends EObject {
+ /**
+ * Returns the value of the '<em><b>Graph</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getElement <em>Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Graph</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Graph</em>' container reference.
+ * @see #setGraph(Graph)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getElement_Graph()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getElement
+ * @model opposite="element" required="true" transient="false"
+ * @generated
+ */
+ Graph getGraph();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element#getGraph <em>Graph</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Graph</em>' container reference.
+ * @see #getGraph()
+ * @generated
+ */
+ void setGraph(Graph value);
+
+} // Element
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Graph.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Graph.java
new file mode 100644
index 000000000..d92338c65
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Graph.java
@@ -0,0 +1,71 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Graph</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getElement <em>Element</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getGraph()
+ * @model
+ * @generated
+ */
+public interface Graph extends EObject {
+ /**
+ * Returns the value of the '<em><b>Element</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element#getGraph <em>Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Element</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>Element</em>' containment reference list.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getGraph_Element()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element#getGraph
+ * @model opposite="graph" containment="true"
+ * @generated
+ */
+ EList<Element> getElement();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getGraph_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Graph
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Node.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Node.java
new file mode 100644
index 000000000..995bf4901
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/Node.java
@@ -0,0 +1,88 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getIncoming <em>Incoming</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getOutgoing <em>Outgoing</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getLabel <em>Label</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getNode()
+ * @model
+ * @generated
+ */
+public interface Node extends Element {
+ /**
+ * Returns the value of the '<em><b>Incoming</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Incoming</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Incoming</em>' reference list.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getNode_Incoming()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getTarget
+ * @model opposite="target"
+ * @generated
+ */
+ EList<Edge> getIncoming();
+
+ /**
+ * Returns the value of the '<em><b>Outgoing</b></em>' reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Outgoing</em>' reference list isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Outgoing</em>' reference list.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getNode_Outgoing()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getSource
+ * @model opposite="source"
+ * @generated
+ */
+ EList<Edge> getOutgoing();
+
+ /**
+ * Returns the value of the '<em><b>Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Label</em>' attribute.
+ * @see #setLabel(String)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#getNode_Label()
+ * @model
+ * @generated
+ */
+ String getLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getLabel <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Label</em>' attribute.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(String value);
+
+} // Node
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphFactory.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphFactory.java
new file mode 100644
index 000000000..74949f0c6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphFactory.java
@@ -0,0 +1,60 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph;
+
+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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage
+ * @generated
+ */
+public interface SimplegraphFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SimplegraphFactory eINSTANCE = org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphFactoryImpl.init();
+
+ /**
+ * 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>Edge</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Edge</em>'.
+ * @generated
+ */
+ Edge createEdge();
+
+ /**
+ * Returns a new object of class '<em>Graph</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Graph</em>'.
+ * @generated
+ */
+ Graph createGraph();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ SimplegraphPackage getSimplegraphPackage();
+
+} //SimplegraphFactory
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphPackage.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphPackage.java
new file mode 100644
index 000000000..094a2684a
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/SimplegraphPackage.java
@@ -0,0 +1,519 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph;
+
+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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SimplegraphPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "simplegraph";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/qvtd/xtext/qvtcore/tests/Upper2Lower/1.0/SimpleGraph";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "simplegraph";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ SimplegraphPackage eINSTANCE = org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.ElementImpl <em>Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.ElementImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getElement()
+ * @generated
+ */
+ int ELEMENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT__GRAPH = 0;
+
+ /**
+ * The number of structural features of the '<em>Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.NodeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getNode()
+ * @generated
+ */
+ int NODE = 0;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__GRAPH = ELEMENT__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Incoming</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__INCOMING = ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Outgoing</b></em>' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__OUTGOING = ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE__LABEL = ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of operations of the '<em>Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE_OPERATION_COUNT = ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.EdgeImpl <em>Edge</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.EdgeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getEdge()
+ * @generated
+ */
+ int EDGE = 1;
+
+ /**
+ * The feature id for the '<em><b>Graph</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__GRAPH = ELEMENT__GRAPH;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__TARGET = ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE__SOURCE = ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The number of structural features of the '<em>Edge</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_FEATURE_COUNT = ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of operations of the '<em>Edge</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE_OPERATION_COUNT = ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.GraphImpl <em>Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.GraphImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getGraph()
+ * @generated
+ */
+ int GRAPH = 3;
+
+ /**
+ * The feature id for the '<em><b>Element</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__ELEMENT = 0;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH__NAME = 1;
+
+ /**
+ * The number of structural features of the '<em>Graph</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_FEATURE_COUNT = 2;
+
+ /**
+ * The number of operations of the '<em>Graph</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH_OPERATION_COUNT = 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node <em>Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Node</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node
+ * @generated
+ */
+ EClass getNode();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getIncoming <em>Incoming</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Incoming</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getIncoming()
+ * @see #getNode()
+ * @generated
+ */
+ EReference getNode_Incoming();
+
+ /**
+ * Returns the meta object for the reference list '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getOutgoing <em>Outgoing</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference list '<em>Outgoing</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getOutgoing()
+ * @see #getNode()
+ * @generated
+ */
+ EReference getNode_Outgoing();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getLabel <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Label</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node#getLabel()
+ * @see #getNode()
+ * @generated
+ */
+ EAttribute getNode_Label();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge <em>Edge</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Edge</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge
+ * @generated
+ */
+ EClass getEdge();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Target</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getTarget()
+ * @see #getEdge()
+ * @generated
+ */
+ EReference getEdge_Target();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Source</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge#getSource()
+ * @see #getEdge()
+ * @generated
+ */
+ EReference getEdge_Source();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element <em>Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Element</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element
+ * @generated
+ */
+ EClass getElement();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element#getGraph <em>Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Graph</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element#getGraph()
+ * @see #getElement()
+ * @generated
+ */
+ EReference getElement_Graph();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph <em>Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Graph</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph
+ * @generated
+ */
+ EClass getGraph();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getElement <em>Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Element</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getElement()
+ * @see #getGraph()
+ * @generated
+ */
+ EReference getGraph_Element();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph#getName()
+ * @see #getGraph()
+ * @generated
+ */
+ EAttribute getGraph_Name();
+
+ /**
+ * 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
+ */
+ SimplegraphFactory getSimplegraphFactory();
+
+ /**
+ * <!-- 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.NodeImpl <em>Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.NodeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getNode()
+ * @generated
+ */
+ EClass NODE = eINSTANCE.getNode();
+
+ /**
+ * The meta object literal for the '<em><b>Incoming</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE__INCOMING = eINSTANCE.getNode_Incoming();
+
+ /**
+ * The meta object literal for the '<em><b>Outgoing</b></em>' reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE__OUTGOING = eINSTANCE.getNode_Outgoing();
+
+ /**
+ * The meta object literal for the '<em><b>Label</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute NODE__LABEL = eINSTANCE.getNode_Label();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.EdgeImpl <em>Edge</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.EdgeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getEdge()
+ * @generated
+ */
+ EClass EDGE = eINSTANCE.getEdge();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE__TARGET = eINSTANCE.getEdge_Target();
+
+ /**
+ * The meta object literal for the '<em><b>Source</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE__SOURCE = eINSTANCE.getEdge_Source();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.ElementImpl <em>Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.ElementImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getElement()
+ * @generated
+ */
+ EClass ELEMENT = eINSTANCE.getElement();
+
+ /**
+ * The meta object literal for the '<em><b>Graph</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ELEMENT__GRAPH = eINSTANCE.getElement_Graph();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.GraphImpl <em>Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.GraphImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl#getGraph()
+ * @generated
+ */
+ EClass GRAPH = eINSTANCE.getGraph();
+
+ /**
+ * The meta object literal for the '<em><b>Element</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH__ELEMENT = eINSTANCE.getGraph_Element();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH__NAME = eINSTANCE.getGraph_Name();
+
+ }
+
+} //SimplegraphPackage
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/EdgeImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/EdgeImpl.java
new file mode 100644
index 000000000..c63dd47e2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/EdgeImpl.java
@@ -0,0 +1,298 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Edge</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.EdgeImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.EdgeImpl#getSource <em>Source</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EdgeImpl extends ElementImpl implements Edge {
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected Node target;
+
+ /**
+ * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected Node source;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected EdgeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimplegraphPackage.Literals.EDGE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getTarget() {
+ if (target != null && target.eIsProxy()) {
+ InternalEObject oldTarget = (InternalEObject)target;
+ target = (Node)eResolveProxy(oldTarget);
+ if (target != oldTarget) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, SimplegraphPackage.EDGE__TARGET, oldTarget, target));
+ }
+ }
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetTarget(Node newTarget, NotificationChain msgs) {
+ Node oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SimplegraphPackage.EDGE__TARGET, oldTarget, newTarget);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(Node newTarget) {
+ if (newTarget != target) {
+ NotificationChain msgs = null;
+ if (target != null)
+ msgs = ((InternalEObject)target).eInverseRemove(this, SimplegraphPackage.NODE__INCOMING, Node.class, msgs);
+ if (newTarget != null)
+ msgs = ((InternalEObject)newTarget).eInverseAdd(this, SimplegraphPackage.NODE__INCOMING, Node.class, msgs);
+ msgs = basicSetTarget(newTarget, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplegraphPackage.EDGE__TARGET, newTarget, newTarget));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getSource() {
+ if (source != null && source.eIsProxy()) {
+ InternalEObject oldSource = (InternalEObject)source;
+ source = (Node)eResolveProxy(oldSource);
+ if (source != oldSource) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, SimplegraphPackage.EDGE__SOURCE, oldSource, source));
+ }
+ }
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetSource() {
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetSource(Node newSource, NotificationChain msgs) {
+ Node oldSource = source;
+ source = newSource;
+ if (eNotificationRequired()) {
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, SimplegraphPackage.EDGE__SOURCE, oldSource, newSource);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
+ }
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSource(Node newSource) {
+ if (newSource != source) {
+ NotificationChain msgs = null;
+ if (source != null)
+ msgs = ((InternalEObject)source).eInverseRemove(this, SimplegraphPackage.NODE__OUTGOING, Node.class, msgs);
+ if (newSource != null)
+ msgs = ((InternalEObject)newSource).eInverseAdd(this, SimplegraphPackage.NODE__OUTGOING, Node.class, msgs);
+ msgs = basicSetSource(newSource, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplegraphPackage.EDGE__SOURCE, newSource, newSource));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.EDGE__TARGET:
+ if (target != null)
+ msgs = ((InternalEObject)target).eInverseRemove(this, SimplegraphPackage.NODE__INCOMING, Node.class, msgs);
+ return basicSetTarget((Node)otherEnd, msgs);
+ case SimplegraphPackage.EDGE__SOURCE:
+ if (source != null)
+ msgs = ((InternalEObject)source).eInverseRemove(this, SimplegraphPackage.NODE__OUTGOING, Node.class, msgs);
+ return basicSetSource((Node)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.EDGE__TARGET:
+ return basicSetTarget(null, msgs);
+ case SimplegraphPackage.EDGE__SOURCE:
+ return basicSetSource(null, 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 SimplegraphPackage.EDGE__TARGET:
+ if (resolve) return getTarget();
+ return basicGetTarget();
+ case SimplegraphPackage.EDGE__SOURCE:
+ if (resolve) return getSource();
+ return basicGetSource();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SimplegraphPackage.EDGE__TARGET:
+ setTarget((Node)newValue);
+ return;
+ case SimplegraphPackage.EDGE__SOURCE:
+ setSource((Node)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.EDGE__TARGET:
+ setTarget((Node)null);
+ return;
+ case SimplegraphPackage.EDGE__SOURCE:
+ setSource((Node)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.EDGE__TARGET:
+ return target != null;
+ case SimplegraphPackage.EDGE__SOURCE:
+ return source != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+
+} //EdgeImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/ElementImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/ElementImpl.java
new file mode 100644
index 000000000..cbaea8ae3
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/ElementImpl.java
@@ -0,0 +1,197 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.ElementImpl#getGraph <em>Graph</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ElementImpl extends MinimalEObjectImpl.Container implements Element {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected ElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimplegraphPackage.Literals.ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph getGraph() {
+ if (eContainerFeatureID() != SimplegraphPackage.ELEMENT__GRAPH) return null;
+ return (Graph)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetGraph(Graph newGraph, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newGraph, SimplegraphPackage.ELEMENT__GRAPH, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGraph(Graph newGraph) {
+ if (newGraph != eInternalContainer() || (eContainerFeatureID() != SimplegraphPackage.ELEMENT__GRAPH && newGraph != null)) {
+ if (EcoreUtil.isAncestor(this, newGraph))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newGraph != null)
+ msgs = ((InternalEObject)newGraph).eInverseAdd(this, SimplegraphPackage.GRAPH__ELEMENT, Graph.class, msgs);
+ msgs = basicSetGraph(newGraph, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplegraphPackage.ELEMENT__GRAPH, newGraph, newGraph));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.ELEMENT__GRAPH:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetGraph((Graph)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.ELEMENT__GRAPH:
+ return basicSetGraph(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case SimplegraphPackage.ELEMENT__GRAPH:
+ return eInternalContainer().eInverseRemove(this, SimplegraphPackage.GRAPH__ELEMENT, Graph.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case SimplegraphPackage.ELEMENT__GRAPH:
+ return getGraph();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case SimplegraphPackage.ELEMENT__GRAPH:
+ setGraph((Graph)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.ELEMENT__GRAPH:
+ setGraph((Graph)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.ELEMENT__GRAPH:
+ return getGraph() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+
+} //ElementImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/GraphImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/GraphImpl.java
new file mode 100644
index 000000000..3fc8660b2
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/GraphImpl.java
@@ -0,0 +1,238 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Graph</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.GraphImpl#getElement <em>Element</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.GraphImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GraphImpl extends MinimalEObjectImpl.Container implements Graph {
+ /**
+ * The cached value of the '{@link #getElement() <em>Element</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElement()
+ * @generated
+ * @ordered
+ */
+ protected EList<Element> element;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected GraphImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimplegraphPackage.Literals.GRAPH;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Element> getElement() {
+ if (element == null) {
+ element = new EObjectContainmentWithInverseEList<Element>(Element.class, this, SimplegraphPackage.GRAPH__ELEMENT, SimplegraphPackage.ELEMENT__GRAPH);
+ }
+ return element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplegraphPackage.GRAPH__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.GRAPH__ELEMENT:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getElement()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.GRAPH__ELEMENT:
+ return ((InternalEList<?>)getElement()).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 SimplegraphPackage.GRAPH__ELEMENT:
+ return getElement();
+ case SimplegraphPackage.GRAPH__NAME:
+ return getName();
+ }
+ 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 SimplegraphPackage.GRAPH__ELEMENT:
+ getElement().clear();
+ getElement().addAll((Collection<? extends Element>)newValue);
+ return;
+ case SimplegraphPackage.GRAPH__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.GRAPH__ELEMENT:
+ getElement().clear();
+ return;
+ case SimplegraphPackage.GRAPH__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.GRAPH__ELEMENT:
+ return element != null && !element.isEmpty();
+ case SimplegraphPackage.GRAPH__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ 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(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+
+} //GraphImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/NodeImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/NodeImpl.java
new file mode 100644
index 000000000..5ef30b006
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/NodeImpl.java
@@ -0,0 +1,275 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EObjectWithInverseResolvingEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.NodeImpl#getIncoming <em>Incoming</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.NodeImpl#getOutgoing <em>Outgoing</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.NodeImpl#getLabel <em>Label</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class NodeImpl extends ElementImpl implements Node {
+ /**
+ * The cached value of the '{@link #getIncoming() <em>Incoming</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getIncoming()
+ * @generated
+ * @ordered
+ */
+ protected EList<Edge> incoming;
+
+ /**
+ * The cached value of the '{@link #getOutgoing() <em>Outgoing</em>}' reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getOutgoing()
+ * @generated
+ * @ordered
+ */
+ protected EList<Edge> outgoing;
+
+ /**
+ * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String LABEL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected String label = LABEL_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected NodeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return SimplegraphPackage.Literals.NODE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Edge> getIncoming() {
+ if (incoming == null) {
+ incoming = new EObjectWithInverseResolvingEList<Edge>(Edge.class, this, SimplegraphPackage.NODE__INCOMING, SimplegraphPackage.EDGE__TARGET);
+ }
+ return incoming;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Edge> getOutgoing() {
+ if (outgoing == null) {
+ outgoing = new EObjectWithInverseResolvingEList<Edge>(Edge.class, this, SimplegraphPackage.NODE__OUTGOING, SimplegraphPackage.EDGE__SOURCE);
+ }
+ return outgoing;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLabel() {
+ return label;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLabel(String newLabel) {
+ String oldLabel = label;
+ label = newLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, SimplegraphPackage.NODE__LABEL, oldLabel, label));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.NODE__INCOMING:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getIncoming()).basicAdd(otherEnd, msgs);
+ case SimplegraphPackage.NODE__OUTGOING:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getOutgoing()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case SimplegraphPackage.NODE__INCOMING:
+ return ((InternalEList<?>)getIncoming()).basicRemove(otherEnd, msgs);
+ case SimplegraphPackage.NODE__OUTGOING:
+ return ((InternalEList<?>)getOutgoing()).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 SimplegraphPackage.NODE__INCOMING:
+ return getIncoming();
+ case SimplegraphPackage.NODE__OUTGOING:
+ return getOutgoing();
+ case SimplegraphPackage.NODE__LABEL:
+ return getLabel();
+ }
+ 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 SimplegraphPackage.NODE__INCOMING:
+ getIncoming().clear();
+ getIncoming().addAll((Collection<? extends Edge>)newValue);
+ return;
+ case SimplegraphPackage.NODE__OUTGOING:
+ getOutgoing().clear();
+ getOutgoing().addAll((Collection<? extends Edge>)newValue);
+ return;
+ case SimplegraphPackage.NODE__LABEL:
+ setLabel((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.NODE__INCOMING:
+ getIncoming().clear();
+ return;
+ case SimplegraphPackage.NODE__OUTGOING:
+ getOutgoing().clear();
+ return;
+ case SimplegraphPackage.NODE__LABEL:
+ setLabel(LABEL_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case SimplegraphPackage.NODE__INCOMING:
+ return incoming != null && !incoming.isEmpty();
+ case SimplegraphPackage.NODE__OUTGOING:
+ return outgoing != null && !outgoing.isEmpty();
+ case SimplegraphPackage.NODE__LABEL:
+ return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
+ }
+ 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(" (label: ");
+ result.append(label);
+ result.append(')');
+ return result.toString();
+ }
+
+
+} //NodeImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphFactoryImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphFactoryImpl.java
new file mode 100644
index 000000000..52b5d5e37
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphFactoryImpl.java
@@ -0,0 +1,117 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimplegraphFactoryImpl extends EFactoryImpl implements SimplegraphFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static SimplegraphFactory init() {
+ try {
+ SimplegraphFactory theSimplegraphFactory = (SimplegraphFactory)EPackage.Registry.INSTANCE.getEFactory(SimplegraphPackage.eNS_URI);
+ if (theSimplegraphFactory != null) {
+ return theSimplegraphFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new SimplegraphFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimplegraphFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case SimplegraphPackage.NODE: return createNode();
+ case SimplegraphPackage.EDGE: return createEdge();
+ case SimplegraphPackage.GRAPH: return createGraph();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node createNode() {
+ NodeImpl node = new NodeImpl();
+ return node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge createEdge() {
+ EdgeImpl edge = new EdgeImpl();
+ return edge;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph createGraph() {
+ GraphImpl graph = new GraphImpl();
+ return graph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimplegraphPackage getSimplegraphPackage() {
+ return (SimplegraphPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static SimplegraphPackage getPackage() {
+ return SimplegraphPackage.eINSTANCE;
+ }
+
+} //SimplegraphFactoryImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphPackageImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphPackageImpl.java
new file mode 100644
index 000000000..aea2f4eb6
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/impl/SimplegraphPackageImpl.java
@@ -0,0 +1,330 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphFactory;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SimplegraphPackageImpl extends EPackageImpl implements SimplegraphPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass nodeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass edgeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass elementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass graphEClass = 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private SimplegraphPackageImpl() {
+ super(eNS_URI, SimplegraphFactory.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 SimplegraphPackage#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 SimplegraphPackage init() {
+ if (isInited) return (SimplegraphPackage)EPackage.Registry.INSTANCE.getEPackage(SimplegraphPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object ePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ SimplegraphPackageImpl theSimplegraphPackage = (SimplegraphPackageImpl)(ePackage instanceof SimplegraphPackageImpl ? ePackage : new SimplegraphPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ Simplegraph2graphPackageImpl theSimplegraph2graphPackage = (Simplegraph2graphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(Simplegraph2graphPackage.eNS_URI) instanceof Simplegraph2graphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(Simplegraph2graphPackage.eNS_URI) : Simplegraph2graphPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theSimplegraphPackage.createPackageContents();
+ theSimplegraph2graphPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSimplegraphPackage.initializePackageContents();
+ theSimplegraph2graphPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSimplegraphPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(SimplegraphPackage.eNS_URI, theSimplegraphPackage);
+ return theSimplegraphPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNode() {
+ return nodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNode_Incoming() {
+ return (EReference)nodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNode_Outgoing() {
+ return (EReference)nodeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getNode_Label() {
+ return (EAttribute)nodeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEdge() {
+ return edgeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge_Target() {
+ return (EReference)edgeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge_Source() {
+ return (EReference)edgeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getElement() {
+ return elementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getElement_Graph() {
+ return (EReference)elementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGraph() {
+ return graphEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph_Element() {
+ return (EReference)graphEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraph_Name() {
+ return (EAttribute)graphEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimplegraphFactory getSimplegraphFactory() {
+ return (SimplegraphFactory)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
+ nodeEClass = createEClass(NODE);
+ createEReference(nodeEClass, NODE__INCOMING);
+ createEReference(nodeEClass, NODE__OUTGOING);
+ createEAttribute(nodeEClass, NODE__LABEL);
+
+ edgeEClass = createEClass(EDGE);
+ createEReference(edgeEClass, EDGE__TARGET);
+ createEReference(edgeEClass, EDGE__SOURCE);
+
+ elementEClass = createEClass(ELEMENT);
+ createEReference(elementEClass, ELEMENT__GRAPH);
+
+ graphEClass = createEClass(GRAPH);
+ createEReference(graphEClass, GRAPH__ELEMENT);
+ createEAttribute(graphEClass, GRAPH__NAME);
+ }
+
+ /**
+ * <!-- 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.getElement());
+ edgeEClass.getESuperTypes().add(this.getElement());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(nodeEClass, Node.class, "Node", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getNode_Incoming(), this.getEdge(), this.getEdge_Target(), "incoming", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getNode_Outgoing(), this.getEdge(), this.getEdge_Source(), "outgoing", null, 0, -1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getNode_Label(), ecorePackage.getEString(), "label", null, 0, 1, Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(edgeEClass, Edge.class, "Edge", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEdge_Target(), this.getNode(), this.getNode_Incoming(), "target", null, 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEdge_Source(), this.getNode(), this.getNode_Outgoing(), "source", null, 0, 1, Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(elementEClass, Element.class, "Element", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getElement_Graph(), this.getGraph(), this.getGraph_Element(), "graph", null, 1, 1, Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(graphEClass, Graph.class, "Graph", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getGraph_Element(), this.getElement(), this.getElement_Graph(), "element", null, 0, -1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getGraph_Name(), ecorePackage.getEString(), "name", null, 0, 1, Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+ }
+
+} //SimplegraphPackageImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphAdapterFactory.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphAdapterFactory.java
new file mode 100644
index 000000000..40853b5e8
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphAdapterFactory.java
@@ -0,0 +1,176 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.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.jdt.annotation.Nullable;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.*;
+
+/**
+ * <!-- 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage
+ * @generated
+ */
+public class SimplegraphAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SimplegraphPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimplegraphAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = SimplegraphPackage.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 SimplegraphSwitch<@Nullable Adapter> modelSwitch =
+ new SimplegraphSwitch<@Nullable Adapter>() {
+ @Override
+ public Adapter caseNode(Node object) {
+ return createNodeAdapter();
+ }
+ @Override
+ public Adapter caseEdge(Edge object) {
+ return createEdgeAdapter();
+ }
+ @Override
+ public Adapter caseElement(Element object) {
+ return createElementAdapter();
+ }
+ @Override
+ public Adapter caseGraph(Graph object) {
+ return createGraphAdapter();
+ }
+ @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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node
+ * @generated
+ */
+ public Adapter createNodeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge <em>Edge</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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge
+ * @generated
+ */
+ public Adapter createEdgeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element <em>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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Element
+ * @generated
+ */
+ public Adapter createElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph <em>Graph</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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph
+ * @generated
+ */
+ public Adapter createGraphAdapter() {
+ 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;
+ }
+
+} //SimplegraphAdapterFactory
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphSwitch.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphSwitch.java
new file mode 100644
index 000000000..273e1ba63
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph/util/SimplegraphSwitch.java
@@ -0,0 +1,177 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.jdt.annotation.Nullable;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.*;
+
+/**
+ * <!-- 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage
+ * @generated
+ */
+public class SimplegraphSwitch<@Nullable T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static SimplegraphPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public SimplegraphSwitch() {
+ if (modelPackage == null) {
+ modelPackage = SimplegraphPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case SimplegraphPackage.NODE: {
+ Node node = (Node)theEObject;
+ T result = caseNode(node);
+ if (result == null) result = caseElement(node);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SimplegraphPackage.EDGE: {
+ Edge edge = (Edge)theEObject;
+ T result = caseEdge(edge);
+ if (result == null) result = caseElement(edge);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SimplegraphPackage.ELEMENT: {
+ Element element = (Element)theEObject;
+ T result = caseElement(element);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case SimplegraphPackage.GRAPH: {
+ Graph graph = (Graph)theEObject;
+ T result = caseGraph(graph);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * 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>Edge</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>Edge</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEdge(Edge object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>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>Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseElement(Element object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Graph</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>Graph</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseGraph(Graph 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;
+ }
+
+} //SimplegraphSwitch
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Edge2Edge.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Edge2Edge.java
new file mode 100644
index 000000000..378b6c5f9
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Edge2Edge.java
@@ -0,0 +1,135 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Edge2 Edge</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge1 <em>Edge1</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge2 <em>Edge2</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getSource <em>Source</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getEdge2Edge()
+ * @model
+ * @generated
+ */
+public interface Edge2Edge extends Element2Element {
+ /**
+ * Returns the value of the '<em><b>Edge1</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Edge1</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Edge1</em>' reference.
+ * @see #setEdge1(Edge)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getEdge2Edge_Edge1()
+ * @model annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper body='1'"
+ * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='middle1'"
+ * annotation="http://www.eclipse.org/qvt#Domains referredDomain='upperGraph'"
+ * @generated
+ */
+ Edge getEdge1();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge1 <em>Edge1</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Edge1</em>' reference.
+ * @see #getEdge1()
+ * @generated
+ */
+ void setEdge1(Edge value);
+
+ /**
+ * Returns the value of the '<em><b>Edge2</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Edge2</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Edge2</em>' reference.
+ * @see #setEdge2(Edge)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getEdge2Edge_Edge2()
+ * @model annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper body='1'"
+ * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='middle2'"
+ * annotation="http://www.eclipse.org/qvt#Domains referredDomain='lowerGraph'"
+ * @generated
+ */
+ Edge getEdge2();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge2 <em>Edge2</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Edge2</em>' reference.
+ * @see #getEdge2()
+ * @generated
+ */
+ void setEdge2(Edge 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(Node2Node)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getEdge2Edge_Target()
+ * @model
+ * @generated
+ */
+ Node2Node getTarget();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#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(Node2Node 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(Node2Node)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getEdge2Edge_Source()
+ * @model
+ * @generated
+ */
+ Node2Node getSource();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#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(Node2Node value);
+
+} // Edge2Edge
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Element2Element.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Element2Element.java
new file mode 100644
index 000000000..f676d5748
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Element2Element.java
@@ -0,0 +1,52 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Element2 Element</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element#getOwner <em>Owner</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getElement2Element()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Element2Element extends EObject {
+ /**
+ * Returns the value of the '<em><b>Owner</b></em>' container reference.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getElement2Element <em>Element2 Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Owner</em>' container reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Owner</em>' container reference.
+ * @see #setOwner(Graph2Graph)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getElement2Element_Owner()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getElement2Element
+ * @model opposite="element2Element" transient="false"
+ * @generated
+ */
+ Graph2Graph getOwner();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element#getOwner <em>Owner</em>}' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Owner</em>' container reference.
+ * @see #getOwner()
+ * @generated
+ */
+ void setOwner(Graph2Graph value);
+
+} // Element2Element
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Graph2Graph.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Graph2Graph.java
new file mode 100644
index 000000000..07b7aac0b
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Graph2Graph.java
@@ -0,0 +1,131 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Graph2 Graph</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph1 <em>Graph1</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph2 <em>Graph2</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getElement2Element <em>Element2 Element</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getGraph2Graph()
+ * @model
+ * @generated
+ */
+public interface Graph2Graph extends EObject {
+ /**
+ * Returns the value of the '<em><b>Graph1</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Graph1</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Graph1</em>' reference.
+ * @see #setGraph1(Graph)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getGraph2Graph_Graph1()
+ * @model annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper body='1'"
+ * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='middle1'"
+ * annotation="http://www.eclipse.org/qvt#Domains referredDomain='upperGraph'"
+ * @generated
+ */
+ Graph getGraph1();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph1 <em>Graph1</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Graph1</em>' reference.
+ * @see #getGraph1()
+ * @generated
+ */
+ void setGraph1(Graph value);
+
+ /**
+ * Returns the value of the '<em><b>Graph2</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Graph2</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Graph2</em>' reference.
+ * @see #setGraph2(Graph)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getGraph2Graph_Graph2()
+ * @model annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper body='1'"
+ * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='middle2'"
+ * annotation="http://www.eclipse.org/qvt#Domains referredDomain='lowerGraph'"
+ * @generated
+ */
+ Graph getGraph2();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph2 <em>Graph2</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Graph2</em>' reference.
+ * @see #getGraph2()
+ * @generated
+ */
+ void setGraph2(Graph value);
+
+ /**
+ * Returns the value of the '<em><b>Element2 Element</b></em>' containment reference list.
+ * The list contents are of type {@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element}.
+ * It is bidirectional and its opposite is '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element#getOwner <em>Owner</em>}'.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Element2 Element</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>Element2 Element</em>' containment reference list.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getGraph2Graph_Element2Element()
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element#getOwner
+ * @model opposite="owner" containment="true"
+ * @generated
+ */
+ EList<Element2Element> getElement2Element();
+
+ /**
+ * Returns the value of the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Name</em>' attribute isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Name</em>' attribute.
+ * @see #setName(String)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getGraph2Graph_Name()
+ * @model
+ * @generated
+ */
+ String getName();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getName <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Name</em>' attribute.
+ * @see #getName()
+ * @generated
+ */
+ void setName(String value);
+
+} // Graph2Graph
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Node2Node.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Node2Node.java
new file mode 100644
index 000000000..8d5136b9d
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Node2Node.java
@@ -0,0 +1,108 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Node2 Node</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode1 <em>Node1</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode2 <em>Node2</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getLabel <em>Label</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getNode2Node()
+ * @model
+ * @generated
+ */
+public interface Node2Node extends Element2Element {
+ /**
+ * Returns the value of the '<em><b>Node1</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Node1</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Node1</em>' reference.
+ * @see #setNode1(Node)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getNode2Node_Node1()
+ * @model annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper body='1'"
+ * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='middle1'"
+ * annotation="http://www.eclipse.org/qvt#Domains referredDomain='upperGraph'"
+ * @generated
+ */
+ Node getNode1();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode1 <em>Node1</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Node1</em>' reference.
+ * @see #getNode1()
+ * @generated
+ */
+ void setNode1(Node value);
+
+ /**
+ * Returns the value of the '<em><b>Node2</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>Node2</em>' reference isn't clear,
+ * there really should be more of a description here...
+ * </p>
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>Node2</em>' reference.
+ * @see #setNode2(Node)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getNode2Node_Node2()
+ * @model annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper body='1'"
+ * annotation="http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName body='middle2'"
+ * annotation="http://www.eclipse.org/qvt#Domains referredDomain='lowerGraph'"
+ * @generated
+ */
+ Node getNode2();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode2 <em>Node2</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Node2</em>' reference.
+ * @see #getNode2()
+ * @generated
+ */
+ void setNode2(Node value);
+
+ /**
+ * Returns the value of the '<em><b>Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <p>
+ * If the meaning of the '<em>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>Label</em>' attribute.
+ * @see #setLabel(String)
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#getNode2Node_Label()
+ * @model
+ * @generated
+ */
+ String getLabel();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getLabel <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>Label</em>' attribute.
+ * @see #getLabel()
+ * @generated
+ */
+ void setLabel(String value);
+
+} // Node2Node
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphFactory.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphFactory.java
new file mode 100644
index 000000000..f3179c954
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphFactory.java
@@ -0,0 +1,60 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph;
+
+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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage
+ * @generated
+ */
+public interface Simplegraph2graphFactory extends EFactory {
+ /**
+ * The singleton instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ Simplegraph2graphFactory eINSTANCE = org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphFactoryImpl.init();
+
+ /**
+ * Returns a new object of class '<em>Graph2 Graph</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Graph2 Graph</em>'.
+ * @generated
+ */
+ Graph2Graph createGraph2Graph();
+
+ /**
+ * Returns a new object of class '<em>Edge2 Edge</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Edge2 Edge</em>'.
+ * @generated
+ */
+ Edge2Edge createEdge2Edge();
+
+ /**
+ * Returns a new object of class '<em>Node2 Node</em>'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return a new object of class '<em>Node2 Node</em>'.
+ * @generated
+ */
+ Node2Node createNode2Node();
+
+ /**
+ * Returns the package supported by this factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the package supported by this factory.
+ * @generated
+ */
+ Simplegraph2graphPackage getSimplegraph2graphPackage();
+
+} //Simplegraph2graphFactory
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphPackage.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphPackage.java
new file mode 100644
index 000000000..5f94430d3
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/Simplegraph2graphPackage.java
@@ -0,0 +1,631 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph;
+
+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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Simplegraph2graphPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "simplegraph2graph";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.eclipse.org/qvtd/xtext/qvtcore/tests/Upper2Lower/1.0/SimpleGraph2Graph";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "simplegraph2graph";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ Simplegraph2graphPackage eINSTANCE = org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl <em>Graph2 Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getGraph2Graph()
+ * @generated
+ */
+ int GRAPH2_GRAPH = 0;
+
+ /**
+ * The feature id for the '<em><b>Graph1</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH2_GRAPH__GRAPH1 = 0;
+
+ /**
+ * The feature id for the '<em><b>Graph2</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH2_GRAPH__GRAPH2 = 1;
+
+ /**
+ * The feature id for the '<em><b>Element2 Element</b></em>' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH2_GRAPH__ELEMENT2_ELEMENT = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH2_GRAPH__NAME = 3;
+
+ /**
+ * The number of structural features of the '<em>Graph2 Graph</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH2_GRAPH_FEATURE_COUNT = 4;
+
+ /**
+ * The number of operations of the '<em>Graph2 Graph</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GRAPH2_GRAPH_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Element2ElementImpl <em>Element2 Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Element2ElementImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getElement2Element()
+ * @generated
+ */
+ int ELEMENT2_ELEMENT = 1;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT2_ELEMENT__OWNER = 0;
+
+ /**
+ * The number of structural features of the '<em>Element2 Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT2_ELEMENT_FEATURE_COUNT = 1;
+
+ /**
+ * The number of operations of the '<em>Element2 Element</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ELEMENT2_ELEMENT_OPERATION_COUNT = 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl <em>Edge2 Edge</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getEdge2Edge()
+ * @generated
+ */
+ int EDGE2_EDGE = 2;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE2_EDGE__OWNER = ELEMENT2_ELEMENT__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Edge1</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE2_EDGE__EDGE1 = ELEMENT2_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Edge2</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE2_EDGE__EDGE2 = ELEMENT2_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Target</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE2_EDGE__TARGET = ELEMENT2_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>Source</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE2_EDGE__SOURCE = ELEMENT2_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of structural features of the '<em>Edge2 Edge</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE2_EDGE_FEATURE_COUNT = ELEMENT2_ELEMENT_FEATURE_COUNT + 4;
+
+ /**
+ * The number of operations of the '<em>Edge2 Edge</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int EDGE2_EDGE_OPERATION_COUNT = ELEMENT2_ELEMENT_OPERATION_COUNT + 0;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Node2NodeImpl <em>Node2 Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Node2NodeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getNode2Node()
+ * @generated
+ */
+ int NODE2_NODE = 3;
+
+ /**
+ * The feature id for the '<em><b>Owner</b></em>' container reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE2_NODE__OWNER = ELEMENT2_ELEMENT__OWNER;
+
+ /**
+ * The feature id for the '<em><b>Node1</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE2_NODE__NODE1 = ELEMENT2_ELEMENT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Node2</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE2_NODE__NODE2 = ELEMENT2_ELEMENT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>Label</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE2_NODE__LABEL = ELEMENT2_ELEMENT_FEATURE_COUNT + 2;
+
+ /**
+ * The number of structural features of the '<em>Node2 Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE2_NODE_FEATURE_COUNT = ELEMENT2_ELEMENT_FEATURE_COUNT + 3;
+
+ /**
+ * The number of operations of the '<em>Node2 Node</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int NODE2_NODE_OPERATION_COUNT = ELEMENT2_ELEMENT_OPERATION_COUNT + 0;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph <em>Graph2 Graph</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Graph2 Graph</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph
+ * @generated
+ */
+ EClass getGraph2Graph();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph1 <em>Graph1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Graph1</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph1()
+ * @see #getGraph2Graph()
+ * @generated
+ */
+ EReference getGraph2Graph_Graph1();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph2 <em>Graph2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Graph2</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getGraph2()
+ * @see #getGraph2Graph()
+ * @generated
+ */
+ EReference getGraph2Graph_Graph2();
+
+ /**
+ * Returns the meta object for the containment reference list '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getElement2Element <em>Element2 Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference list '<em>Element2 Element</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getElement2Element()
+ * @see #getGraph2Graph()
+ * @generated
+ */
+ EReference getGraph2Graph_Element2Element();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph#getName()
+ * @see #getGraph2Graph()
+ * @generated
+ */
+ EAttribute getGraph2Graph_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element <em>Element2 Element</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Element2 Element</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element
+ * @generated
+ */
+ EClass getElement2Element();
+
+ /**
+ * Returns the meta object for the container reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element#getOwner <em>Owner</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the container reference '<em>Owner</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element#getOwner()
+ * @see #getElement2Element()
+ * @generated
+ */
+ EReference getElement2Element_Owner();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge <em>Edge2 Edge</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Edge2 Edge</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge
+ * @generated
+ */
+ EClass getEdge2Edge();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge1 <em>Edge1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Edge1</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge1()
+ * @see #getEdge2Edge()
+ * @generated
+ */
+ EReference getEdge2Edge_Edge1();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge2 <em>Edge2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Edge2</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getEdge2()
+ * @see #getEdge2Edge()
+ * @generated
+ */
+ EReference getEdge2Edge_Edge2();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getTarget <em>Target</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Target</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getTarget()
+ * @see #getEdge2Edge()
+ * @generated
+ */
+ EReference getEdge2Edge_Target();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getSource <em>Source</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Source</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge#getSource()
+ * @see #getEdge2Edge()
+ * @generated
+ */
+ EReference getEdge2Edge_Source();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node <em>Node2 Node</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Node2 Node</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node
+ * @generated
+ */
+ EClass getNode2Node();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode1 <em>Node1</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Node1</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode1()
+ * @see #getNode2Node()
+ * @generated
+ */
+ EReference getNode2Node_Node1();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode2 <em>Node2</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>Node2</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getNode2()
+ * @see #getNode2Node()
+ * @generated
+ */
+ EReference getNode2Node_Node2();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getLabel <em>Label</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Label</em>'.
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node#getLabel()
+ * @see #getNode2Node()
+ * @generated
+ */
+ EAttribute getNode2Node_Label();
+
+ /**
+ * 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
+ */
+ Simplegraph2graphFactory getSimplegraph2graphFactory();
+
+ /**
+ * <!-- 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl <em>Graph2 Graph</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getGraph2Graph()
+ * @generated
+ */
+ EClass GRAPH2_GRAPH = eINSTANCE.getGraph2Graph();
+
+ /**
+ * The meta object literal for the '<em><b>Graph1</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH2_GRAPH__GRAPH1 = eINSTANCE.getGraph2Graph_Graph1();
+
+ /**
+ * The meta object literal for the '<em><b>Graph2</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH2_GRAPH__GRAPH2 = eINSTANCE.getGraph2Graph_Graph2();
+
+ /**
+ * The meta object literal for the '<em><b>Element2 Element</b></em>' containment reference list feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference GRAPH2_GRAPH__ELEMENT2_ELEMENT = eINSTANCE.getGraph2Graph_Element2Element();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GRAPH2_GRAPH__NAME = eINSTANCE.getGraph2Graph_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Element2ElementImpl <em>Element2 Element</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Element2ElementImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getElement2Element()
+ * @generated
+ */
+ EClass ELEMENT2_ELEMENT = eINSTANCE.getElement2Element();
+
+ /**
+ * The meta object literal for the '<em><b>Owner</b></em>' container reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference ELEMENT2_ELEMENT__OWNER = eINSTANCE.getElement2Element_Owner();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl <em>Edge2 Edge</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getEdge2Edge()
+ * @generated
+ */
+ EClass EDGE2_EDGE = eINSTANCE.getEdge2Edge();
+
+ /**
+ * The meta object literal for the '<em><b>Edge1</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE2_EDGE__EDGE1 = eINSTANCE.getEdge2Edge_Edge1();
+
+ /**
+ * The meta object literal for the '<em><b>Edge2</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE2_EDGE__EDGE2 = eINSTANCE.getEdge2Edge_Edge2();
+
+ /**
+ * The meta object literal for the '<em><b>Target</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE2_EDGE__TARGET = eINSTANCE.getEdge2Edge_Target();
+
+ /**
+ * The meta object literal for the '<em><b>Source</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference EDGE2_EDGE__SOURCE = eINSTANCE.getEdge2Edge_Source();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Node2NodeImpl <em>Node2 Node</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Node2NodeImpl
+ * @see org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Simplegraph2graphPackageImpl#getNode2Node()
+ * @generated
+ */
+ EClass NODE2_NODE = eINSTANCE.getNode2Node();
+
+ /**
+ * The meta object literal for the '<em><b>Node1</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE2_NODE__NODE1 = eINSTANCE.getNode2Node_Node1();
+
+ /**
+ * The meta object literal for the '<em><b>Node2</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference NODE2_NODE__NODE2 = eINSTANCE.getNode2Node_Node2();
+
+ /**
+ * The meta object literal for the '<em><b>Label</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute NODE2_NODE__LABEL = eINSTANCE.getNode2Node_Label();
+
+ }
+
+} //Simplegraph2graphPackage
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Edge2EdgeImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Edge2EdgeImpl.java
new file mode 100644
index 000000000..042b88535
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Edge2EdgeImpl.java
@@ -0,0 +1,339 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Edge;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Edge2 Edge</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl#getEdge1 <em>Edge1</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl#getEdge2 <em>Edge2</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl#getTarget <em>Target</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Edge2EdgeImpl#getSource <em>Source</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class Edge2EdgeImpl extends Element2ElementImpl implements Edge2Edge {
+ /**
+ * The cached value of the '{@link #getEdge1() <em>Edge1</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEdge1()
+ * @generated
+ * @ordered
+ */
+ protected Edge edge1;
+
+ /**
+ * The cached value of the '{@link #getEdge2() <em>Edge2</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getEdge2()
+ * @generated
+ * @ordered
+ */
+ protected Edge edge2;
+
+ /**
+ * The cached value of the '{@link #getTarget() <em>Target</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getTarget()
+ * @generated
+ * @ordered
+ */
+ protected Node2Node target;
+
+ /**
+ * The cached value of the '{@link #getSource() <em>Source</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getSource()
+ * @generated
+ * @ordered
+ */
+ protected Node2Node source;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Edge2EdgeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return Simplegraph2graphPackage.Literals.EDGE2_EDGE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge getEdge1() {
+ if (edge1 != null && edge1.eIsProxy()) {
+ InternalEObject oldEdge1 = (InternalEObject)edge1;
+ edge1 = (Edge)eResolveProxy(oldEdge1);
+ if (edge1 != oldEdge1) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.EDGE2_EDGE__EDGE1, oldEdge1, edge1));
+ }
+ }
+ return edge1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge basicGetEdge1() {
+ return edge1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEdge1(Edge newEdge1) {
+ Edge oldEdge1 = edge1;
+ edge1 = newEdge1;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.EDGE2_EDGE__EDGE1, oldEdge1, edge1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge getEdge2() {
+ if (edge2 != null && edge2.eIsProxy()) {
+ InternalEObject oldEdge2 = (InternalEObject)edge2;
+ edge2 = (Edge)eResolveProxy(oldEdge2);
+ if (edge2 != oldEdge2) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.EDGE2_EDGE__EDGE2, oldEdge2, edge2));
+ }
+ }
+ return edge2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge basicGetEdge2() {
+ return edge2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setEdge2(Edge newEdge2) {
+ Edge oldEdge2 = edge2;
+ edge2 = newEdge2;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.EDGE2_EDGE__EDGE2, oldEdge2, edge2));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node2Node getTarget() {
+ if (target != null && target.eIsProxy()) {
+ InternalEObject oldTarget = (InternalEObject)target;
+ target = (Node2Node)eResolveProxy(oldTarget);
+ if (target != oldTarget) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.EDGE2_EDGE__TARGET, oldTarget, target));
+ }
+ }
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node2Node basicGetTarget() {
+ return target;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setTarget(Node2Node newTarget) {
+ Node2Node oldTarget = target;
+ target = newTarget;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.EDGE2_EDGE__TARGET, oldTarget, target));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node2Node getSource() {
+ if (source != null && source.eIsProxy()) {
+ InternalEObject oldSource = (InternalEObject)source;
+ source = (Node2Node)eResolveProxy(oldSource);
+ if (source != oldSource) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.EDGE2_EDGE__SOURCE, oldSource, source));
+ }
+ }
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node2Node basicGetSource() {
+ return source;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setSource(Node2Node newSource) {
+ Node2Node oldSource = source;
+ source = newSource;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.EDGE2_EDGE__SOURCE, oldSource, source));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE1:
+ if (resolve) return getEdge1();
+ return basicGetEdge1();
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE2:
+ if (resolve) return getEdge2();
+ return basicGetEdge2();
+ case Simplegraph2graphPackage.EDGE2_EDGE__TARGET:
+ if (resolve) return getTarget();
+ return basicGetTarget();
+ case Simplegraph2graphPackage.EDGE2_EDGE__SOURCE:
+ if (resolve) return getSource();
+ return basicGetSource();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE1:
+ setEdge1((Edge)newValue);
+ return;
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE2:
+ setEdge2((Edge)newValue);
+ return;
+ case Simplegraph2graphPackage.EDGE2_EDGE__TARGET:
+ setTarget((Node2Node)newValue);
+ return;
+ case Simplegraph2graphPackage.EDGE2_EDGE__SOURCE:
+ setSource((Node2Node)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE1:
+ setEdge1((Edge)null);
+ return;
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE2:
+ setEdge2((Edge)null);
+ return;
+ case Simplegraph2graphPackage.EDGE2_EDGE__TARGET:
+ setTarget((Node2Node)null);
+ return;
+ case Simplegraph2graphPackage.EDGE2_EDGE__SOURCE:
+ setSource((Node2Node)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE1:
+ return edge1 != null;
+ case Simplegraph2graphPackage.EDGE2_EDGE__EDGE2:
+ return edge2 != null;
+ case Simplegraph2graphPackage.EDGE2_EDGE__TARGET:
+ return target != null;
+ case Simplegraph2graphPackage.EDGE2_EDGE__SOURCE:
+ return source != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+
+} //Edge2EdgeImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Element2ElementImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Element2ElementImpl.java
new file mode 100644
index 000000000..8696e40f5
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Element2ElementImpl.java
@@ -0,0 +1,197 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Element2 Element</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Element2ElementImpl#getOwner <em>Owner</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Element2ElementImpl extends MinimalEObjectImpl.Container implements Element2Element {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Element2ElementImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return Simplegraph2graphPackage.Literals.ELEMENT2_ELEMENT;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph2Graph getOwner() {
+ if (eContainerFeatureID() != Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER) return null;
+ return (Graph2Graph)eInternalContainer();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public NotificationChain basicSetOwner(Graph2Graph newOwner, NotificationChain msgs) {
+ msgs = eBasicSetContainer((InternalEObject)newOwner, Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER, msgs);
+ return msgs;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setOwner(Graph2Graph newOwner) {
+ if (newOwner != eInternalContainer() || (eContainerFeatureID() != Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER && newOwner != null)) {
+ if (EcoreUtil.isAncestor(this, newOwner))
+ throw new IllegalArgumentException("Recursive containment not allowed for " + toString());
+ NotificationChain msgs = null;
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ if (newOwner != null)
+ msgs = ((InternalEObject)newOwner).eInverseAdd(this, Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT, Graph2Graph.class, msgs);
+ msgs = basicSetOwner(newOwner, msgs);
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER, newOwner, newOwner));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER:
+ if (eInternalContainer() != null)
+ msgs = eBasicRemoveFromContainer(msgs);
+ return basicSetOwner((Graph2Graph)otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER:
+ return basicSetOwner(null, msgs);
+ }
+ return super.eInverseRemove(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) {
+ switch (eContainerFeatureID()) {
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER:
+ return eInternalContainer().eInverseRemove(this, Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT, Graph2Graph.class, msgs);
+ }
+ return super.eBasicRemoveFromContainerFeature(msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER:
+ return getOwner();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER:
+ setOwner((Graph2Graph)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER:
+ setOwner((Graph2Graph)null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER:
+ return getOwner() != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+
+} //Element2ElementImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Graph2GraphImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Graph2GraphImpl.java
new file mode 100644
index 000000000..c2e3fdf34
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Graph2GraphImpl.java
@@ -0,0 +1,360 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.NotificationChain;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectContainmentWithInverseEList;
+import org.eclipse.emf.ecore.util.InternalEList;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Graph;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Graph2 Graph</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl#getGraph1 <em>Graph1</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl#getGraph2 <em>Graph2</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl#getElement2Element <em>Element2 Element</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Graph2GraphImpl#getName <em>Name</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class Graph2GraphImpl extends MinimalEObjectImpl.Container implements Graph2Graph {
+ /**
+ * The cached value of the '{@link #getGraph1() <em>Graph1</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGraph1()
+ * @generated
+ * @ordered
+ */
+ protected Graph graph1;
+
+ /**
+ * The cached value of the '{@link #getGraph2() <em>Graph2</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getGraph2()
+ * @generated
+ * @ordered
+ */
+ protected Graph graph2;
+
+ /**
+ * The cached value of the '{@link #getElement2Element() <em>Element2 Element</em>}' containment reference list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getElement2Element()
+ * @generated
+ * @ordered
+ */
+ protected EList<Element2Element> element2Element;
+
+ /**
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected static final String NAME_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getName()
+ * @generated
+ * @ordered
+ */
+ protected String name = NAME_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Graph2GraphImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return Simplegraph2graphPackage.Literals.GRAPH2_GRAPH;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph getGraph1() {
+ if (graph1 != null && graph1.eIsProxy()) {
+ InternalEObject oldGraph1 = (InternalEObject)graph1;
+ graph1 = (Graph)eResolveProxy(oldGraph1);
+ if (graph1 != oldGraph1) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH1, oldGraph1, graph1));
+ }
+ }
+ return graph1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph basicGetGraph1() {
+ return graph1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGraph1(Graph newGraph1) {
+ Graph oldGraph1 = graph1;
+ graph1 = newGraph1;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH1, oldGraph1, graph1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph getGraph2() {
+ if (graph2 != null && graph2.eIsProxy()) {
+ InternalEObject oldGraph2 = (InternalEObject)graph2;
+ graph2 = (Graph)eResolveProxy(oldGraph2);
+ if (graph2 != oldGraph2) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH2, oldGraph2, graph2));
+ }
+ }
+ return graph2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph basicGetGraph2() {
+ return graph2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setGraph2(Graph newGraph2) {
+ Graph oldGraph2 = graph2;
+ graph2 = newGraph2;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH2, oldGraph2, graph2));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EList<Element2Element> getElement2Element() {
+ if (element2Element == null) {
+ element2Element = new EObjectContainmentWithInverseEList<Element2Element>(Element2Element.class, this, Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT, Simplegraph2graphPackage.ELEMENT2_ELEMENT__OWNER);
+ }
+ return element2Element;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setName(String newName) {
+ String oldName = name;
+ name = newName;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.GRAPH2_GRAPH__NAME, oldName, name));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT:
+ return ((InternalEList<InternalEObject>)(InternalEList<?>)getElement2Element()).basicAdd(otherEnd, msgs);
+ }
+ return super.eInverseAdd(otherEnd, featureID, msgs);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT:
+ return ((InternalEList<?>)getElement2Element()).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 Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH1:
+ if (resolve) return getGraph1();
+ return basicGetGraph1();
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH2:
+ if (resolve) return getGraph2();
+ return basicGetGraph2();
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT:
+ return getElement2Element();
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__NAME:
+ return getName();
+ }
+ 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 Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH1:
+ setGraph1((Graph)newValue);
+ return;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH2:
+ setGraph2((Graph)newValue);
+ return;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT:
+ getElement2Element().clear();
+ getElement2Element().addAll((Collection<? extends Element2Element>)newValue);
+ return;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__NAME:
+ setName((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH1:
+ setGraph1((Graph)null);
+ return;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH2:
+ setGraph2((Graph)null);
+ return;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT:
+ getElement2Element().clear();
+ return;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH1:
+ return graph1 != null;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__GRAPH2:
+ return graph2 != null;
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__ELEMENT2_ELEMENT:
+ return element2Element != null && !element2Element.isEmpty();
+ case Simplegraph2graphPackage.GRAPH2_GRAPH__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ }
+ 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(" (name: ");
+ result.append(name);
+ result.append(')');
+ return result.toString();
+ }
+
+
+} //Graph2GraphImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Node2NodeImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Node2NodeImpl.java
new file mode 100644
index 000000000..8bc11d6fb
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Node2NodeImpl.java
@@ -0,0 +1,286 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.Node;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Node2 Node</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Node2NodeImpl#getNode1 <em>Node1</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Node2NodeImpl#getNode2 <em>Node2</em>}</li>
+ * <li>{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.impl.Node2NodeImpl#getLabel <em>Label</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class Node2NodeImpl extends Element2ElementImpl implements Node2Node {
+ /**
+ * The cached value of the '{@link #getNode1() <em>Node1</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNode1()
+ * @generated
+ * @ordered
+ */
+ protected Node node1;
+
+ /**
+ * The cached value of the '{@link #getNode2() <em>Node2</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getNode2()
+ * @generated
+ * @ordered
+ */
+ protected Node node2;
+
+ /**
+ * The default value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected static final String LABEL_EDEFAULT = null;
+
+ /**
+ * The cached value of the '{@link #getLabel() <em>Label</em>}' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see #getLabel()
+ * @generated
+ * @ordered
+ */
+ protected String label = LABEL_EDEFAULT;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected Node2NodeImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return Simplegraph2graphPackage.Literals.NODE2_NODE;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getNode1() {
+ if (node1 != null && node1.eIsProxy()) {
+ InternalEObject oldNode1 = (InternalEObject)node1;
+ node1 = (Node)eResolveProxy(oldNode1);
+ if (node1 != oldNode1) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.NODE2_NODE__NODE1, oldNode1, node1));
+ }
+ }
+ return node1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetNode1() {
+ return node1;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNode1(Node newNode1) {
+ Node oldNode1 = node1;
+ node1 = newNode1;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.NODE2_NODE__NODE1, oldNode1, node1));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node getNode2() {
+ if (node2 != null && node2.eIsProxy()) {
+ InternalEObject oldNode2 = (InternalEObject)node2;
+ node2 = (Node)eResolveProxy(oldNode2);
+ if (node2 != oldNode2) {
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.RESOLVE, Simplegraph2graphPackage.NODE2_NODE__NODE2, oldNode2, node2));
+ }
+ }
+ return node2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node basicGetNode2() {
+ return node2;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setNode2(Node newNode2) {
+ Node oldNode2 = node2;
+ node2 = newNode2;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.NODE2_NODE__NODE2, oldNode2, node2));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public String getLabel() {
+ return label;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void setLabel(String newLabel) {
+ String oldLabel = label;
+ label = newLabel;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, Simplegraph2graphPackage.NODE2_NODE__LABEL, oldLabel, label));
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.NODE2_NODE__NODE1:
+ if (resolve) return getNode1();
+ return basicGetNode1();
+ case Simplegraph2graphPackage.NODE2_NODE__NODE2:
+ if (resolve) return getNode2();
+ return basicGetNode2();
+ case Simplegraph2graphPackage.NODE2_NODE__LABEL:
+ return getLabel();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.NODE2_NODE__NODE1:
+ setNode1((Node)newValue);
+ return;
+ case Simplegraph2graphPackage.NODE2_NODE__NODE2:
+ setNode2((Node)newValue);
+ return;
+ case Simplegraph2graphPackage.NODE2_NODE__LABEL:
+ setLabel((String)newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.NODE2_NODE__NODE1:
+ setNode1((Node)null);
+ return;
+ case Simplegraph2graphPackage.NODE2_NODE__NODE2:
+ setNode2((Node)null);
+ return;
+ case Simplegraph2graphPackage.NODE2_NODE__LABEL:
+ setLabel(LABEL_EDEFAULT);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case Simplegraph2graphPackage.NODE2_NODE__NODE1:
+ return node1 != null;
+ case Simplegraph2graphPackage.NODE2_NODE__NODE2:
+ return node2 != null;
+ case Simplegraph2graphPackage.NODE2_NODE__LABEL:
+ return LABEL_EDEFAULT == null ? label != null : !LABEL_EDEFAULT.equals(label);
+ }
+ 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(" (label: ");
+ result.append(label);
+ result.append(')');
+ return result.toString();
+ }
+
+
+} //Node2NodeImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphFactoryImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphFactoryImpl.java
new file mode 100644
index 000000000..f306b8e9d
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphFactoryImpl.java
@@ -0,0 +1,117 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Simplegraph2graphFactoryImpl extends EFactoryImpl implements Simplegraph2graphFactory {
+ /**
+ * Creates the default factory implementation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public static Simplegraph2graphFactory init() {
+ try {
+ Simplegraph2graphFactory theSimplegraph2graphFactory = (Simplegraph2graphFactory)EPackage.Registry.INSTANCE.getEFactory(Simplegraph2graphPackage.eNS_URI);
+ if (theSimplegraph2graphFactory != null) {
+ return theSimplegraph2graphFactory;
+ }
+ }
+ catch (Exception exception) {
+ EcorePlugin.INSTANCE.log(exception);
+ }
+ return new Simplegraph2graphFactoryImpl();
+ }
+
+ /**
+ * Creates an instance of the factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Simplegraph2graphFactoryImpl() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EObject create(EClass eClass) {
+ switch (eClass.getClassifierID()) {
+ case Simplegraph2graphPackage.GRAPH2_GRAPH: return createGraph2Graph();
+ case Simplegraph2graphPackage.EDGE2_EDGE: return createEdge2Edge();
+ case Simplegraph2graphPackage.NODE2_NODE: return createNode2Node();
+ default:
+ throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+ }
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Graph2Graph createGraph2Graph() {
+ Graph2GraphImpl graph2Graph = new Graph2GraphImpl();
+ return graph2Graph;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Edge2Edge createEdge2Edge() {
+ Edge2EdgeImpl edge2Edge = new Edge2EdgeImpl();
+ return edge2Edge;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Node2Node createNode2Node() {
+ Node2NodeImpl node2Node = new Node2NodeImpl();
+ return node2Node;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Simplegraph2graphPackage getSimplegraph2graphPackage() {
+ return (Simplegraph2graphPackage)getEPackage();
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @deprecated
+ * @generated
+ */
+ @Deprecated
+ public static Simplegraph2graphPackage getPackage() {
+ return Simplegraph2graphPackage.eINSTANCE;
+ }
+
+} //Simplegraph2graphFactoryImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphPackageImpl.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphPackageImpl.java
new file mode 100644
index 000000000..2346fcd86
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/impl/Simplegraph2graphPackageImpl.java
@@ -0,0 +1,523 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.SimplegraphPackage;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph.impl.SimplegraphPackageImpl;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphFactory;
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Simplegraph2graphPackageImpl extends EPackageImpl implements Simplegraph2graphPackage {
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass graph2GraphEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass element2ElementEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass edge2EdgeEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private EClass node2NodeEClass = 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage#eNS_URI
+ * @see #init()
+ * @generated
+ */
+ private Simplegraph2graphPackageImpl() {
+ super(eNS_URI, Simplegraph2graphFactory.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 Simplegraph2graphPackage#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 Simplegraph2graphPackage init() {
+ if (isInited) return (Simplegraph2graphPackage)EPackage.Registry.INSTANCE.getEPackage(Simplegraph2graphPackage.eNS_URI);
+
+ // Obtain or create and register package
+ Object ePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+ Simplegraph2graphPackageImpl theSimplegraph2graphPackage = (Simplegraph2graphPackageImpl)(ePackage instanceof Simplegraph2graphPackageImpl ? ePackage : new Simplegraph2graphPackageImpl());
+
+ isInited = true;
+
+ // Obtain or create and register interdependencies
+ SimplegraphPackageImpl theSimplegraphPackage = (SimplegraphPackageImpl)(EPackage.Registry.INSTANCE.getEPackage(SimplegraphPackage.eNS_URI) instanceof SimplegraphPackageImpl ? EPackage.Registry.INSTANCE.getEPackage(SimplegraphPackage.eNS_URI) : SimplegraphPackage.eINSTANCE);
+
+ // Create package meta-data objects
+ theSimplegraph2graphPackage.createPackageContents();
+ theSimplegraphPackage.createPackageContents();
+
+ // Initialize created meta-data
+ theSimplegraph2graphPackage.initializePackageContents();
+ theSimplegraphPackage.initializePackageContents();
+
+ // Mark meta-data to indicate it can't be changed
+ theSimplegraph2graphPackage.freeze();
+
+
+ // Update the registry and return the package
+ EPackage.Registry.INSTANCE.put(Simplegraph2graphPackage.eNS_URI, theSimplegraph2graphPackage);
+ return theSimplegraph2graphPackage;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getGraph2Graph() {
+ return graph2GraphEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph2Graph_Graph1() {
+ return (EReference)graph2GraphEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph2Graph_Graph2() {
+ return (EReference)graph2GraphEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getGraph2Graph_Element2Element() {
+ return (EReference)graph2GraphEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getGraph2Graph_Name() {
+ return (EAttribute)graph2GraphEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getElement2Element() {
+ return element2ElementEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getElement2Element_Owner() {
+ return (EReference)element2ElementEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getEdge2Edge() {
+ return edge2EdgeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge2Edge_Edge1() {
+ return (EReference)edge2EdgeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge2Edge_Edge2() {
+ return (EReference)edge2EdgeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge2Edge_Target() {
+ return (EReference)edge2EdgeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getEdge2Edge_Source() {
+ return (EReference)edge2EdgeEClass.getEStructuralFeatures().get(3);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EClass getNode2Node() {
+ return node2NodeEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNode2Node_Node1() {
+ return (EReference)node2NodeEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EReference getNode2Node_Node2() {
+ return (EReference)node2NodeEClass.getEStructuralFeatures().get(1);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public EAttribute getNode2Node_Label() {
+ return (EAttribute)node2NodeEClass.getEStructuralFeatures().get(2);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Simplegraph2graphFactory getSimplegraph2graphFactory() {
+ return (Simplegraph2graphFactory)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
+ graph2GraphEClass = createEClass(GRAPH2_GRAPH);
+ createEReference(graph2GraphEClass, GRAPH2_GRAPH__GRAPH1);
+ createEReference(graph2GraphEClass, GRAPH2_GRAPH__GRAPH2);
+ createEReference(graph2GraphEClass, GRAPH2_GRAPH__ELEMENT2_ELEMENT);
+ createEAttribute(graph2GraphEClass, GRAPH2_GRAPH__NAME);
+
+ element2ElementEClass = createEClass(ELEMENT2_ELEMENT);
+ createEReference(element2ElementEClass, ELEMENT2_ELEMENT__OWNER);
+
+ edge2EdgeEClass = createEClass(EDGE2_EDGE);
+ createEReference(edge2EdgeEClass, EDGE2_EDGE__EDGE1);
+ createEReference(edge2EdgeEClass, EDGE2_EDGE__EDGE2);
+ createEReference(edge2EdgeEClass, EDGE2_EDGE__TARGET);
+ createEReference(edge2EdgeEClass, EDGE2_EDGE__SOURCE);
+
+ node2NodeEClass = createEClass(NODE2_NODE);
+ createEReference(node2NodeEClass, NODE2_NODE__NODE1);
+ createEReference(node2NodeEClass, NODE2_NODE__NODE2);
+ createEAttribute(node2NodeEClass, NODE2_NODE__LABEL);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ private boolean isInitialized = false;
+
+ /**
+ * Complete the initialization of the package and its meta-model. This
+ * method is guarded to have no affect on any invocation but its first.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public void initializePackageContents() {
+ if (isInitialized) return;
+ isInitialized = true;
+
+ // Initialize package
+ setName(eNAME);
+ setNsPrefix(eNS_PREFIX);
+ setNsURI(eNS_URI);
+
+ // Obtain other dependent packages
+ SimplegraphPackage theSimplegraphPackage = (SimplegraphPackage)EPackage.Registry.INSTANCE.getEPackage(SimplegraphPackage.eNS_URI);
+
+ // Create type parameters
+
+ // Set bounds for type parameters
+
+ // Add supertypes to classes
+ edge2EdgeEClass.getESuperTypes().add(this.getElement2Element());
+ node2NodeEClass.getESuperTypes().add(this.getElement2Element());
+
+ // Initialize classes, features, and operations; add parameters
+ initEClass(graph2GraphEClass, Graph2Graph.class, "Graph2Graph", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getGraph2Graph_Graph1(), theSimplegraphPackage.getGraph(), null, "graph1", null, 0, 1, Graph2Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getGraph2Graph_Graph2(), theSimplegraphPackage.getGraph(), null, "graph2", null, 0, 1, Graph2Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getGraph2Graph_Element2Element(), this.getElement2Element(), this.getElement2Element_Owner(), "element2Element", null, 0, -1, Graph2Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getGraph2Graph_Name(), ecorePackage.getEString(), "name", null, 0, 1, Graph2Graph.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(element2ElementEClass, Element2Element.class, "Element2Element", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getElement2Element_Owner(), this.getGraph2Graph(), this.getGraph2Graph_Element2Element(), "owner", null, 0, 1, Element2Element.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(edge2EdgeEClass, Edge2Edge.class, "Edge2Edge", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getEdge2Edge_Edge1(), theSimplegraphPackage.getEdge(), null, "edge1", null, 0, 1, Edge2Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEdge2Edge_Edge2(), theSimplegraphPackage.getEdge(), null, "edge2", null, 0, 1, Edge2Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEdge2Edge_Target(), this.getNode2Node(), null, "target", null, 0, 1, Edge2Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getEdge2Edge_Source(), this.getNode2Node(), null, "source", null, 0, 1, Edge2Edge.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ initEClass(node2NodeEClass, Node2Node.class, "Node2Node", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getNode2Node_Node1(), theSimplegraphPackage.getNode(), null, "node1", null, 0, 1, Node2Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEReference(getNode2Node_Node2(), theSimplegraphPackage.getNode(), null, "node2", null, 0, 1, Node2Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getNode2Node_Label(), ecorePackage.getEString(), "label", null, 0, 1, Node2Node.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+
+ // Create resource
+ createResource(eNS_URI);
+
+ // Create annotations
+ // http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper
+ createEmofAnnotations();
+ // http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName
+ createEmof_1Annotations();
+ // http://www.eclipse.org/qvt#Domains
+ createQvtDomainsAnnotations();
+ }
+
+ /**
+ * Initializes the annotations for <b>http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createEmofAnnotations() {
+ String source = "http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeUpper";
+ addAnnotation
+ (getGraph2Graph_Graph1(),
+ source,
+ new String[] {
+ "body", "1"
+ });
+ addAnnotation
+ (getGraph2Graph_Graph2(),
+ source,
+ new String[] {
+ "body", "1"
+ });
+ addAnnotation
+ (getEdge2Edge_Edge1(),
+ source,
+ new String[] {
+ "body", "1"
+ });
+ addAnnotation
+ (getEdge2Edge_Edge2(),
+ source,
+ new String[] {
+ "body", "1"
+ });
+ addAnnotation
+ (getNode2Node_Node1(),
+ source,
+ new String[] {
+ "body", "1"
+ });
+ addAnnotation
+ (getNode2Node_Node2(),
+ source,
+ new String[] {
+ "body", "1"
+ });
+ }
+
+ /**
+ * Initializes the annotations for <b>http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createEmof_1Annotations() {
+ String source = "http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName";
+ addAnnotation
+ (getGraph2Graph_Graph1(),
+ source,
+ new String[] {
+ "body", "middle1"
+ });
+ addAnnotation
+ (getGraph2Graph_Graph2(),
+ source,
+ new String[] {
+ "body", "middle2"
+ });
+ addAnnotation
+ (getEdge2Edge_Edge1(),
+ source,
+ new String[] {
+ "body", "middle1"
+ });
+ addAnnotation
+ (getEdge2Edge_Edge2(),
+ source,
+ new String[] {
+ "body", "middle2"
+ });
+ addAnnotation
+ (getNode2Node_Node1(),
+ source,
+ new String[] {
+ "body", "middle1"
+ });
+ addAnnotation
+ (getNode2Node_Node2(),
+ source,
+ new String[] {
+ "body", "middle2"
+ });
+ }
+
+ /**
+ * Initializes the annotations for <b>http://www.eclipse.org/qvt#Domains</b>.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void createQvtDomainsAnnotations() {
+ String source = "http://www.eclipse.org/qvt#Domains";
+ addAnnotation
+ (getGraph2Graph_Graph1(),
+ source,
+ new String[] {
+ "referredDomain", "upperGraph"
+ });
+ addAnnotation
+ (getGraph2Graph_Graph2(),
+ source,
+ new String[] {
+ "referredDomain", "lowerGraph"
+ });
+ addAnnotation
+ (getEdge2Edge_Edge1(),
+ source,
+ new String[] {
+ "referredDomain", "upperGraph"
+ });
+ addAnnotation
+ (getEdge2Edge_Edge2(),
+ source,
+ new String[] {
+ "referredDomain", "lowerGraph"
+ });
+ addAnnotation
+ (getNode2Node_Node1(),
+ source,
+ new String[] {
+ "referredDomain", "upperGraph"
+ });
+ addAnnotation
+ (getNode2Node_Node2(),
+ source,
+ new String[] {
+ "referredDomain", "lowerGraph"
+ });
+ }
+
+} //Simplegraph2graphPackageImpl
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphAdapterFactory.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphAdapterFactory.java
new file mode 100644
index 000000000..f8d1bf17b
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphAdapterFactory.java
@@ -0,0 +1,176 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.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.jdt.annotation.Nullable;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.*;
+
+/**
+ * <!-- 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage
+ * @generated
+ */
+public class Simplegraph2graphAdapterFactory extends AdapterFactoryImpl {
+ /**
+ * The cached model package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static Simplegraph2graphPackage modelPackage;
+
+ /**
+ * Creates an instance of the adapter factory.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Simplegraph2graphAdapterFactory() {
+ if (modelPackage == null) {
+ modelPackage = Simplegraph2graphPackage.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 Simplegraph2graphSwitch<@Nullable Adapter> modelSwitch =
+ new Simplegraph2graphSwitch<@Nullable Adapter>() {
+ @Override
+ public Adapter caseGraph2Graph(Graph2Graph object) {
+ return createGraph2GraphAdapter();
+ }
+ @Override
+ public Adapter caseElement2Element(Element2Element object) {
+ return createElement2ElementAdapter();
+ }
+ @Override
+ public Adapter caseEdge2Edge(Edge2Edge object) {
+ return createEdge2EdgeAdapter();
+ }
+ @Override
+ public Adapter caseNode2Node(Node2Node object) {
+ return createNode2NodeAdapter();
+ }
+ @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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph <em>Graph2 Graph</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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Graph2Graph
+ * @generated
+ */
+ public Adapter createGraph2GraphAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element <em>Element2 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Element2Element
+ * @generated
+ */
+ public Adapter createElement2ElementAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge <em>Edge2 Edge</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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Edge2Edge
+ * @generated
+ */
+ public Adapter createEdge2EdgeAdapter() {
+ return null;
+ }
+
+ /**
+ * Creates a new adapter for an object of class '{@link org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node <em>Node2 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Node2Node
+ * @generated
+ */
+ public Adapter createNode2NodeAdapter() {
+ 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;
+ }
+
+} //Simplegraph2graphAdapterFactory
diff --git a/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphSwitch.java b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphSwitch.java
new file mode 100644
index 000000000..397a226c3
--- /dev/null
+++ b/tests/org.eclipse.qvtd.xtext.qvtcore.tests/src-gen/org/eclipse/qvtd/xtext/qvtcore/tests/upper2lower/simplegraph2graph/util/Simplegraph2graphSwitch.java
@@ -0,0 +1,177 @@
+/**
+ */
+package org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.jdt.annotation.Nullable;
+
+import org.eclipse.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.*;
+
+/**
+ * <!-- 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.qvtd.xtext.qvtcore.tests.upper2lower.simplegraph2graph.Simplegraph2graphPackage
+ * @generated
+ */
+public class Simplegraph2graphSwitch<@Nullable T> extends Switch<T> {
+ /**
+ * The cached model package
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected static Simplegraph2graphPackage modelPackage;
+
+ /**
+ * Creates an instance of the switch.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public Simplegraph2graphSwitch() {
+ if (modelPackage == null) {
+ modelPackage = Simplegraph2graphPackage.eINSTANCE;
+ }
+ }
+
+ /**
+ * Checks whether this is a switch for the given package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param ePackage the package in question.
+ * @return whether this is a switch for the given package.
+ * @generated
+ */
+ @Override
+ protected boolean isSwitchFor(EPackage ePackage) {
+ return ePackage == modelPackage;
+ }
+
+ /**
+ * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the first non-null result returned by a <code>caseXXX</code> call.
+ * @generated
+ */
+ @Override
+ protected T doSwitch(int classifierID, EObject theEObject) {
+ switch (classifierID) {
+ case Simplegraph2graphPackage.GRAPH2_GRAPH: {
+ Graph2Graph graph2Graph = (Graph2Graph)theEObject;
+ T result = caseGraph2Graph(graph2Graph);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case Simplegraph2graphPackage.ELEMENT2_ELEMENT: {
+ Element2Element element2Element = (Element2Element)theEObject;
+ T result = caseElement2Element(element2Element);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case Simplegraph2graphPackage.EDGE2_EDGE: {
+ Edge2Edge edge2Edge = (Edge2Edge)theEObject;
+ T result = caseEdge2Edge(edge2Edge);
+ if (result == null) result = caseElement2Element(edge2Edge);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ case Simplegraph2graphPackage.NODE2_NODE: {
+ Node2Node node2Node = (Node2Node)theEObject;
+ T result = caseNode2Node(node2Node);
+ if (result == null) result = caseElement2Element(node2Node);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
+ default: return defaultCase(theEObject);
+ }
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Graph2 Graph</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>Graph2 Graph</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseGraph2Graph(Graph2Graph object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Element2 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>Element2 Element</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseElement2Element(Element2Element object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Edge2 Edge</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>Edge2 Edge</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseEdge2Edge(Edge2Edge object) {
+ return null;
+ }
+
+ /**
+ * Returns the result of interpreting the object as an instance of '<em>Node2 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>Node2 Node</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseNode2Node(Node2Node 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;
+ }
+
+} //Simplegraph2graphSwitch

Back to the top