[478902] Copy the metamodeldescriptors collection before modifying it

Bug: 478902
Change-Id: I2c2c9e7a69cf27605003e9f6c161f4dc1666eff3
Signed-off-by: Cedric Brun <cedric.brun@obeo.fr>
diff --git a/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/internal/accessor/ecore/EcoreIntrinsicExtender.java b/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/internal/accessor/ecore/EcoreIntrinsicExtender.java
index c4cdda0..1ac76d2 100644
--- a/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/internal/accessor/ecore/EcoreIntrinsicExtender.java
+++ b/plugins/org.eclipse.sirius.ecore.extender/src/org/eclipse/sirius/ecore/extender/business/internal/accessor/ecore/EcoreIntrinsicExtender.java
@@ -42,6 +42,7 @@
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Multimap;
+import com.google.common.collect.Sets;
 
 /**
  * This metamodel Extender accesses the intrinsic data of an EObject.
@@ -433,10 +434,11 @@
 
     @Override
     public void updateMetamodels(final Collection<? extends MetamodelDescriptor> metamodelDescriptors) {
+        final Collection<? extends MetamodelDescriptor> metamodelDescriptorsCopy = Sets.newLinkedHashSet(metamodelDescriptors);        
         if (lastDescriptors != null) {
-            metamodelDescriptors.removeAll(lastDescriptors);
+            metamodelDescriptorsCopy.removeAll(lastDescriptors);
         }
-        final Iterator<? extends MetamodelDescriptor> it = metamodelDescriptors.iterator();
+        final Iterator<? extends MetamodelDescriptor> it = metamodelDescriptorsCopy.iterator();
         while (it.hasNext()) {
             final Object obj = it.next();
             if (obj instanceof EcoreMetamodelDescriptor) {
@@ -451,7 +453,7 @@
             }
 
         }
-        lastDescriptors = metamodelDescriptors;
+        lastDescriptors = metamodelDescriptorsCopy;
 
     }