Remove emul tests depdency on GWT code.

Change-Id: I90b28f91406e2b8f204c488acc8e3ad492717bd6
diff --git a/user/super/com/google/gwt/emul/java/util/Collections.java b/user/super/com/google/gwt/emul/java/util/Collections.java
index e89cee6..ea8587c 100644
--- a/user/super/com/google/gwt/emul/java/util/Collections.java
+++ b/user/super/com/google/gwt/emul/java/util/Collections.java
@@ -18,6 +18,7 @@
 import static javaemul.internal.Coercions.ensureInt;
 import static javaemul.internal.InternalPreconditions.checkArgument;
 import static javaemul.internal.InternalPreconditions.checkElementIndex;
+import static javaemul.internal.InternalPreconditions.checkNotNull;
 
 import java.io.Serializable;
 
@@ -1186,6 +1187,7 @@
    */
   @SuppressWarnings("unchecked")
   public static void rotate(List<?> lst, int dist) {
+    checkNotNull(lst);
     int size = lst.size();
 
     // Rotating an empty collection results in the same empty collection
diff --git a/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java b/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
index fade8c5..6b76b0e 100644
--- a/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2008 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.emultest.java.lang;
 
-import com.google.gwt.core.client.GWT;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.testing.TestUtils;
 
@@ -24,10 +23,10 @@
 /**
  * This test verifies that the static evaluation performed by the compiler
  * on constant string expressions is correct.
- * 
+ *
  * TODO: this is just copied from the old StringTest before it was improved,
  *     but we need to go through and remove tests that do not actually
- *     test the compiler. 
+ *     test the compiler.
  */
 public class CompilerConstantStringTest extends GWTTestCase {
 
@@ -115,12 +114,12 @@
 
   /**
    * Tests hashing with strings.
-   * 
+   *
    * The specific strings used in this test used to trigger failures because we
    * use a JavaScript object as a hash map to cache the computed hash codes.
    * This conflicts with built-in properties defined on objects -- see issue
    * #631.
-   * 
+   *
    */
   public void testHashCode() {
     String[] testStrings = {
@@ -251,7 +250,7 @@
   public void testSplit_emptyExpr() {
     // TODO(rluble):  implement JDK8 string.split semantics and fix test.
     // See issue 8913.
-    String[] expected = (!GWT.isScript() && TestUtils.getJdkVersion() > 7) ?
+    String[] expected = (TestUtils.getJdkVersion() > 7) ?
         new String[] {"a", "b", "c", "x", "x", "d", "e", "x", "f", "x"} :
         new String[] {"", "a", "b", "c", "x", "x", "d", "e", "x", "f", "x"};
     compareList("emptyRegexSplit", expected, "abcxxdexfx".split(""));
diff --git a/user/test/com/google/gwt/emultest/java/lang/StringTest.java b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
index db7efd2..33c39b1 100644
--- a/user/test/com/google/gwt/emultest/java/lang/StringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
@@ -15,8 +15,6 @@
  */
 package com.google.gwt.emultest.java.lang;
 
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.testing.TestUtils;
 
@@ -161,17 +159,17 @@
     assertEquals("bcd", str);
     try {
       new String(bytes, 1, 6);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, -1, 2);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, 6, 2);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
   }
@@ -191,32 +189,32 @@
     assertEquals("ßçÐ", str);
     try {
       new String(bytes, 1, 6, encoding);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, -1, 2, encoding);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, 6, 2, encoding);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, 1, 6, Charset.forName(encoding));
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, -1, 2, Charset.forName(encoding));
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, 6, 2, Charset.forName(encoding));
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
   }
@@ -237,32 +235,32 @@
     assertEquals("ßçÐ", str);
     try {
       new String(bytes, 2, 12, encoding);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, -1, 2, encoding);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, 12, 2, encoding);
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, 2, 12, Charset.forName(encoding));
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, -1, 2, Charset.forName(encoding));
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
     try {
       new String(bytes, 12, 2, Charset.forName(encoding));
-      assertTrue("Should have thrown IOOB in Development Mode", GWT.isScript());
+      assertTrue("Should have thrown IOOB in Development Mode", !TestUtils.isJvm());
     } catch (IndexOutOfBoundsException expected) {
     }
   }
@@ -667,7 +665,7 @@
 
   public void testSplit_emptyExpr() {
     // TODO(rluble):  implement JDK8 string.split semantics and fix test.
-    String[] expected = (!GWT.isScript() && TestUtils.getJdkVersion() > 7) ?
+    String[] expected = (TestUtils.getJdkVersion() > 7) ?
         new String[] {"a", "b", "c", "x", "x", "d", "e", "x", "f", "x"} :
         new String[] {"", "a", "b", "c", "x", "x", "d", "e", "x", "f", "x"};
     compareList("emptyRegexSplit", expected, "abcxxdexfx".split(""));
@@ -706,7 +704,7 @@
     assertEquals("concat with str.toString()", "0abcd", "0" + str.toString() + "d");
 
     // issue 4301
-    Object s = TRUE ? "abc" : JavaScriptObject.createObject();
+    Object s = TRUE ? "abc" : createJavaScriptObject();
     assertTrue("issue4301", isJsStringValue(s.toString()));
     assertSame("s same as s.toString()", s, s.toString());
   }
@@ -818,4 +816,8 @@
     return Character.toString(from);
   }
 
+  private static native Object createJavaScriptObject() /*-{
+    return {};
+  }-*/;
+
 }
diff --git a/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java b/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java
index 474ce3a..9d2b7fc 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigDecimalCompareTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2009 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -21,15 +21,15 @@
  * licenses this file to You under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.
- * 
+ *
  * INCLUDES MODIFICATIONS BY GOOGLE.
  */
 /**
@@ -37,8 +37,8 @@
  */
 package com.google.gwt.emultest.java.math;
 
-import com.google.gwt.core.client.GWT;
 import com.google.gwt.emultest.java.util.EmulTestBase;
