Added the new <group> tag to XmlTest#toXml().
diff --git a/src/main/java/org/testng/xml/XmlTest.java b/src/main/java/org/testng/xml/XmlTest.java
index 09f5314..0ddcfea 100755
--- a/src/main/java/org/testng/xml/XmlTest.java
+++ b/src/main/java/org/testng/xml/XmlTest.java
@@ -1,6 +1,7 @@
 package org.testng.xml;
 
 import org.testng.TestNG;
+import org.testng.TestNGException;
 import org.testng.collections.Lists;
 import org.testng.collections.Maps;
 import org.testng.reporters.XMLStringBuffer;
@@ -472,7 +473,8 @@
     }
 
     // groups
-    if (!m_metaGroups.isEmpty() || !m_includedGroups.isEmpty() || !m_excludedGroups.isEmpty()) {
+    if (!m_metaGroups.isEmpty() || !m_includedGroups.isEmpty() || !m_excludedGroups.isEmpty()
+        || !m_xmlDependencyGroups.isEmpty()) {
       xsb.push("groups");
 
       // define
@@ -492,6 +494,7 @@
         xsb.pop("define");
       }
 
+      // run
       if (!m_includedGroups.isEmpty() || !m_excludedGroups.isEmpty()) {
         xsb.push("run");
 
@@ -512,6 +515,15 @@
         xsb.pop("run");
       }
 
+      // group dependencies
+      if (m_xmlDependencyGroups != null && ! m_xmlDependencyGroups.isEmpty()) {
+        xsb.push("dependencies");
+        for (Map.Entry<String, String> entry : m_xmlDependencyGroups.entrySet()) {
+          xsb.addEmptyElement("group", "name", entry.getKey(), "depends-on", entry.getValue());
+        }
+        xsb.pop("dependencies");
+      }
+
       xsb.pop("groups");
     }
 
@@ -824,7 +836,12 @@
   }
 
   public void addXmlDependencyGroup(String group, String dependsOn) {
-    m_xmlDependencyGroups.put(group, dependsOn);
+    if (! m_xmlDependencyGroups.containsKey(group)) {
+      m_xmlDependencyGroups.put(group, dependsOn);
+    } else {
+      throw new TestNGException("Duplicate group dependency found for group \"" + group + "\""
+          + ", use a space-separated list of groups in the \"depends-on\" attribute");
+    }
   }
 
   public Map<String, String> getXmlDependencyGroups() {