[532947] Generate metamodel xmi:ids lazily
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/QVTbasePackageImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/QVTbasePackageImpl.java
index 508cc2a..b1b712c 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/QVTbasePackageImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtbase/emf-gen/org/eclipse/qvtd/pivot/qvtbase/impl/QVTbasePackageImpl.java
@@ -18,7 +18,9 @@
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EValidator;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.utilities.LazyXMIidAssigningResourceImpl;
 import org.eclipse.qvtd.pivot.qvtbase.BaseModel;
 import org.eclipse.qvtd.pivot.qvtbase.Domain;
 import org.eclipse.qvtd.pivot.qvtbase.Function;
@@ -921,6 +923,27 @@
 
 		// Create resource
 		createResource(eNS_URI);
+		/*		XMLResource resource = new XMIResourceImpl(URI.createURI(eNS_URI))
+		{
+			@Override
+			public Map<String, EObject> getIDToEObjectMap() {
+				// TODO Auto-generated method stub
+				return super.getIDToEObjectMap();
+			}
+
+			@Override
+			protected EObject getEObjectByID(String id) {
+				// TODO Auto-generated method stub
+				return super.getEObjectByID(id);
+			}
+
+			@Override
+			protected boolean useIDs()
+			{
+				return eObjectToIDMap != null || idToEObjectMap != null;
+			}
+		};
+		resource.getContents().add(this); */
 
 		// Create annotations
 		// http://www.eclipse.org/emf/2002/Ecore
@@ -1056,4 +1079,13 @@
 		});
 	}
 
+	/**
+	 * Overridden to populate the idToEObjectMap/eObjectToIDMap maps when an attempt is made to use them.
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	protected Resource createResource(/*@NonNull*/ String uri) {
+		return LazyXMIidAssigningResourceImpl.createResource(uri, this);
+	}
 } //QVTbasePackageImpl
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/impl/QVTcorePackageImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/impl/QVTcorePackageImpl.java
index 48e92d3..d778614 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/impl/QVTcorePackageImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtcore/emf-gen/org/eclipse/qvtd/pivot/qvtcore/impl/QVTcorePackageImpl.java
@@ -19,7 +19,9 @@
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EValidator;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.utilities.LazyXMIidAssigningResourceImpl;
 import org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage;
 import org.eclipse.qvtd.pivot.qvtcore.Area;
 import org.eclipse.qvtd.pivot.qvtcore.Assignment;
@@ -1386,4 +1388,13 @@
 		});
 	}
 
+	/**
+	 * Overridden to populate the idToEObjectMap/eObjectToIDMap maps when an attempt is made to use them.
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	protected Resource createResource(/*@NonNull*/ String uri) {
+		return LazyXMIidAssigningResourceImpl.createResource(uri, this);
+	}
 } //QVTcorePackageImpl
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/evaluationstatus/impl/EvaluationStatusPackageImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/evaluationstatus/impl/EvaluationStatusPackageImpl.java
index 4d36a55..ba04c72 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/evaluationstatus/impl/EvaluationStatusPackageImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/evaluationstatus/impl/EvaluationStatusPackageImpl.java
@@ -15,7 +15,9 @@
 import org.eclipse.emf.ecore.EPackage;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.utilities.LazyXMIidAssigningResourceImpl;
 import org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage;
 import org.eclipse.qvtd.pivot.qvtimperative.QVTimperativePackage;
 import org.eclipse.qvtd.pivot.qvtimperative.evaluationstatus.AssociationStatus;
@@ -788,4 +790,13 @@
 		});
 	}
 
+	/**
+	 * Overridden to populate the idToEObjectMap/eObjectToIDMap maps when an attempt is made to use them.
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	protected Resource createResource(/*@NonNull*/ String uri) {
+		return LazyXMIidAssigningResourceImpl.createResource(uri, this);
+	}
 } //EvaluationStatusPackageImpl
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/impl/QVTimperativePackageImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/impl/QVTimperativePackageImpl.java
index 22e6d8a..3353703 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/impl/QVTimperativePackageImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtimperative/emf-gen/org/eclipse/qvtd/pivot/qvtimperative/impl/QVTimperativePackageImpl.java
@@ -18,7 +18,9 @@
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EValidator;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.utilities.LazyXMIidAssigningResourceImpl;
 import org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage;
 import org.eclipse.qvtd.pivot.qvtimperative.AddStatement;
 import org.eclipse.qvtd.pivot.qvtimperative.AppendParameter;
