Misc cleanup.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2477 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Array.java b/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Array.java
index 86adf44..ccd73ed 100644
--- a/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Array.java
+++ b/dev/core/super/com/google/gwt/dev/jjs/intrinsic/com/google/gwt/lang/Array.java
@@ -40,6 +40,13 @@
   private static Array protoTypeArray;
 
   /**
+   * Creates a copy of the specified array.
+   */
+  public static <T> T[] clone(T[] array) {
+    return cloneSubrange(array, 0, array.length);
+  }
+
+  /**
    * Creates a copy of a subrange of the specified array.
    */
   public static <T> T[] cloneSubrange(T[] array, int fromIndex, int toIndex) {
@@ -47,11 +54,18 @@
     Array result = arraySlice(a, fromIndex, toIndex);
     initValues(a.getClass(), a.typeId, a.queryId, result);
     // implicit type arg not inferred (as of JDK 1.5.0_07)
-    return Array.<T>asArray(result);
+    return Array.<T> asArray(result);
   }
 
   /**
-   * Creates a new array of the exact same type as a given array but with the
+   * Creates a new array of the exact same type and length as a given array.
+   */
+  public static <T> T[] clonify(T[] array) {
+    return clonify(array, array.length);
+  }
+
+  /**
+   * Creates an empty array of the exact same type as a given array, with the
    * specified length.
    */
   public static <T> T[] clonify(T[] array, int length) {
@@ -59,7 +73,7 @@
     Array result = createFromSeed(NULL_SEED_TYPE, length);
     initValues(a.getClass(), a.typeId, a.queryId, result);
     // implicit type arg not inferred (as of JDK 1.5.0_07)
-    return Array.<T>asArray(result);
+    return Array.<T> asArray(result);
   }
 
   /**
diff --git a/user/super/com/google/gwt/emul/java/util/ArrayList.java b/user/super/com/google/gwt/emul/java/util/ArrayList.java
index 39add41..b2597d7 100644
--- a/user/super/com/google/gwt/emul/java/util/ArrayList.java
+++ b/user/super/com/google/gwt/emul/java/util/ArrayList.java
@@ -185,6 +185,12 @@
     return size;
   }
 
+  @Override
+  public Object[] toArray() {
+    // TODO: Array.clone() variant
+    return super.toArray();
+  }
+  
   /*
    * Faster than the iterator-based implementation in AbstractCollection.
    */
diff --git a/user/super/com/google/gwt/emul/java/util/Arrays.java b/user/super/com/google/gwt/emul/java/util/Arrays.java
index 2f44c60..6259023 100644
--- a/user/super/com/google/gwt/emul/java/util/Arrays.java
+++ b/user/super/com/google/gwt/emul/java/util/Arrays.java
@@ -66,7 +66,7 @@
      */
     @Override
     public Object[] toArray() {
-      return toArray(Array.clonify(array, size()));
+      return toArray(Array.clonify(array));
     }
 
     /*
diff --git a/user/super/com/google/gwt/emul/java/util/MapEntryImpl.java b/user/super/com/google/gwt/emul/java/util/MapEntryImpl.java
index beac1d5..3690fc7 100644
--- a/user/super/com/google/gwt/emul/java/util/MapEntryImpl.java
+++ b/user/super/com/google/gwt/emul/java/util/MapEntryImpl.java
@@ -40,9 +40,9 @@
     return value;
   }
 
-  public V setValue(V object) {
-    V old = value;
-    value = object;
+  public V setValue(V value) {
+    V old = getValue();
+    this.value = value;
     return old;
   }
 }