[no bug] Should create unique names for model group definition elements
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDElementCommand.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDElementCommand.java
index d520ec0..448f738 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDElementCommand.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/commands/AddXSDElementCommand.java
@@ -117,7 +117,7 @@
         xsdSchema = xsdModelGroupDefinition.getSchema();
         if (!isReference)
         {
-          xsdModelGroup.getContents().add(createXSDElementDeclaration());
+          xsdModelGroup.getContents().add(createXSDElementDeclarationForModelGroupDefinitions());
         }
         else
         {
@@ -125,7 +125,7 @@
         }
         formatChild(xsdModelGroupDefinition.getElement());
       }
-      else if (xsdComplexTypeDefinition == null && xsdModelGroup != null)
+      else if (xsdModelGroup != null && (xsdComplexTypeDefinition == null || xsdModelGroupDefinition == null) )
       {
         xsdSchema = xsdModelGroup.getSchema();
         beginRecording(xsdSchema.getElement());
@@ -175,10 +175,26 @@
 
     XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
 
+    XSDConcreteComponent comp = xsdModelGroup.getContainer();
     ArrayList usedAttributeNames = new ArrayList();
-    usedAttributeNames.addAll(XSDCommonUIUtils.getChildElements(xsdModelGroup));
+    usedAttributeNames.addAll(XSDCommonUIUtils.getChildElements(xsdModelGroup));    
+    while (comp != null)
+    {
+      if (comp instanceof XSDModelGroupDefinition)
+      {
+        usedAttributeNames.addAll(XSDCommonUIUtils.getAllAttributes((XSDModelGroupDefinition)comp));
+        break;
+      }
+      else if (comp instanceof XSDComplexTypeDefinition)
+      {
+        usedAttributeNames.addAll(XSDCommonUIUtils.getAllAttributes((XSDComplexTypeDefinition)comp));
+        usedAttributeNames.addAll(XSDCommonUIUtils.getInheritedAttributes((XSDComplexTypeDefinition)comp));
+        break;
+      }
+      comp = comp.getContainer();
+    }
     element.setName(XSDCommonUIUtils.createUniqueElementName(
-    		nameToAdd == null ? "NewElement" : nameToAdd , xsdSchema.getElementDeclarations())); //$NON-NLS-1$
+    		nameToAdd == null ? "NewElement" : nameToAdd , usedAttributeNames)); //$NON-NLS-1$
     element.setTypeDefinition(type);
 
     XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
@@ -230,6 +246,24 @@
     addedXSDConcreteComponent = element;
     return particle;
   }
+  
+  protected XSDParticle createXSDElementDeclarationForModelGroupDefinitions()
+  {
+    XSDSimpleTypeDefinition type = xsdModelGroup.getSchema().getSchemaForSchema().resolveSimpleTypeDefinition("string"); //$NON-NLS-1$
+
+    XSDElementDeclaration element = XSDFactory.eINSTANCE.createXSDElementDeclaration();
+
+    ArrayList usedAttributeNames = new ArrayList();
+    usedAttributeNames.addAll(XSDCommonUIUtils.getAllAttributes(xsdModelGroupDefinition));
+    element.setName(XSDCommonUIUtils.createUniqueElementName(
+        nameToAdd == null ? "NewElement" : nameToAdd , usedAttributeNames)); //$NON-NLS-1$
+    element.setTypeDefinition(type);
+
+    XSDParticle particle = XSDFactory.eINSTANCE.createXSDParticle();
+    particle.setContent(element);
+    addedXSDConcreteComponent = element;
+    return particle;
+  }
 
   protected XSDElementDeclaration createGlobalXSDElementDeclaration()
   {
diff --git a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java
index 9267805..88b497f 100644
--- a/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java
+++ b/bundles/org.eclipse.wst.xsd.ui/src-common/org/eclipse/wst/xsd/ui/internal/common/util/XSDCommonUIUtils.java
@@ -411,6 +411,13 @@
     return attributes;
   }
 
+  public static List getAllAttributes(XSDModelGroupDefinition xsdModelGroupDefinition)
+  {
+    List attributes = getChildElements(xsdModelGroupDefinition);
+
+    return attributes;
+  }
+  
   public static List getInheritedAttributes(XSDComplexTypeDefinition ct)
   {
     List attrs = new ArrayList();
@@ -428,7 +435,12 @@
   {
     return getChildElements(getModelGroup(ct));
   }
-
+  
+  public static List getChildElements(XSDModelGroupDefinition xsdModelGroupDefinition)
+  {
+    return getChildElements(xsdModelGroupDefinition.getModelGroup());
+  }
+  
   public static XSDModelGroup getModelGroup(XSDComplexTypeDefinition cType)
   {
     XSDParticle particle = cType.getComplexType();