Add Sets.addAll() utility method.
Update to Maps.pulAll() per Scott.

Patch by: bobv
Review by: scottb

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@5908 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/util/collect/Maps.java b/dev/core/src/com/google/gwt/dev/util/collect/Maps.java
index 1cc6899..0d083a3 100644
--- a/dev/core/src/com/google/gwt/dev/util/collect/Maps.java
+++ b/dev/core/src/com/google/gwt/dev/util/collect/Maps.java
@@ -109,7 +109,7 @@
             K key = map.keySet().iterator().next();

             result.put(key, map.get(key));

             result.putAll(toAdd);

-            return normalize(result);

+            return result;

           }

           default:

             map.putAll(toAdd);

diff --git a/dev/core/src/com/google/gwt/dev/util/collect/Sets.java b/dev/core/src/com/google/gwt/dev/util/collect/Sets.java
index b98d3d8..b5179f8 100644
--- a/dev/core/src/com/google/gwt/dev/util/collect/Sets.java
+++ b/dev/core/src/com/google/gwt/dev/util/collect/Sets.java
@@ -15,6 +15,7 @@
  */

 package com.google.gwt.dev.util.collect;

 

+import java.util.Collection;

 import java.util.Collections;

 import java.util.Set;

 

@@ -51,6 +52,32 @@
     }

   }

 

+  public static <T> Set<T> addAll(Set<T> set, Collection<T> toAdd) {

+    switch (toAdd.size()) {

+      case 0:

+        return set;

+      case 1:

+        return add(set, toAdd.iterator().next());

+    }

+

+    switch (set.size()) {

+      case 0:

+        // Empty -> HashSet

+        return new HashSet<T>(toAdd);

+      case 1: {

+        // Singleton -> HashSet

+        Set<T> result = new HashSet<T>();

+        result.add(set.iterator().next());

+        result.addAll(toAdd);

+        return result;

+      }

+      default:

+        // HashSet

+        set.addAll(toAdd);

+        return set;

+    }

+  }

+

   public static <T> Set<T> create() {

     return Collections.emptySet();

   }