@@ -2023,4 +2025,13 @@
 		});
 	}
 
+	/**
+	 * Overridden to populate the idToEObjectMap/eObjectToIDMap maps when an attempt is made to use them.
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	protected Resource createResource(/*@NonNull*/ String uri) {
+		return LazyXMIidAssigningResourceImpl.createResource(uri, this);
+	}
 } //QVTimperativePackageImpl
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/impl/QVTrelationPackageImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/impl/QVTrelationPackageImpl.java
index f2a3fff..f8f9b53 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/impl/QVTrelationPackageImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtrelation/emf-gen/org/eclipse/qvtd/pivot/qvtrelation/impl/QVTrelationPackageImpl.java
@@ -18,7 +18,9 @@
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EValidator;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.utilities.LazyXMIidAssigningResourceImpl;
 import org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage;
 import org.eclipse.qvtd.pivot.qvtrelation.DomainPattern;
 import org.eclipse.qvtd.pivot.qvtrelation.Key;
@@ -1309,4 +1311,13 @@
 		});
 	}
 
+	/**
+	 * Overridden to populate the idToEObjectMap/eObjectToIDMap maps when an attempt is made to use them.
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	protected Resource createResource(/*@NonNull*/ String uri) {
+		return LazyXMIidAssigningResourceImpl.createResource(uri, this);
+	}
 } //QVTrelationPackageImpl
diff --git a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/QVTschedulePackageImpl.java b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/QVTschedulePackageImpl.java
index 96eaf93..934e316 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/QVTschedulePackageImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvtschedule/emf-gen/org/eclipse/qvtd/pivot/qvtschedule/impl/QVTschedulePackageImpl.java
@@ -22,7 +22,9 @@
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.ETypeParameter;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.utilities.LazyXMIidAssigningResourceImpl;
 import org.eclipse.qvtd.pivot.qvtbase.QVTbasePackage;
 import org.eclipse.qvtd.pivot.qvtschedule.AbstractDatum;
 import org.eclipse.qvtd.pivot.qvtschedule.RuleRegion;
@@ -2049,10 +2051,19 @@
 	protected void createEcoreAnnotations() {
 		String source = "http://www.eclipse.org/emf/2002/Ecore";
 		addAnnotation
-		  (this,
-		   source,
-		   new String[] {
-		   });
+		(this,
+			source,
+			new String[] {
+		});
 	}
 
+	/**
+	 * Overridden to populate the idToEObjectMap/eObjectToIDMap maps when an attempt is made to use them.
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	protected Resource createResource(/*@NonNull*/ String uri) {
+		return LazyXMIidAssigningResourceImpl.createResource(uri, this);
+	}
 } //QVTschedulePackageImpl
diff --git a/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/impl/QVTtemplatePackageImpl.java b/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/impl/QVTtemplatePackageImpl.java
index 79e2092..4bc1920 100644
--- a/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/impl/QVTtemplatePackageImpl.java
+++ b/plugins/org.eclipse.qvtd.pivot.qvttemplate/emf-gen/org/eclipse/qvtd/pivot/qvttemplate/impl/QVTtemplatePackageImpl.java
@@ -18,7 +18,9 @@
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.emf.ecore.EValidator;
 import org.eclipse.emf.ecore.impl.EPackageImpl;
+import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.ocl.pivot.PivotPackage;
+import org.eclipse.ocl.pivot.internal.utilities.LazyXMIidAssigningResourceImpl;
 import org.eclipse.qvtd.pivot.qvttemplate.CollectionTemplateExp;
 import org.eclipse.qvtd.pivot.qvttemplate.ObjectTemplateExp;
 import org.eclipse.qvtd.pivot.qvttemplate.PropertyTemplateItem;
@@ -748,4 +750,13 @@
 		});
 	}
 
+	/**
+	 * Overridden to populate the idToEObjectMap/eObjectToIDMap maps when an attempt is made to use them.
+	 *
+	 * @generated NOT
+	 */
+	@Override
+	protected Resource createResource(/*@NonNull*/ String uri) {
+		return LazyXMIidAssigningResourceImpl.createResource(uri, this);
+	}
 } //QVTtemplatePackageImpl