+import com.google.gwt.testing.TestUtils;
 
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -390,7 +390,7 @@
    * negate(MathContext) for a negative BigDecimal.
    */
   public void testNegateMathContextNegative() {
-    if (!GWT.isScript()) {
+    if (TestUtils.isJvm()) {
       // OpenJDK fails this test, so for now we only run it in Production Mode
       return;
     }
@@ -411,7 +411,7 @@
    * negate(MathContext) for a positive BigDecimal.
    */
   public void testNegateMathContextPositive() {
-    if (!GWT.isScript()) {
+    if (TestUtils.isJvm()) {
       // OpenJDK fails this test, so for now we only run it in Production Mode
       return;
     }
diff --git a/user/test/com/google/gwt/emultest/java/math/BigIntegerConstructorsTest.java b/user/test/com/google/gwt/emultest/java/math/BigIntegerConstructorsTest.java
index a3f77aa..a7757e8 100644
--- a/user/test/com/google/gwt/emultest/java/math/BigIntegerConstructorsTest.java
+++ b/user/test/com/google/gwt/emultest/java/math/BigIntegerConstructorsTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2009 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -21,15 +21,15 @@
  * licenses this file to You under the Apache License, Version 2.0 (the
  * "License"); you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.
- * 
+ *
  * INCLUDES MODIFICATIONS BY GOOGLE.
  */
 /**
@@ -37,8 +37,8 @@
  */
 package com.google.gwt.emultest.java.math;
 
-import com.google.gwt.core.client.GWT;
 import com.google.gwt.emultest.java.util.EmulTestBase;
+import com.google.gwt.testing.TestUtils;
 
 import java.math.BigInteger;
 import java.util.Random;
@@ -782,7 +782,7 @@
    * Test internal static factory method.
    */
   public void testValueOfDouble() {
-    if (!GWT.isScript()) {
+    if (TestUtils.isJvm()) {
       // JRE implementation doesn't have the method tested here
       return;
     }
diff --git a/user/test/com/google/gwt/emultest/java/util/CollectionsTest.java b/user/test/com/google/gwt/emultest/java/util/CollectionsTest.java
index 77c2e1a..74cd10f 100644
--- a/user/test/com/google/gwt/emultest/java/util/CollectionsTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/CollectionsTest.java
@@ -15,8 +15,6 @@
  */
 package com.google.gwt.emultest.java.util;
 
-import com.google.gwt.core.client.JavaScriptException;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -290,7 +288,7 @@
     try {
       Collections.rotate(null, 0);
       fail("Collections.rotate(null, distance) should throw NullPointerException");
-    } catch (NullPointerException | JavaScriptException expected) {
+    } catch (NullPointerException expected) {
       // Expected
     }
     // Test optimized RandomAccess code path
diff --git a/user/test/com/google/gwt/emultest/java/util/DateTest.java b/user/test/com/google/gwt/emultest/java/util/DateTest.java
index 932c8fd..df9cd70 100644
--- a/user/test/com/google/gwt/emultest/java/util/DateTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/DateTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2008 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -15,8 +15,8 @@
  */
 package com.google.gwt.emultest.java.util;
 
-import com.google.gwt.core.client.GWT;
 import com.google.gwt.junit.client.GWTTestCase;
+import com.google.gwt.testing.TestUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -540,7 +540,7 @@
   public void testToGMTString() {
 
     // We can't rely on the JRE's toString, as it is an implementation detail.
-    if (GWT.isScript()) {
+    if (!TestUtils.isJvm()) {
       // /////////////////////////////
       // Past
       // /////////////////////////////
@@ -561,7 +561,7 @@
   public void testToLocaleString() {
 
     // We can't rely on the JRE's toString, as it is an implementation detail.
-    if (GWT.isScript()) {
+    if (!TestUtils.isJvm()) {
       // /////////////////////////////
       // Past
       // /////////////////////////////
@@ -581,7 +581,7 @@
   public void testToString() {
 
     // We can't rely on the JRE's toString, as it is an implementation detail.
-    if (GWT.isScript()) {
+    if (!TestUtils.isJvm()) {
       // /////////////////////////////
       // Past
       // /////////////////////////////
@@ -647,7 +647,7 @@
   // Month and date of days with time shifts
   private ArrayList<Integer> timeShiftMonth = new ArrayList<Integer>();
   private ArrayList<Integer> timeShiftDate = new ArrayList<Integer>();
-  
+
   private boolean containsTimeShift(Date start, int days) {
     long startTime = start.getTime();
     Date end = new Date();
@@ -666,12 +666,12 @@
       timeShiftDate.add(start.getDate());
       return;
     }
-    
+
     // Recurse over the first half of the period
     if (containsTimeShift(start, days / 2)) {
       findTimeShift(start, days / 2);
     }
-    
+
     // Recurse over the second half of the period
     Date mid = new Date();
     mid.setTime(start.getTime());
@@ -724,7 +724,7 @@
     for (int i = 0; i < numShifts; i++) {
       int month = timeShiftMonth.get(i);
       int startDay = timeShiftDate.get(i);
-      
+
       for (int day = startDay; day <= startDay + 1; day++) {
         for (int hour = 0; hour < 24; hour++) {
           Date d = new Date(year - 1900, month, day, hour, 0, 0);
@@ -744,7 +744,7 @@
 
   /**
    * Check if daylight saving time occurs on the date.
-   * 
+   *
    * @param date the date to check
    * @return true if DST occurs on the date, false if not
    */
@@ -762,12 +762,12 @@
     if (!findClockBackwardTime(2009, monthDayHour)) {
       return;
     }
-    
+
     Date d;
     int month = monthDayHour[0];
     int day = monthDayHour[1];
     int hour = monthDayHour[2];
-    
+
     // Check that this is the later of the two times having the
     // same hour:minute:second
     d = new Date(2009 - 1900, month, day, hour, 30, 0);
diff --git a/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java b/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
index d605394..d6bc22c 100644
--- a/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2008 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.emultest.java.util;
 
-import com.google.gwt.core.client.GWT;
+import com.google.gwt.testing.TestUtils;
 
 import org.apache.commons.collections.TestMap;
 
@@ -104,7 +104,7 @@
 
   /**
    * Check the state of a newly constructed, empty IdentityHashMap.
-   * 
+   *
    * @param hashMap
    */
   private static void checkEmptyHashMapAssumptions(IdentityHashMap hashMap) {
@@ -502,7 +502,7 @@
 
     hashMap1.put(new Foo(), VALUE_1);
     hashMap2.put(new Foo(), VALUE_1);
-    if (GWT.isScript()) {
+    if (!TestUtils.isJvm()) {
       // Only reliable in Production Mode since Development Mode can have
       // identity hash collisions.
       assertFalse(hashMap1.hashCode() == hashMap2.hashCode());
diff --git a/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java b/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
index a9152ab..bbbdb40 100644
--- a/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2006 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.emultest.java.util;
 
-import com.google.gwt.core.client.GWT;
+import com.google.gwt.testing.TestUtils;
 
 import org.apache.commons.collections.TestMap;
 
@@ -117,7 +117,7 @@
 
   /**
    * Check the state of a newly constructed, empty LinkedHashMap.
-   * 
+   *
    * @param hashMap
    */
   private static void checkEmptyLinkedHashMapAssumptions(LinkedHashMap<?, ?> hashMap) {
@@ -754,7 +754,7 @@
    * @return the copy
    */
   private <K, V> LinkedHashMap<K, V> cloneLinkedHashMap(LinkedHashMap<K, V> hashMap) {
-    if (GWT.isScript()) {
+    if (!TestUtils.isJvm()) {
       return new LinkedHashMap<K, V>(hashMap);
     } else {
       LinkedHashMap<K, V> m = new LinkedHashMap<K, V>();
diff --git a/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java b/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java
index a6cc002..c8cc026 100644
--- a/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/TreeMapTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2008 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.emultest.java.util;
 
-import com.google.gwt.core.client.GWT;
 import com.google.gwt.testing.TestUtils;
 
 import org.apache.commons.collections.TestMap;
@@ -39,10 +38,10 @@
 
 /**
  * Tests <code>TreeMap</code>.
- * 
+ *
  * @param <K> The key type for the underlying TreeMap
  * @param <V> The value type for the underlying TreeMap
- * 
+ *
  * TODO(jat): this whole structure needs work. Ideally we would port a new
  * Apache collections test to GWT, but that is not an insignificant amount of
  * work.
@@ -64,7 +63,7 @@
 
   /**
    * Verify a Collection is explicitly and implicitly empty.
-   * 
+   *
    * @param collection
    */
   @SuppressWarnings("unchecked")
@@ -78,7 +77,7 @@
 
   /**
    * Verify a Map is explicitly and implicitly empty.
-   * 
+   *
    * @param map
    */
   private static <K, V> void _assertEmpty(Map<K, V> map) {
@@ -95,7 +94,7 @@
    * Verify that two Collections are deeply equivalent. Some of the Sets that
    * need to be verified do not implement a sensible equals method
    * (TreeMap.values for example).
-   * 
+   *
    * @param expected
    * @param actual
    */
@@ -116,7 +115,7 @@
 
   /**
    * Verify that two Maps are deeply equivalent.
-   * 
+   *
    * @param expected
    * @param actual
    */
@@ -134,7 +133,7 @@
 
   /**
    * Verify that two SortedMaps are deeply equivalent.
-   * 
+   *
    * @param expected
    * @param actual
    */
@@ -257,7 +256,7 @@
 
   /**
    * Test method for 'java.util.Map.clear()'.
-   * 
+   *
    * @see java.util.Map#clear()
    */
   public void testClear() {
@@ -275,7 +274,7 @@
 
   /**
    * Test method for 'java.util.Map.clear()'.
-   * 
+   *
    * @see java.util.Map#clear()
    */
   public void testClear_throwsUnsupportedOperationException() {
@@ -313,7 +312,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.comparator()'.
-   * 
+   *
    * @see java.util.SortedMap#comparator()
    */
   public void testComparator() {
@@ -327,7 +326,7 @@
 
   /**
    * Test method for default constructor.
-   * 
+   *
    * @see java.util.TreeMap#TreeMap()
    */
   public void testConstructor() {
@@ -337,7 +336,7 @@
 
   /**
    * Test method for 'java.util.TreeMap.TreeMap(Comparator)'.
-   * 
+   *
    * @see java.util.TreeMap#TreeMap(Comparator)
    */
   public void testConstructor_comparator() {
@@ -352,7 +351,7 @@
 
   /**
    * Test method for 'java.util.TreeMap.TreeMap(Map)'.
-   * 
+   *
    * @see java.util.TreeMap#TreeMap(Map)
    */
   public void testConstructor_Map() {
@@ -372,7 +371,7 @@
 
   /**
    * Test method for 'java.util.TreeMap.TreeMap(Map)'.
-   * 
+   *
    * @see java.util.TreeMap#TreeMap(Map)
    */
   @SuppressWarnings("unchecked")
@@ -388,7 +387,7 @@
 
   /**
    * Test method for 'java.util.TreeMap.TreeMap(Map)'.
-   * 
+   *
    * @see java.util.TreeMap#TreeMap(Map)
    */
   public void testConstructor_Map_throwsNullPointerException() {
@@ -402,7 +401,7 @@
 
   /**
    * Test method for 'java.util.TreeMap.TreeMap(SortedMap)'.
-   * 
+   *
    * @see java.util.TreeMap#TreeMap(SortedMap)
    */
   public void testConstructor_SortedMap() {
@@ -431,7 +430,7 @@
 
   /**
    * Test method for 'java.util.TreeMap.TreeMap(SortedMap).
-   * 
+   *
    * @see java.util.TreeMap#TreeMap(SortedMap)
    */
   public void testConstructor_SortedMap_throwsNullPointerException() {
@@ -445,7 +444,7 @@
 
   /**
    * Test method for 'java.util.Map.containsKey(Object)'. *
-   * 
+   *
    * @see java.util.Map#containsKey(Object)
    */
   public void testContainsKey() {
@@ -472,7 +471,7 @@
 
   /**
    * Test method for 'java.util.Map.containsKey(Object)'.
-   * 
+   *
    * @see java.util.Map#containsKey(Object)
    */
   public void testContainsKey_throwsClassCastException() {
@@ -491,7 +490,7 @@
 
   /**
    * Test method for 'java.util.Map.containsKey(Object)'.
-   * 
+   *
    * @see java.util.Map#containsKey(Object)
    */
   public void testContainsKey_throwsNullPointerException() {
@@ -508,7 +507,7 @@
 
   /**
    * Test method for 'java.util.Map.containsValue(Object)'.
-   * 
+   *
    * @see java.util.Map#containsValue(Object)
    */
   @SuppressWarnings("SuspiciousMethodCalls")
@@ -533,7 +532,7 @@
 
   /**
    * Test method for 'java.util.Map.containsValue(Object)'.
-   * 
+   *
    * @see java.util.Map#containsValue(Object)
    */
   public void testContainsValue_throwsClassCastException() {
@@ -557,7 +556,7 @@
 
   /**
    * Test method for 'java.util.Map.containsValue(Object)'.
-   * 
+   *
    * @see java.util.Map#containsValue(Object)
    */
   public void testContainsValue_throwsNullPointerException() {
@@ -648,7 +647,7 @@
     }
 
     // JDK < 7 does not handle null keys correctly.
-    if (useNullKey() && !GWT.isScript() && TestUtils.getJdkVersion() < 7) {
+    if (useNullKey() && TestUtils.isJvm() && TestUtils.getJdkVersion() < 7) {
       map.remove(null);
       keys.remove(null);
     }
@@ -715,7 +714,7 @@
 
   /**
    * Test method for 'java.util.Map.entrySet().remove(Object)'.
-   * 
+   *
    * @see java.util.Map#entrySet()
    */
   public void testEntrySet_add_throwsUnsupportedOperationException() {
@@ -815,7 +814,7 @@
 
   /**
    * Test method for 'java.util.Map.entrySet()'.
-   * 
+   *
    * @see java.util.Map#entrySet()
    */
   public void testEntrySet_entries() {
@@ -847,7 +846,7 @@
 
   /**
    * Test method for 'java.util.Map.entrySet()'.
-   * 
+   *
    * @see java.util.Map#entrySet()
    */
   public void testEntrySet_entries_view() {
@@ -888,7 +887,7 @@
 
   /**
    * Test method for 'java.util.Map.entrySet().remove(Object)'.
-   * 
+   *
    * @see java.util.Map#entrySet()
    */
   public void testEntrySet_remove() {
@@ -906,7 +905,7 @@
 
   /**
    * Test method for 'java.util.Map.entrySet().remove(Object)'.
-   * 
+   *
    * @see java.util.Map#entrySet()
    */
   public void testEntrySet_remove_equivalentEntry() {
@@ -929,7 +928,7 @@
 
   /**
    * Test method for 'java.util.Object.equals(Object)'.
-   * 
+   *
    * @see java.util.Map#equals(Object)
    */
   public void testEquals() {
@@ -976,7 +975,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.firstKey()'.
-   * 
+   *
    * @see java.util.SortedMap#firstKey()
    */
   public void testFirstKey() {
@@ -1008,7 +1007,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.firstKey()'.
-   * 
+   *
    * @see java.util.SortedMap#firstKey()
    */
   public void testFirstKey_throwsNoSuchElementException() {
@@ -1094,7 +1093,7 @@
 
   /**
    * Test method for 'java.util.Map.get(Object)'.
-   * 
+   *
    * @see java.util.Map#get(Object)
    */
   public void testGet() {
@@ -1125,7 +1124,7 @@
 
   /**
    * Test method for 'java.util.Map.get(Object)'.
-   * 
+   *
    * @see java.util.Map#get(Object)
    */
   public void testGet_throwsClassCastException() {
@@ -1144,7 +1143,7 @@
 
   /**
    * Test method for 'java.util.Map.get(Object)'.
-   * 
+   *
    * @see java.util.Map#get(Object)
    */
   public void testGet_throwsNullPointerException() {
@@ -1155,7 +1154,7 @@
     try {
       map.get(null);
       // JDK < 7 does not conform to the specification if the map is empty.
-      if (!GWT.isScript() && TestUtils.getJdkVersion() > 6) {
+      if (TestUtils.getJdkVersion() > 6) {
         assertTrue(useNullKey());
       }
     } catch (NullPointerException e) {
@@ -1174,7 +1173,7 @@
 
   /**
    * Test method for 'java.lang.Object.hashCode()'.
-   * 
+   *
    * @see java.util.Map#hashCode()
    */
   public void testHashCode() {
@@ -1214,7 +1213,7 @@
   /**
    * Test method for 'java.util.SortedMap.headMap(Object)' and
    * 'java.util.NavigableMap.headMap(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedMap#headMap(Object)
    * @see java.util.NavigableMap#headMap(Object, boolean)
    */
@@ -1389,7 +1388,7 @@
   /**
    * Test method for 'java.util.SortedMap.headMap(Object)' and
    * 'java.util.NavigableMap.headMap(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedMap#headMap(Object)
    * @see java.util.NavigableMap#headMap(Object, boolean)
    */
@@ -1436,7 +1435,7 @@
   /**
    * Test method for 'java.util.SortedMap.headMap(Object)' and
    * 'java.util.NavigableMap.headMap(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedMap#headMap(Object)
    * @see java.util.NavigableMap#headMap(Object, boolean)
    */
@@ -1473,7 +1472,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.headMap(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedMap#headMap(Object)
    */
   @SuppressWarnings("unchecked")
@@ -1507,7 +1506,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.headMap(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedMap#headMap(Object)
    */
   public void testHeadMap_throwsNullPointerException() {
@@ -1622,9 +1621,9 @@
 
   /**
    * Test method for 'java.util.Map.isEmpty()'.
-   * 
+   *
    * @see java.util.Map#isEmpty()
-   * 
+   *
    */
   public void testIsEmpty() {
     K[] keys = getKeys();
@@ -1645,7 +1644,7 @@
 
   /**
    * Test method for 'java.util.Map.keySet()'.
-   * 
+   *
    * @see java.util.Map#clear()
    */
   public void testKeySet() {
@@ -1666,7 +1665,7 @@
 
   /**
    * Test method for 'java.util.Map.keySet()'.
-   * 
+   *
    * @see java.util.Map#clear()
    */
   public void testKeySet_viewPut() {
@@ -1682,7 +1681,7 @@
 
   /**
    * Test method for 'java.util.Map.keySet()'.
-   * 
+   *
    * @see java.util.Map#clear()
    */
   public void testKeySet_viewRemove() {
@@ -1757,7 +1756,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.lastKey()'.
-   * 
+   *
    * @see java.util.SortedMap#lastKey()
    */
   public void testLastKey() {
@@ -1807,7 +1806,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.lastKey()'.
-   * 
+   *
    * @see java.util.SortedMap#lastKey()
    */
   public void testLastKey_throwsNoSuchElementException() {
@@ -2070,7 +2069,7 @@
 
   /**
    * Test method for 'java.util.Map.put(Object, Object)'.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   public void testPut() {
@@ -2096,7 +2095,7 @@
 
   /**
    * Test method for 'java.util.Map.put(Object, Object)'.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   public void testPut_entries3() {
@@ -2130,13 +2129,13 @@
    * Test method for 'java.util.Map.put(Object, Object)'. This test shows some
    * bad behavior of the TreeMap class before JDK 7. A mapping with null key can
    * be put in but several methods are are unusable afterward.
-   * 
+   *
    * A SortedMap with natural ordering (no comparator) is supposed to throw a
    * null pointer exception if a null keys are "not supported". For a natural
    * ordered TreeMap before JDK 7, a null pointer exception is not thrown. But,
    * the map is left in a state where any other key based methods result in a
    * null pointer exception.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   public void testPut_nullKey() {
@@ -2167,7 +2166,7 @@
       sortedMap.subMap(getLessThanMinimumKey(), getGreaterThanMaximumKey());
       sortedMap.headMap(getLessThanMinimumKey());
       sortedMap.tailMap(getLessThanMinimumKey());
-    } else if (!GWT.isScript() && TestUtils.getJdkVersion() > 6) {
+    } else if (TestUtils.getJdkVersion() > 6) {
       // nulls are rejected immediately and don't poison the map anymore
       try {
         assertNull(sortedMap.put(null, values[0]));
@@ -2257,7 +2256,7 @@
 
   /**
    * Test method for 'java.util.Map.put(Object, Object)'.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   public void testPut_replace() {
@@ -2277,7 +2276,8 @@
   }
 
   public void testPut_ComparableKey() {
-    final boolean java6CompatibleSources = GWT.isScript() || TestUtils.getJdkVersion() < 7;
+    final boolean java6CompatibleSources =
+        !TestUtils.isJvm() || TestUtils.getJdkVersion() < 7;
     TreeMap<String, Object> map = new TreeMap<String, Object>();
     ConflictingKey conflictingKey = new ConflictingKey("conflictingKey");
     try {
@@ -2297,7 +2297,7 @@
 
   /**
    * Test method for 'java.util.Map.put(Object, Object)'.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   @SuppressWarnings("unchecked")
@@ -2320,7 +2320,7 @@
 
   /**
    * Test method for 'java.util.Map.put(Object, Object)'.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   @SuppressWarnings("unchecked")
@@ -2343,7 +2343,7 @@
 
   /**
    * Test method for 'java.util.Map.put(Object, Object)'.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   public void testPut_throwsNullPointerException() {
@@ -2357,7 +2357,7 @@
       try {
         map.put(null, values[0]);
         // JDK < 7 does not conform to the specification if the map is empty.
-        if (!GWT.isScript() && TestUtils.getJdkVersion() > 6) {
+        if (TestUtils.getJdkVersion() > 6) {
           assertTrue(useNullKey());
         }
       } catch (NullPointerException e) {
@@ -2384,7 +2384,7 @@
 
   /**
    * Test method for 'java.util.Map.put(Object, Object)'.
-   * 
+   *
    * @see java.util.Map#put(Object, Object)
    */
   public void testPut_throwsUnsupportedOperationException() {
@@ -2403,7 +2403,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll() {
@@ -2443,7 +2443,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll_addEntries() {
@@ -2466,7 +2466,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll_emptyMap() {
@@ -2488,7 +2488,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll_overwrite() {
@@ -2511,7 +2511,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll_self() {
@@ -2532,7 +2532,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   @SuppressWarnings("unchecked")
@@ -2559,7 +2559,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll_throwsIllegalOperationException() {
@@ -2572,7 +2572,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll_throwsNullPointerException() {
@@ -2591,7 +2591,7 @@
 
   /**
    * Test method for 'java.util.Map.putAll(Map)'.
-   * 
+   *
    * @see java.util.Map#putAll(Map)
    */
   public void testPutAll_throwsUnsupportedOperationException() {
@@ -2608,7 +2608,7 @@
 
   /**
    * Test method for 'java.util.Map.remove(Object)'.
-   * 
+   *
    * @see java.util.Map#remove(Object)
    */
   public void testRemove() {
@@ -2653,7 +2653,7 @@
 
   /**
    * Test method for 'java.util.Map.remove(Object)'.
-   * 
+   *
    * @see java.util.Map#remove(Object)
    */
   public void testRemove_throwsClassCastException() {
@@ -2676,7 +2676,7 @@
 
   /**
    * Test method for 'java.util.Map.remove(Object)'.
-   * 
+   *
    * @see java.util.Map#remove(Object)
    */
   @SuppressWarnings("unchecked")
@@ -2691,7 +2691,7 @@
       try {
         map.remove(null);
         // JDK < 7 does not conform to the specification if the map is empty.
-        if (!GWT.isScript() && TestUtils.getJdkVersion() > 6) {
+        if (TestUtils.getJdkVersion() > 6) {
           assertTrue(useNullKey());
         }
       } catch (NullPointerException e) {
@@ -2711,7 +2711,7 @@
 
   /**
    * Test method for 'java.util.Map.remove(Object)'.
-   * 
+   *
    * @see java.util.Map#remove(Object)
    */
   public void testRemove_throwsUnsupportedOperationException() {
@@ -2729,7 +2729,7 @@
 
   /**
    * Test method for 'java.util.Map.size()'.
-   * 
+   *
    * @see java.util.Map#size()
    */
   public void testSize() {
@@ -2790,7 +2790,7 @@
   /**
    * Test method for 'java.util.SortedMap.subMap(Object, Object)' and
    * 'java.util.NavigableMap.subMap(Object, boolean, Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedMap#subMap(Object, Object)
    * @see java.util.NavigableMap#subMap(Object, boolean, Object, boolean)
    */
@@ -2977,7 +2977,7 @@
     }
 
     // JDK < 7 does not handle null keys correctly.
-    if (!GWT.isScript() && TestUtils.getJdkVersion() < 7) {
+    if (TestUtils.isJvm() && TestUtils.getJdkVersion() < 7) {
       return;
     }
 
@@ -3000,7 +3000,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.subMap(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedMap#subMap(Object, Object)
    */
   @SuppressWarnings("unchecked")
@@ -3034,7 +3034,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.subMap(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedMap#subMap(Object, Object)
    */
   public void testSubMap_throwsIllegalArgumentException() {
@@ -3050,7 +3050,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.subMap(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedMap#subMap(Object, Object)
    */
   public void testSubMap_throwsNullPointerException() {
@@ -3110,7 +3110,7 @@
   /**
    * Test method for 'java.util.SortedMap.tailMap(Object)' and
    * 'java.util.NavigableMap.tailMap(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedMap#tailMap(Object)
    * @see java.util.NavigableMap#tailMap(Object, boolean)
    */
@@ -3127,7 +3127,7 @@
   /**
    * Test method for 'java.util.SortedMap.tailMap(Object)' and
    * 'java.util.NavigableMap.tailMap(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedMap#tailMap(Object)
    * @see java.util.NavigableMap#tailMap(Object, boolean)
    */
@@ -3152,7 +3152,7 @@
   /**
    * Test method for 'java.util.SortedMap.tailMap(Object)' and
    * 'java.util.NavigableMap.tailMap(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedMap#tailMap(Object)
    * @see java.util.NavigableMap#tailMap(Object, boolean)
    */
@@ -3205,7 +3205,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.tailMap(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedMap#tailMap(Object)
    */
   @SuppressWarnings("unchecked")
@@ -3239,7 +3239,7 @@
 
   /**
    * Test method for 'java.util.SortedMap.tailMap(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedMap#tailMap(Object)
    */
   public void testTailMap_throwsNullPointerException() {
@@ -3303,7 +3303,7 @@
 
   /**
    * Test method for 'java.util.Map.values()'.
-   * 
+   *
    * @see java.util.Map#values()
    */
   public void testValues() {
@@ -3367,7 +3367,7 @@
 
   /**
    * Test method for 'java.util.Map.values()'.
-   * 
+   *
    * @see java.util.Map#values()
    */
   public void testValues_nullKey() {
@@ -3390,7 +3390,7 @@
 
   /**
    * Test method for 'java.util.Map.values()'.
-   * 
+   *
    * @see java.util.Map#values()
    */
   public void testValues_viewPut() {
@@ -3412,7 +3412,7 @@
 
   /**
    * Test method for 'java.util.Map.values()'.
-   * 
+   *
    * @see java.util.Map#values()
    */
   public void testValues_viewRemove() {
@@ -3471,7 +3471,7 @@
 
   @Override
   protected void verifyMap() {
-    if (GWT.isScript()) {
+    if (!TestUtils.isJvm()) {
       // Verify red-black correctness in our implementation
       TreeMapViolator.callAssertCorrectness(map);
     }
diff --git a/user/test/com/google/gwt/emultest/java/util/TreeSetTest.java b/user/test/com/google/gwt/emultest/java/util/TreeSetTest.java
index ba3a37e..8fcd829 100644
--- a/user/test/com/google/gwt/emultest/java/util/TreeSetTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/TreeSetTest.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2008 Google Inc.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- * 
+ *
  * http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.emultest.java.util;
 
-import com.google.gwt.core.client.GWT;
+import com.google.gwt.testing.TestUtils;
 
 import org.apache.commons.collections.TestSet;
 
@@ -34,9 +34,9 @@
 
 /**
  * Tests <code>TreeSet</code>.
- * 
+ *
  * @param <E> The key type for the underlying TreeSet
- * 
+ *
  * TODO(jat): this whole structure needs work. Ideally we would port a new
  * Apache collections test to GWT, but that is not an insignificant amount of
  * work.
@@ -45,7 +45,7 @@
 
   /**
    * Verify a Set is explicitly and implicitly empty.
-   * 
+   *
    * @param set
    */
   private static <E> void _assertEmpty(Set<E> set) {
@@ -58,7 +58,7 @@
    * Verify that two Collections are deeply equivalent. Some of the Sets that
    * need to be verified do not implement a sensible equals method
    * (TreeSet.values for example).
-   * 
+   *
    * @param expected
    * @param actual
    */
@@ -79,7 +79,7 @@
 
   /**
    * Verify that two SortedMaps are deeply equivalent.
-   * 
+   *
    * @param expected
    * @param actual
    */
@@ -127,7 +127,7 @@
 
   /**
    * Test method for 'java.util.Set.add(Object)'.
-   * 
+   *
    * @see java.util.Set#put(Object)
    */
   public void testAdd() {
@@ -143,7 +143,7 @@
 
   /**
    * Test method for 'java.util.Set.add(Object)'.
-   * 
+   *
    * @see java.util.Set#add(Object)
    */
   public void testAdd_entries3() {
@@ -169,7 +169,7 @@
 
   /**
    * Test method for 'java.util.Set.add(Object)'.
-   * 
+   *
    * @see java.util.Set#add(Object)
    */
   public void testAdd_replace() {
@@ -188,7 +188,7 @@
 
   /**
    * Test method for 'java.util.Set.add(Object)'.
-   * 
+   *
    * @see java.util.Set#add(Object)
    */
   @SuppressWarnings("unchecked")
@@ -201,7 +201,7 @@
       try {
         Set untypedSet = set;
         untypedSet.add(getConflictingKey());
-        assertTrue("CCE expected in Development Mode", GWT.isScript());
+        assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
       } catch (ClassCastException e) {
         // expected outcome
       }
@@ -210,7 +210,7 @@
 
   /**
    * Test method for 'java.util.Set.add(Object)'.
-   * 
+   *
    * @see java.util.Set#add(Object)
    */
   @SuppressWarnings("unchecked")
@@ -231,7 +231,7 @@
 
   /**
    * Test method for 'java.util.Set.add(Object)'.
-   * 
+   *
    * @see java.util.Set#add(Object)
    */
   public void testAdd_throwsUnsupportedOperationException() {
@@ -248,7 +248,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   public void testAddAll() {
@@ -269,7 +269,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   public void testAddAll_addEntries() {
@@ -290,7 +290,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   public void testAddAll_emptyMap() {
@@ -310,7 +310,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   public void testAddAll_overwrite() {
@@ -331,7 +331,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   @SuppressWarnings("ModifyingCollectionWithItself")
@@ -350,7 +350,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   @SuppressWarnings("unchecked")
@@ -367,7 +367,7 @@
         // This throws in dev mode because we're putting a second entry in
         // the set and TreeSet calls the compare method to order them.
         destSet.addAll(sourceSet);
-        assertTrue("CCE expected in Development Mode", GWT.isScript());
+        assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
       } catch (ClassCastException e) {
         // expected outcome
       }
@@ -376,7 +376,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   public void testAddAll_throwsNullPointerException() {
@@ -395,7 +395,7 @@
 
   /**
    * Test method for 'java.util.Set.addAll(Map)'.
-   * 
+   *
    * @see java.util.Set#addAll(Map)
    */
   public void testAddAll_throwsUnsupportedOperationException() {
@@ -427,7 +427,7 @@
 
   /**
    * Test method for 'java.util.Set.clear()'.
-   * 
+   *
    * @see java.util.Set#clear()
    */
   public void testClear() {
@@ -445,7 +445,7 @@
 
   /**
    * Test method for 'java.util.Set.clear()'.
-   * 
+   *
    * @see java.util.Set#clear()
    */
   public void testClear_throwsUnsupportedOperationException() {
@@ -462,7 +462,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.comparator()'.
-   * 
+   *
    * @see java.util.SortedSet#comparator()
    */
   public void testComparator() {
@@ -476,7 +476,7 @@
 
   /**
    * Test method for default constructor.
-   * 
+   *
    * @see java.util.TreeSet#TreeSet()
    */
   public void testConstructor() {
@@ -486,7 +486,7 @@
 
   /**
    * Test method for 'java.util.TreeSet.TreeSet(Comparator)'.
-   * 
+   *
    * @see java.util.TreeSet#TreeSet(Comparator)
    */
   public void testConstructor_comparator() {
@@ -501,7 +501,7 @@
 
   /**
    * Test method for 'java.util.TreeSet.TreeSet(Set)'.
-   * 
+   *
    * @see java.util.TreeSet#TreeSet(Set)
    */
   public void testConstructor_Set() {
@@ -519,7 +519,7 @@
 
   /**
    * Test method for 'java.util.TreeSet.TreeSet(Set)'.
-   * 
+   *
    * @see java.util.TreeSet#TreeSet(Set)
    */
   @SuppressWarnings("unchecked")
@@ -534,7 +534,7 @@
 
   /**
    * Test method for 'java.util.TreeSet.TreeSet(Set)'.
-   * 
+   *
    * @see java.util.TreeSet#TreeSet(Set)
    */
   public void testConstructor_Set_throwsNullPointerException() {
@@ -548,7 +548,7 @@
 
   /**
    * Test method for 'java.util.TreeSet.TreeSet(SortedSet).
-   * 
+   *
    * @see java.util.TreeSet#TreeSet(SortedSet)
    */
   public void testConstructor_SortedMap_throwsNullPointerException() {
@@ -562,7 +562,7 @@
 
   /**
    * Test method for 'java.util.TreeSet.TreeSet(SortedSet)'.
-   * 
+   *
    * @see java.util.TreeSet#TreeSet(SortedSet)
    */
   public void testConstructor_SortedSet() {
@@ -580,7 +580,7 @@
 
   /**
    * Test method for 'java.util.Set.contains(Object)'. *
-   * 
+   *
    * @see java.util.Set#contains(Object)
    */
   public void testContains() {
@@ -594,7 +594,7 @@
 
   /**
    * Test method for 'java.util.Set.contains(Object)'.
-   * 
+   *
    * @see java.util.Set#contains(Object)
    */
   public void testContains_throwsClassCastException() {
@@ -602,7 +602,7 @@
     set.add(getKeys()[0]);
     try {
       set.contains(getConflictingKey());
-      assertTrue("CCE expected in Development Mode", GWT.isScript());
+      assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
     } catch (ClassCastException e) {
       // expected outcome
     }
@@ -610,7 +610,7 @@
 
   /**
    * Test method for 'java.util.Set.contains(Object)'.
-   * 
+   *
    * @see java.util.Set#contains(Object)
    */
   public void testContains_throwsNullPointerException() {
@@ -674,7 +674,7 @@
 
   /**
    * Test method for 'java.util.Object.equals(Object)'.
-   * 
+   *
    * @see java.util.Set#equals(Object)
    */
   public void testEquals() {
@@ -691,7 +691,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.first()'.
-   * 
+   *
    * @see java.util.SortedSet#first()
    */
   public void testFirst() {
@@ -716,7 +716,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.first()'.
-   * 
+   *
    * @see java.util.SortedSet#first()
    */
   public void testFirstKey_throwsNoSuchElementException() {
@@ -749,7 +749,7 @@
 
   /**
    * Test method for 'java.lang.Object.hashCode()'.
-   * 
+   *
    * @see java.util.Set#hashCode()
    */
   public void testHashCode() {
@@ -776,7 +776,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.headSet(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedSet#headSet(Object)
    */
   @SuppressWarnings("unchecked")
@@ -789,7 +789,7 @@
     } else {
       try {
         SortedSet.headSet(getConflictingKey());
-        assertTrue("CCE expected in Development Mode", GWT.isScript());
+        assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
       } catch (ClassCastException e) {
         // expected outcome
       }
@@ -799,7 +799,7 @@
   /**
    * Test method for 'java.util.SortedSet.headSet(Object)' and
    * 'java.util.NavigableSet.headSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#headSet(Object)
    * @see java.util.NavigableSet#headSet(Object, boolean)
    */
@@ -814,7 +814,7 @@
   /**
    * Test method for 'java.util.SortedSet.headSet(Object)' and
    * 'java.util.NavigableSet.headSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#headSet(Object)
    * @see java.util.NavigableSet#headSet(Object, boolean)
    */
@@ -829,7 +829,7 @@
   /**
    * Test method for 'java.util.SortedSet.headSet(Object)' and
    * 'java.util.NavigableSet.headSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#headSet(Object)
    * @see java.util.NavigableSet#headSet(Object, boolean)
    */
@@ -846,7 +846,7 @@
   /**
    * Test method for 'java.util.SortedSet.headSet(Object)' and
    * 'java.util.NavigableSet.headSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#headSet(Object)
    * @see java.util.NavigableSet#headSet(Object, boolean)
    */
@@ -889,9 +889,9 @@
 
   /**
    * Test method for 'java.util.Set.isEmpty()'. *
-   * 
+   *
    * @see java.util.Set#isEmpty()
-   * 
+   *
    */
   public void testIsEmpty() {
     Set<E> sourceSet = createSet();
@@ -910,7 +910,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.last()'.
-   * 
+   *
    * @see java.util.SortedSet#last()
    */
   public void testLastKey() {
@@ -936,7 +936,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.last()'.
-   * 
+   *
    * @see java.util.SortedSet#last()
    */
   public void testLastKey_throwsNoSuchElementException() {
@@ -1007,7 +1007,7 @@
 
   /**
    * Test method for 'java.util.Set.remove(Object)'.
-   * 
+   *
    * @see java.util.Set#remove(Object)
    */
   public void testRemove() {
@@ -1025,7 +1025,7 @@
 
   /**
    * Test method for 'java.util.Set.remove(Object)'.
-   * 
+   *
    * @see java.util.Set#remove(Object)
    */
   public void testRemove_throwsClassCastException() {
@@ -1036,7 +1036,7 @@
       set.add(getKeys()[0]);
       try {
         set.remove(getConflictingKey());
-        assertTrue("CCE expected in Development Mode", GWT.isScript());
+        assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
       } catch (ClassCastException e) {
         // expected outcome
       }
@@ -1045,7 +1045,7 @@
 
   /**
    * Test method for 'java.util.Set.remove(Object)'.
-   * 
+   *
    * @see java.util.Set#remove(Object)
    */
   public void testRemove_throwsUnsupportedOperationException() {
@@ -1062,7 +1062,7 @@
 
   /**
    * Test method for 'java.util.Set.size()'.
-   * 
+   *
    * @see java.util.Set#size()
    */
   public void testSize() {
@@ -1097,7 +1097,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.subSet(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedSet#subSet(Object, Object)
    */
   @SuppressWarnings("unchecked")
@@ -1106,19 +1106,19 @@
     SortedSet.add(getKeys()[0]);
     try {
       SortedSet.subSet(getConflictingKey(), getKeys()[0]);
-      assertTrue("CCE expected in Development Mode", GWT.isScript());
+      assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
     } catch (IllegalArgumentException e) {
       // since we can't ensure CCEs in Production Mode, we may get IAE
-      assertTrue("IllegalArgumentException in Development Mode", GWT.isScript());
+      assertTrue("IllegalArgumentException in Development Mode", !TestUtils.isJvm());
     } catch (ClassCastException e) {
       // expected outcome
     }
     try {
       SortedSet.subSet(getKeys()[0], getConflictingKey());
-      assertTrue("CCE expected in Development Mode", GWT.isScript());
+      assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
     } catch (IllegalArgumentException e) {
       // since we can't ensure CCEs in Production Mode, we may get IAE
-      assertTrue("IllegalArgumentException in Development Mode", GWT.isScript());
+      assertTrue("IllegalArgumentException in Development Mode", !TestUtils.isJvm());
     } catch (ClassCastException e) {
       // expected outcome
     }
@@ -1126,7 +1126,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.subSet(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedSet#subSet(Object, Object)
    */
   public void testSubMap_throwsIllegalArgumentException() {
@@ -1143,7 +1143,7 @@
   /**
    * Test method for 'java.util.SortedSet.subSet(Object, Object)' and
    * 'java.util.NavigableSet.subSet(Object, boolean, Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#subSet(Object, Object)
    * @see java.util.NavigableSet#subSet(Object, boolean, Object, boolean)
    */
@@ -1219,7 +1219,7 @@
   /**
    * Test method for 'java.util.SortedSet.tailSet(Object)' and
    * '@see java.util.NavigableSet.tailSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#tailSet(Object)
    * @see java.util.NavigableSet#tailSet(Object, boolean)
    */
@@ -1235,7 +1235,7 @@
   /**
    * Test method for 'java.util.SortedSet.tailSet(Object)' and
    * '@see java.util.NavigableSet.tailSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#tailSet(Object)
    * @see java.util.NavigableSet#tailSet(Object, boolean)
    */
@@ -1259,7 +1259,7 @@
   /**
    * Test method for 'java.util.SortedSet.tailSet(Object)' and
    * '@see java.util.NavigableSet.tailSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#tailSet(Object)
    * @see java.util.NavigableSet#tailSet(Object, boolean)
    */
@@ -1284,7 +1284,7 @@
   /**
    * Test method for 'java.util.SortedSet.tailSet(Object)' and
    * '@see java.util.NavigableSet.tailSet(Object, boolean)'.
-   * 
+   *
    * @see java.util.SortedSet#tailSet(Object)
    * @see java.util.NavigableSet#tailSet(Object, boolean)
    */
@@ -1328,7 +1328,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.tailSet(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedSet#tailSet(Object)
    */
   @SuppressWarnings("unchecked")
@@ -1341,7 +1341,7 @@
     } else {
       try {
         SortedSet.tailSet(getConflictingKey());
-        assertTrue("CCE expected in Development Mode", GWT.isScript());
+        assertTrue("CCE expected in Development Mode", !TestUtils.isJvm());
       } catch (ClassCastException e) {
         // expected outcome
       }
@@ -1350,7 +1350,7 @@
 
   /**
    * Test method for 'java.util.SortedSet.tailSet(Object, Object)'.
-   * 
+   *
    * @see java.util.SortedSet#tailSet(Object)
    */
   public void testTailSet_throwsIllegalArgumentException() {
diff --git a/user/test/com/google/gwt/testing/TestUtils.gwt.xml b/user/test/com/google/gwt/testing/TestUtils.gwt.xml
index 7a02008..d485f79 100644
--- a/user/test/com/google/gwt/testing/TestUtils.gwt.xml
+++ b/user/test/com/google/gwt/testing/TestUtils.gwt.xml
@@ -13,6 +13,5 @@
 <!-- limitations under the License.                                         -->
 
 <module>
-  <inherits name="com.google.gwt.regexp.RegExp"/>
   <source path='' />
 </module>
diff --git a/user/test/com/google/gwt/testing/TestUtils.java b/user/test/com/google/gwt/testing/TestUtils.java
index c4a6d05..b1ee1ff 100644
--- a/user/test/com/google/gwt/testing/TestUtils.java
+++ b/user/test/com/google/gwt/testing/TestUtils.java
@@ -15,16 +15,11 @@
  */
 package com.google.gwt.testing;
 
-import com.google.gwt.regexp.shared.MatchResult;
-import com.google.gwt.regexp.shared.RegExp;
-
 /**
  * Utility functions needed by various tests.
  */
 public class TestUtils {
 
-  private static final String VERSION_REGEXP = "1\\.([0-9]+)(\\..*)?";
-
   public static int getJdkVersion() {
     String versionString = System.getProperty("java.version", "none");
     if (versionString.equals("none")) {
@@ -34,9 +29,13 @@
     return getMajorVersion(versionString);
   }
 
+  public static boolean isJvm() {
+    return getJdkVersion() != -1;
+  }
+
   private static int getMajorVersion(String versionString) {
-    MatchResult matchResult = RegExp.compile(VERSION_REGEXP).exec(versionString);
-    assert matchResult.getGroup(0).equals(versionString);
-    return Integer.parseInt(matchResult.getGroup(1));
+    String[] split = versionString.split("\\.");
+    assert split.length >= 1;
+    return Integer.parseInt(split[1]);
   }
 }