Simplify ArrayList.removeIf.

Change-Id: I9cb244537a128d5c06cbda6fd9ddb53b6372cfd0
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 6cca168..aba65df 100644
--- a/user/super/com/google/gwt/emul/java/util/ArrayList.java
+++ b/user/super/com/google/gwt/emul/java/util/ArrayList.java
@@ -206,21 +206,25 @@
   @Override
   public boolean removeIf(Predicate<? super E> filter) {
     checkNotNull(filter);
-    int length = array.length;
-    if (length == 0) {
-      return false;
-    }
-    E[] newArray = ArrayHelper.createFrom(array, length);
-    int i = 0;
-    for (E e : array) {
-      if (!filter.test(e)) {
-        newArray[i++] = e;
+
+    E[] newArray = null;
+    int newIndex = 0;
+    for (int index = 0; index < array.length; ++index) {
+      E e = array[index];
+
+      if (filter.test(e)) {
+        if (newArray == null) {
+          newArray = ArrayHelper.clone(array, 0, index);
+          newIndex = index;
+        }
+      } else if (newArray != null) {
+        newArray[newIndex++] = e;
       }
     }
-    if (i == length) {
+
+    if (newArray == null) {
       return false;
     }
-    ArrayHelper.setLength(newArray, i);
     array = newArray;
     return true;
   }