[431597] Fix problems with *.genmodel extending *.xcore model
diff --git a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java
index 58f723a..34ecb98 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java
+++ b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenModelImpl.java
@@ -9133,9 +9133,9 @@
 
   protected void getMissingPackagesHelper(List<EPackage> ePackages, List<GenPackage> genPackages)
   {
-    for (GenPackage genPackage : genPackages)
+    for (int i = 0; i < genPackages.size(); ++i)
     {
-      EPackage ePackage = genPackage.getEcorePackage();
+      EPackage ePackage = genPackages.get(i).getEcorePackage();
       if (ePackage != null)
       {
         for (Iterator<EObject> j = ePackage.eAllContents(); j.hasNext();)
diff --git a/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java b/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java
index 902d1e4..a302c4f 100644
--- a/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java
+++ b/plugins/org.eclipse.emf.converter/src/org/eclipse/emf/converter/ui/contribution/base/ModelConverterPackagePage.java
@@ -83,6 +83,7 @@
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.util.EcoreUtil;
 import org.eclipse.emf.edit.provider.ItemProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider;
 import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
@@ -740,7 +741,8 @@
         {
           IFile file = (IFile)element;
           URI uri = URI.createPlatformResourceURI(file.getFullPath().toString(), true);
-          return "genmodel".equals(file.getFileExtension())
+          String fileExtension = file.getFileExtension();
+          return ("genmodel".equals(fileExtension) || "xcore".equals(fileExtension))
             && !file.getFullPath().equals(genModelPath)
             && !genModelURIs.contains(uri);
         }
@@ -762,7 +764,7 @@
       {
         URI genModelURI = URI.createPlatformResourceURI(files[i].getFullPath().toString(), true);
         Resource genModelResource = referencedGenModels.getResource(genModelURI, true);
-        GenModel genModel = (GenModel)genModelResource.getContents().get(0);
+        GenModel genModel = (GenModel)EcoreUtil.getObjectByType(genModelResource.getContents(), GenModelPackage.Literals.GEN_MODEL);
         genModels.add(genModel);
       }
       
diff --git a/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java b/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java
index 6d1d055..0e57b9e 100644
--- a/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java
+++ b/plugins/org.eclipse.emf.importer.ecore/src/org/eclipse/emf/importer/ecore/EcoreImporter.java
@@ -10,6 +10,7 @@
  */
 package org.eclipse.emf.importer.ecore;
 
+import java.util.Iterator;
 import java.util.List;
 
 import org.eclipse.emf.codegen.ecore.genmodel.GenPackage;
@@ -65,9 +66,18 @@
       }
       EcoreUtil.resolveAll(ecoreResourceSet);
 
+      List<EPackage> ePackages = getEPackages();
       for (Resource resource : ecoreResourceSet.getResources())
       {
-        getEPackages().addAll(EcoreUtil.<EPackage>getObjectsByType(resource.getContents(), EcorePackage.Literals.EPACKAGE));
+        ePackages.addAll(EcoreUtil.<EPackage>getObjectsByType(resource.getContents(), EcorePackage.Literals.EPACKAGE));
+      }
+      
+      for (Iterator<EPackage> i = ePackages.iterator(); i.hasNext(); )
+      {
+        if ("xcore.lang".equals(i.next().getNsURI()))
+        {
+          i.remove();
+        }
       }
 
       BasicDiagnostic diagnosticChain = 
@@ -76,7 +86,7 @@
            ConverterUtil.ACTION_MESSAGE_NONE,
            EcoreImporterPlugin.INSTANCE.getString("_UI_ErrorsWereDetectedEcore_message"),
            null);
-      for (EPackage ePackage : getEPackages())
+      for (EPackage ePackage : ePackages)
       {
         Diagnostician.INSTANCE.validate(ePackage, diagnosticChain);
       }