[550053] Introduce Dummy class to enable EMF generation of root EPackage
diff --git a/plugins/org.eclipse.m2m.qvt.oml/META-INF/MANIFEST.MF b/plugins/org.eclipse.m2m.qvt.oml/META-INF/MANIFEST.MF
index 7f98688..751e478 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.m2m.qvt.oml/META-INF/MANIFEST.MF
@@ -69,6 +69,9 @@
  org.eclipse.m2m.internal.qvt.oml.expressions.impl;x-internal:=true,
  org.eclipse.m2m.internal.qvt.oml.expressions.util;
   x-friends:="org.eclipse.m2m.qvt.oml.runtime",
+ org.eclipse.m2m.internal.qvt.oml.qvtoperational,
+ org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl,
+ org.eclipse.m2m.internal.qvt.oml.qvtoperational.util,
  org.eclipse.m2m.internal.qvt.oml.library;
   x-friends:="org.eclipse.m2m.qvt.oml.runtime,
    org.eclipse.m2m.tests.qvt.oml,
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/expressions/impl/ExpressionsPackageImpl.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/expressions/impl/ExpressionsPackageImpl.java
index fefab00..f3dffb2 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/expressions/impl/ExpressionsPackageImpl.java
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/expressions/impl/ExpressionsPackageImpl.java
@@ -1,11 +1,11 @@
 /**
  * Copyright (c) 2007, 2018 Borland Software Corporation and others.
- * 
+ *
  * All rights reserved. This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License v2.0
  * which accompanies this distribution, and is available at
  * http://www.eclipse.org/legal/epl-v20.html
- *   
+ *
  * Contributors:
  *     Borland Software Corporation - initial API and implementation
  *
@@ -24,7 +24,6 @@
 import org.eclipse.emf.ecore.EcorePackage;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
 import org.eclipse.m2m.internal.qvt.oml.expressions.Constructor;
-import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.m2m.internal.qvt.oml.expressions.ConstructorBody;
 import org.eclipse.m2m.internal.qvt.oml.expressions.ContextualProperty;
 import org.eclipse.m2m.internal.qvt.oml.expressions.DirectionKind;
@@ -50,6 +49,8 @@
 import org.eclipse.m2m.internal.qvt.oml.expressions.ResolveInExp;
 import org.eclipse.m2m.internal.qvt.oml.expressions.VarParameter;
 import org.eclipse.m2m.internal.qvt.oml.expressions.VisitableASTNode;
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage;
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.QVTOperationalPackageImpl;
 import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLPackage;
 import org.eclipse.ocl.types.TypesPackage;
 import org.eclipse.ocl.utilities.UtilitiesPackage;
@@ -256,36 +257,10 @@
 	 * @see org.eclipse.emf.ecore.EPackage.Registry
 	 * @see org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsPackage#eNS_URI
 	 * @see #init()
-	 * @generated NOT
 	 */
 	private ExpressionsPackageImpl() {
 		super(eNS_URI, ExpressionsFactory.eINSTANCE);
 
-		QVTO_ROOT_PACKAGE.getESubpackages().add(this);
-	}
-
-	/**
-	 * Root package of the QVT Operational model, which we have to "fake out"
-	 * because EMF will not generate it.
-	 */
-	public static final EPackage QVTO_ROOT_PACKAGE;
-	
-	static {
-        class QVTOPackageImpl extends EPackageImpl {
-			@Override
-			protected Resource createResource(String uri) {
-				return super.createResource(uri);
-			}
-		}
-        
-        QVTOPackageImpl qvtoPackage = new QVTOPackageImpl();
-        qvtoPackage.setName("qvtoperational"); //$NON-NLS-1$
-        qvtoPackage.setNsPrefix("qvtoperational"); //$NON-NLS-1$
-        qvtoPackage.setNsURI("http://www.eclipse.org/QVT/1.0.0/Operational"); //$NON-NLS-1$
-        qvtoPackage.createResource(qvtoPackage.getNsURI());
-		
-		QVTO_ROOT_PACKAGE = qvtoPackage;
-		EPackage.Registry.INSTANCE.put(QVTO_ROOT_PACKAGE.getNsURI(), QVTO_ROOT_PACKAGE);
 	}
 
 	/**
@@ -324,11 +299,17 @@
 		org.eclipse.ocl.expressions.ExpressionsPackage.eINSTANCE.eClass();
 		org.eclipse.ocl.ecore.EcorePackage.eINSTANCE.eClass();
 
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(QVTOperationalPackage.eNS_URI);
+		QVTOperationalPackageImpl theQVTOperationalPackage = (QVTOperationalPackageImpl)(registeredPackage instanceof QVTOperationalPackageImpl ? registeredPackage : QVTOperationalPackage.eINSTANCE);
+
 		// Create package meta-data objects
 		theExpressionsPackage.createPackageContents();
+		theQVTOperationalPackage.createPackageContents();
 
 		// Initialize created meta-data
 		theExpressionsPackage.initializePackageContents();
+		theQVTOperationalPackage.initializePackageContents();
 
 		// Mark meta-data to indicate it can't be changed
 		theExpressionsPackage.freeze();
@@ -1857,9 +1838,6 @@
 		addEEnumLiteral(importKindEEnum, ImportKind.EXTENSION);
 		addEEnumLiteral(importKindEEnum, ImportKind.ACCESS);
 
-		// Create resource
-		createResource(eNS_URI);
-
 		// Create annotations
 		// http://schema.omg.org/spec/MOF/2.0/emof.xml#Property.oppositeRoleName
 		createEmofAnnotations();
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/Dummy.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/Dummy.java
new file mode 100644
index 0000000..8e4de2b
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/Dummy.java
@@ -0,0 +1,38 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Dummy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <!-- begin-model-doc -->
+ * This dummy class ensures that GenModel generates the otherwise empty root EPackage
+ * <!-- end-model-doc -->
+ *
+ *
+ * @see org.eclipse.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage#getDummy()
+ * @model
+ * @generated
+ */
+public interface Dummy extends EObject {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+} // Dummy
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/QVTOperationalFactory.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/QVTOperationalFactory.java
new file mode 100644
index 0000000..18e808e
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/QVTOperationalFactory.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational;
+
+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.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage
+ * @generated
+ */
+public interface QVTOperationalFactory extends EFactory {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	QVTOperationalFactory eINSTANCE = org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.QVTOperationalFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Dummy</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Dummy</em>'.
+	 * @generated
+	 */
+	Dummy createDummy();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	QVTOperationalPackage getQVTOperationalPackage();
+
+} //QVTOperationalFactory
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/QVTOperationalPackage.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/QVTOperationalPackage.java
new file mode 100644
index 0000000..3979646
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/QVTOperationalPackage.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- 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 enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.m2m.internal.qvt.oml.qvtoperational.QVTOperationalFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface QVTOperationalPackage extends EPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "qvtoperational"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/QVT/1.0.0/Operational"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "qvtoperational"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	QVTOperationalPackage eINSTANCE = org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.QVTOperationalPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.DummyImpl <em>Dummy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.DummyImpl
+	 * @see org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.QVTOperationalPackageImpl#getDummy()
+	 * @generated
+	 */
+	int DUMMY = 0;
+
+	/**
+	 * The number of structural features of the '<em>Dummy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DUMMY_FEATURE_COUNT = 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.m2m.internal.qvt.oml.qvtoperational.Dummy <em>Dummy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Dummy</em>'.
+	 * @see org.eclipse.m2m.internal.qvt.oml.qvtoperational.Dummy
+	 * @generated
+	 */
+	EClass getDummy();
+
+	/**
+	 * 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
+	 */
+	QVTOperationalFactory getQVTOperationalFactory();
+
+	/**
+	 * <!-- 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 enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.DummyImpl <em>Dummy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.DummyImpl
+		 * @see org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl.QVTOperationalPackageImpl#getDummy()
+		 * @generated
+		 */
+		EClass DUMMY = eINSTANCE.getDummy();
+
+	}
+
+} //QVTOperationalPackage
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/DummyImpl.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/DummyImpl.java
new file mode 100644
index 0000000..150944e
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/DummyImpl.java
@@ -0,0 +1,55 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.EObjectImpl;
+
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.Dummy;
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dummy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DummyImpl extends EObjectImpl implements Dummy {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DummyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return QVTOperationalPackage.Literals.DUMMY;
+	}
+
+} //DummyImpl
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/QVTOperationalFactoryImpl.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/QVTOperationalFactoryImpl.java
new file mode 100644
index 0000000..e82e301
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/QVTOperationalFactoryImpl.java
@@ -0,0 +1,111 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational.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.m2m.internal.qvt.oml.qvtoperational.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class QVTOperationalFactoryImpl extends EFactoryImpl implements QVTOperationalFactory {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static QVTOperationalFactory init() {
+		try {
+			QVTOperationalFactory theQVTOperationalFactory = (QVTOperationalFactory)EPackage.Registry.INSTANCE.getEFactory(QVTOperationalPackage.eNS_URI);
+			if (theQVTOperationalFactory != null) {
+				return theQVTOperationalFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new QVTOperationalFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QVTOperationalFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case QVTOperationalPackage.DUMMY: return createDummy();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dummy createDummy() {
+		DummyImpl dummy = new DummyImpl();
+		return dummy;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QVTOperationalPackage getQVTOperationalPackage() {
+		return (QVTOperationalPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static QVTOperationalPackage getPackage() {
+		return QVTOperationalPackage.eINSTANCE;
+	}
+
+} //QVTOperationalFactoryImpl
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/QVTOperationalPackageImpl.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/QVTOperationalPackageImpl.java
new file mode 100644
index 0000000..15f91fd
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/impl/QVTOperationalPackageImpl.java
@@ -0,0 +1,212 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.m2m.internal.qvt.oml.expressions.impl.ExpressionsPackageImpl;
+
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.Dummy;
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.QVTOperationalFactory;
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage;
+
+import org.eclipse.m2m.qvt.oml.ecore.ImperativeOCL.ImperativeOCLPackage;
+
+import org.eclipse.ocl.expressions.ExpressionsPackage;
+
+import org.eclipse.ocl.types.TypesPackage;
+
+import org.eclipse.ocl.utilities.UtilitiesPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class QVTOperationalPackageImpl extends EPackageImpl implements QVTOperationalPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dummyEClass = 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.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private QVTOperationalPackageImpl() {
+		super(eNS_URI, QVTOperationalFactory.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 QVTOperationalPackage#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 QVTOperationalPackage init() {
+		if (isInited) return (QVTOperationalPackage)EPackage.Registry.INSTANCE.getEPackage(QVTOperationalPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredQVTOperationalPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		QVTOperationalPackageImpl theQVTOperationalPackage = registeredQVTOperationalPackage instanceof QVTOperationalPackageImpl ? (QVTOperationalPackageImpl)registeredQVTOperationalPackage : new QVTOperationalPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		ImperativeOCLPackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UtilitiesPackage.eINSTANCE.eClass();
+		ExpressionsPackage.eINSTANCE.eClass();
+		org.eclipse.ocl.ecore.EcorePackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsPackage.eNS_URI);
+		ExpressionsPackageImpl theExpressionsPackage_1 = (ExpressionsPackageImpl)(registeredPackage instanceof ExpressionsPackageImpl ? registeredPackage : org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theQVTOperationalPackage.createPackageContents();
+		theExpressionsPackage_1.createPackageContents();
+
+		// Initialize created meta-data
+		theQVTOperationalPackage.initializePackageContents();
+		theExpressionsPackage_1.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theQVTOperationalPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(QVTOperationalPackage.eNS_URI, theQVTOperationalPackage);
+		return theQVTOperationalPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getDummy() {
+		return dummyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QVTOperationalFactory getQVTOperationalFactory() {
+		return (QVTOperationalFactory)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
+		dummyEClass = createEClass(DUMMY);
+	}
+
+	/**
+	 * <!-- 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
+		org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsPackage theExpressionsPackage_1 = (org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsPackage)EPackage.Registry.INSTANCE.getEPackage(org.eclipse.m2m.internal.qvt.oml.expressions.ExpressionsPackage.eNS_URI);
+
+		// Add subpackages
+		getESubpackages().add(theExpressionsPackage_1);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes and features; add operations and parameters
+		initEClass(dummyEClass, Dummy.class, "Dummy", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //QVTOperationalPackageImpl
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/util/QVTOperationalAdapterFactory.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/util/QVTOperationalAdapterFactory.java
new file mode 100644
index 0000000..b0f9442
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/util/QVTOperationalAdapterFactory.java
@@ -0,0 +1,136 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational.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.m2m.internal.qvt.oml.qvtoperational.*;
+
+/**
+ * <!-- 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.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage
+ * @generated
+ */
+public class QVTOperationalAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static QVTOperationalPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QVTOperationalAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = QVTOperationalPackage.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 QVTOperationalSwitch<Adapter> modelSwitch =
+		new QVTOperationalSwitch<Adapter>() {
+			@Override
+			public Adapter caseDummy(Dummy object) {
+				return createDummyAdapter();
+			}
+			@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.m2m.internal.qvt.oml.qvtoperational.Dummy <em>Dummy</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.m2m.internal.qvt.oml.qvtoperational.Dummy
+	 * @generated
+	 */
+	public Adapter createDummyAdapter() {
+		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;
+	}
+
+} //QVTOperationalAdapterFactory
diff --git a/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/util/QVTOperationalSwitch.java b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/util/QVTOperationalSwitch.java
new file mode 100644
index 0000000..751a2b9
--- /dev/null
+++ b/plugins/org.eclipse.m2m.qvt.oml/_generated/org/eclipse/m2m/internal/qvt/oml/qvtoperational/util/QVTOperationalSwitch.java
@@ -0,0 +1,126 @@
+/**
+ * Copyright (c) 2007 Borland Software Corporation
+ * 
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ *   
+ * Contributors:
+ *     Borland Software Corporation - initial API and implementation
+ */
+package org.eclipse.m2m.internal.qvt.oml.qvtoperational.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.m2m.internal.qvt.oml.qvtoperational.*;
+
+/**
+ * <!-- 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.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage
+ * @generated
+ */
+public class QVTOperationalSwitch<T> extends Switch<T> {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final String copyright = "Copyright (c) 2007 Borland Software Corporation\r\n\r\nAll rights reserved. This program and the accompanying materials\r\nare made available under the terms of the Eclipse Public License v2.0\r\nwhich accompanies this distribution, and is available at\r\nhttp://www.eclipse.org/legal/epl-v20.html\r\n  \r\nContributors:\r\n    Borland Software Corporation - initial API and implementation"; //$NON-NLS-1$
+
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static QVTOperationalPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public QVTOperationalSwitch() {
+		if (modelPackage == null) {
+			modelPackage = QVTOperationalPackage.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 QVTOperationalPackage.DUMMY: {
+				Dummy dummy = (Dummy)theEObject;
+				T result = caseDummy(dummy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dummy</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>Dummy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDummy(Dummy 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;
+	}
+
+} //QVTOperationalSwitch
diff --git a/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.ecore b/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.ecore
index 52f222a..81a5afc 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.ecore
+++ b/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.ecore
@@ -1,7 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="qvtoperational" nsURI="http://www.eclipse.org/qvt/1.0.0/Operational"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="qvtoperational" nsURI="http://www.eclipse.org/QVT/1.0.0/Operational"
     nsPrefix="qvtoperational">
+  <eClassifiers xsi:type="ecore:EClass" name="Dummy">
+    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
+      <details key="documentation" value="This dummy class ensures that GenModel generates the otherwise empty root EPackage"/>
+    </eAnnotations>
+  </eClassifiers>
   <eSubpackages name="expressions" nsURI="http://www.eclipse.org/qvt/1.0.0/Operational/Expressions"
       nsPrefix="qvtoperational.expr">
     <eClassifiers xsi:type="ecore:EClass" name="Constructor" eSuperTypes="#//expressions/ImperativeOperation">
diff --git a/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.genmodel b/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.genmodel
index aafe5dd..0225aeb 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.genmodel
+++ b/plugins/org.eclipse.m2m.qvt.oml/model/QVTOperational.genmodel
@@ -10,6 +10,7 @@
   <foreignModel>QVTOperational.ecore</foreignModel>
   <genPackages prefix="QVTOperational" basePackage="org.eclipse.m2m.internal.qvt.oml"
       disposableProviderFactory="true" ecorePackage="QVTOperational.ecore#/">
+    <genClasses ecoreClass="QVTOperational.ecore#//Dummy"/>
     <nestedGenPackages prefix="Expressions" basePackage="org.eclipse.m2m.internal.qvt.oml"
         disposableProviderFactory="true" ecorePackage="QVTOperational.ecore#//expressions">
       <genEnums typeSafeEnumCompatible="false" ecoreEnum="QVTOperational.ecore#//expressions/DirectionKind">
@@ -22,14 +23,16 @@
         <genEnumLiterals ecoreEnumLiteral="QVTOperational.ecore#//expressions/ImportKind/access"/>
       </genEnums>
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/Constructor">
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Constructor/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Constructor/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitConstructor(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/Constructor/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Constructor/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Constructor/accept/U"/>
         </genOperations>
       </genClasses>
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/ConstructorBody">
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ConstructorBody/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ConstructorBody/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitConstructorBody(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ConstructorBody/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ConstructorBody/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ConstructorBody/accept/U"/>
@@ -41,14 +44,16 @@
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ContextualProperty/initExpression"/>
         <genFeatures notify="false" createChild="false" propertySortChoices="true"
             ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ContextualProperty/overridden"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ContextualProperty/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ContextualProperty/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitContextualProperty(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ContextualProperty/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ContextualProperty/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ContextualProperty/accept/U"/>
         </genOperations>
       </genClasses>
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/EntryOperation">
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/EntryOperation/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/EntryOperation/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitEntryOperation(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/EntryOperation/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/EntryOperation/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/EntryOperation/accept/U"/>
@@ -56,7 +61,8 @@
       </genClasses>
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/Helper">
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTOperational.ecore#//expressions/Helper/isQuery"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Helper/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Helper/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitHelper(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/Helper/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Helper/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Helper/accept/U"/>
@@ -72,14 +78,16 @@
         <genFeatures notify="false" createChild="false" propertySortChoices="true"
             ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ImperativeOperation/overridden"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ImperativeOperation/result"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ImperativeOperation/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ImperativeOperation/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitImperativeOperation(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ImperativeOperation/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ImperativeOperation/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ImperativeOperation/accept/U"/>
         </genOperations>
       </genClasses>
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/Library">
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Library/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Library/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitLibrary(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/Library/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Library/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Library/accept/U"/>
@@ -88,7 +96,8 @@
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/MappingBody">
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/MappingBody/endSection"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/MappingBody/initSection"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/MappingBody/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/MappingBody/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitMappingBody(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/MappingBody/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/MappingBody/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/MappingBody/accept/U"/>
@@ -96,7 +105,8 @@
       </genClasses>
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/MappingCallExp">
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTOperational.ecore#//expressions/MappingCallExp/isStrict"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/MappingCallExp/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/MappingCallExp/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitMappingCallExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/MappingCallExp/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/MappingCallExp/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/MappingCallExp/accept/U"/>
@@ -111,7 +121,8 @@
             ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/MappingOperation/merged"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/MappingOperation/when"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/MappingOperation/where"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/MappingOperation/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/MappingOperation/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitMappingOperation(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/MappingOperation/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/MappingOperation/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/MappingOperation/accept/U"/>
@@ -126,7 +137,8 @@
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ModelType/additionalCondition"/>
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTOperational.ecore#//expressions/ModelType/conformanceKind"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ModelType/metamodel"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ModelType/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ModelType/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitModelType(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ModelType/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ModelType/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ModelType/accept/U"/>
@@ -141,7 +153,8 @@
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/Module/ownedTag"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/Module/ownedVariable"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/Module/usedModelType"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Module/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/Module/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitModule(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/Module/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Module/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/Module/accept/U"/>
@@ -154,7 +167,8 @@
             ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ModuleImport/importedModule"/>
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTOperational.ecore#//expressions/ModuleImport/kind"/>
         <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ModuleImport/module"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ModuleImport/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ModuleImport/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitModuleImport(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ModuleImport/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ModuleImport/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ModuleImport/accept/U"/>
@@ -164,7 +178,8 @@
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ObjectExp/body"/>
         <genFeatures notify="false" createChild="false" propertySortChoices="true"
             ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ObjectExp/referredObject"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ObjectExp/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ObjectExp/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitObjectExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ObjectExp/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ObjectExp/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ObjectExp/accept/U"/>
@@ -174,7 +189,8 @@
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/OperationBody/content"/>
         <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/OperationBody/operation"/>
         <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/OperationBody/variable"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/OperationBody/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/OperationBody/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitOperationBody(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/OperationBody/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/OperationBody/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/OperationBody/accept/U"/>
@@ -195,7 +211,8 @@
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTOperational.ecore#//expressions/ResolveExp/one"/>
         <genFeatures notify="false" createChild="false" propertySortChoices="true"
             ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ResolveExp/target"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ResolveExp/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ResolveExp/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitResolveExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ResolveExp/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ResolveExp/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ResolveExp/accept/U"/>
@@ -204,7 +221,8 @@
       <genClasses ecoreClass="QVTOperational.ecore#//expressions/ResolveInExp">
         <genFeatures notify="false" createChild="false" propertySortChoices="true"
             ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/ResolveInExp/inMapping"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ResolveInExp/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/ResolveInExp/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitResolveInExp(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/ResolveInExp/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ResolveInExp/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/ResolveInExp/accept/U"/>
@@ -214,7 +232,8 @@
         <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/VarParameter/ctxOwner"/>
         <genFeatures createChild="false" ecoreFeature="ecore:EAttribute QVTOperational.ecore#//expressions/VarParameter/kind"/>
         <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference QVTOperational.ecore#//expressions/VarParameter/resOwner"/>
-        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/VarParameter/accept">
+        <genOperations ecoreOperation="QVTOperational.ecore#//expressions/VarParameter/accept"
+            body="if(v instanceof org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) {&#xD;&#xA;  @SuppressWarnings(&quot;unchecked&quot;)    &#x9;&#x9;&#xD;&#xA;  org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor&lt;T> visitorExt = (org.eclipse.m2m.internal.qvt.oml.expressions.util.QVTOperationalVisitor) v;    &#x9;&#xD;&#xA;  return visitorExt.visitVarParameter(this);&#xD;&#xA;}&#xD;&#xA;return org.eclipse.m2m.internal.qvt.oml.expressions.util.ForeignVisitorDefaultValue.getDefaultValueForVisitor(v);">
           <genParameters ecoreParameter="QVTOperational.ecore#//expressions/VarParameter/accept/v"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/VarParameter/accept/T"/>
           <genTypeParameters ecoreTypeParameter="QVTOperational.ecore#//expressions/VarParameter/accept/U"/>
diff --git a/plugins/org.eclipse.m2m.qvt.oml/plugin.xml b/plugins/org.eclipse.m2m.qvt.oml/plugin.xml
index 31fa0c9..408c121 100644
--- a/plugins/org.eclipse.m2m.qvt.oml/plugin.xml
+++ b/plugins/org.eclipse.m2m.qvt.oml/plugin.xml
@@ -19,6 +19,14 @@
       genModel = "model/trace.genmodel" /> 
  </extension>
  
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated QVTOperational -->
+      <package
+            uri="http://www.eclipse.org/QVT/1.0.0/Operational"
+            class="org.eclipse.m2m.internal.qvt.oml.qvtoperational.QVTOperationalPackage"
+            genModel="model/QVTOperational.genmodel"/>
+   </extension>
+
  <extension point="org.eclipse.emf.ecore.generated_package">
    <package 
       uri = "http://www.eclipse.org/qvt/1.0.0/Operational/Expressions"