Removes StringCase and replaces all Locale.ENGLISH with ROOT

As we added String#toUpperCase(Locale)/toLowerCase(Locale) emulation
to GWT, we no longer need a super-sourced StringCase utility class.

I also switched all uses of Locale.ENGLISH to Locale.ROOT which is
the 'neutral' locale for locale sensitive operations.

Change-Id: I007eba55e8091564b82f81c37a1ca8c5f73c1fec
diff --git a/dev/core/src/com/google/gwt/dev/BootStrapPlatform.java b/dev/core/src/com/google/gwt/dev/BootStrapPlatform.java
index 2392326..e0d8fe9 100644
--- a/dev/core/src/com/google/gwt/dev/BootStrapPlatform.java
+++ b/dev/core/src/com/google/gwt/dev/BootStrapPlatform.java
@@ -53,7 +53,7 @@
    * Return true if we are running on a Mac.
    */
   public static boolean isMac() {
-    String lcOSName = System.getProperty("os.name").toLowerCase(Locale.ENGLISH);
+    String lcOSName = System.getProperty("os.name").toLowerCase(Locale.ROOT);
     return lcOSName.startsWith("mac ");
   }
 
diff --git a/dev/core/src/com/google/gwt/dev/ServletValidator.java b/dev/core/src/com/google/gwt/dev/ServletValidator.java
index d666013..8d7b488 100644
--- a/dev/core/src/com/google/gwt/dev/ServletValidator.java
+++ b/dev/core/src/com/google/gwt/dev/ServletValidator.java
@@ -243,7 +243,7 @@
   static String suggestServletName(String servletClass) {
     int pos = servletClass.lastIndexOf('.');
     String suggest = (pos < 0) ? servletClass : servletClass.substring(pos + 1);
-    String firstChar = suggest.substring(0, 1).toLowerCase(Locale.ENGLISH);
+    String firstChar = suggest.substring(0, 1).toLowerCase(Locale.ROOT);
     suggest = firstChar + suggest.substring(1);
     return suggest;
   }
diff --git a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
index 94b900e..a720cff 100644
--- a/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
+++ b/dev/core/src/com/google/gwt/dev/cfg/ModuleDefSchema.java
@@ -1455,7 +1455,7 @@
   @SuppressWarnings("unused")
   protected Schema __module_begin(NullableName renameTo, String type)
       throws UnableToCompleteException {
-    ModuleType moduleType = ModuleType.valueOf(type.toUpperCase(Locale.ENGLISH));
+    ModuleType moduleType = ModuleType.valueOf(type.toUpperCase(Locale.ROOT));
     moduleDef.enterModule(moduleType, moduleName);
 
     // All modules implicitly depend on com.google.gwt.core.Core. Processing of this dependency
diff --git a/dev/core/src/com/google/gwt/dev/javac/JsniReferenceResolver.java b/dev/core/src/com/google/gwt/dev/javac/JsniReferenceResolver.java
index 1d29c3e..36010d3 100644
--- a/dev/core/src/com/google/gwt/dev/javac/JsniReferenceResolver.java
+++ b/dev/core/src/com/google/gwt/dev/javac/JsniReferenceResolver.java
@@ -774,7 +774,7 @@
         if (valueExpr instanceof StringLiteral) {
           // @SuppressWarnings("Foo")
           return ImmutableSet.of(((StringLiteral) valueExpr).constant.stringValue().toLowerCase(
-              Locale.ENGLISH));
+              Locale.ROOT));
         } else if (valueExpr instanceof ArrayInitializer) {
           // @SuppressWarnings({ "Foo", "Bar"})
           ArrayInitializer ai = (ArrayInitializer) valueExpr;
@@ -782,7 +782,7 @@
           for (int i = 0, j = ai.expressions.length; i < j; i++) {
             if ((ai.expressions[i]) instanceof StringLiteral) {
               StringLiteral expression = (StringLiteral) ai.expressions[i];
-              valuesSetBuilder.add(expression.constant.stringValue().toLowerCase(Locale.ENGLISH));
+              valuesSetBuilder.add(expression.constant.stringValue().toLowerCase(Locale.ROOT));
             } else {
               suppressionAnnotationWarning(a,
                   "Unable to analyze SuppressWarnings annotation, " +
diff --git a/dev/core/src/com/google/gwt/dev/js/JsStackEmulator.java b/dev/core/src/com/google/gwt/dev/js/JsStackEmulator.java
index 5a87087..497e9ad 100644
--- a/dev/core/src/com/google/gwt/dev/js/JsStackEmulator.java
+++ b/dev/core/src/com/google/gwt/dev/js/JsStackEmulator.java
@@ -962,7 +962,7 @@
 
   public static StackMode getStackMode(PermProps props) {
     String value = props.mustGetString("compiler.stackMode");
-    return StackMode.valueOf(value.toUpperCase(Locale.ENGLISH));
+    return StackMode.valueOf(value.toUpperCase(Locale.ROOT));
   }
 
   private JsFunction wrapFunction;
diff --git a/dev/core/src/com/google/gwt/dev/js/ReservedNames.java b/dev/core/src/com/google/gwt/dev/js/ReservedNames.java
index 2c723b3..12b8cfb 100644
--- a/dev/core/src/com/google/gwt/dev/js/ReservedNames.java
+++ b/dev/core/src/com/google/gwt/dev/js/ReservedNames.java
@@ -52,9 +52,9 @@
     if (!JsProtectedNames.isLegalName(newIdent)) {
       return false;
     }
-    String lcIdent = newIdent.toLowerCase(Locale.ENGLISH);
+    String lcIdent = newIdent.toLowerCase(Locale.ROOT);
     for (String suffix : blacklistedSuffixes) {
-      if (lcIdent.endsWith(suffix.toLowerCase(Locale.ENGLISH))) {
+      if (lcIdent.endsWith(suffix.toLowerCase(Locale.ROOT))) {
         return false;
       }
     }
diff --git a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
index 15ad9c4..6b0f5d2 100644
--- a/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
+++ b/dev/core/src/com/google/gwt/dev/resource/impl/ResourceOracleImpl.java
@@ -183,7 +183,7 @@
       throws URISyntaxException, IOException {
     if (url.getProtocol().equals("file")) {
       File f = new File(url.toURI());
-      String lowerCaseFileName = f.getName().toLowerCase(Locale.ENGLISH);
+      String lowerCaseFileName = f.getName().toLowerCase(Locale.ROOT);
       if (f.isDirectory()) {
         return new DirectoryClassPathEntry(f);
       } else if (f.isFile() && lowerCaseFileName.endsWith(".jar")) {
diff --git a/dev/core/src/com/google/gwt/dev/shell/CheckForUpdates.java b/dev/core/src/com/google/gwt/dev/shell/CheckForUpdates.java
index 907d4a3..056200c 100644
--- a/dev/core/src/com/google/gwt/dev/shell/CheckForUpdates.java
+++ b/dev/core/src/com/google/gwt/dev/shell/CheckForUpdates.java
@@ -159,7 +159,7 @@
   public static CheckForUpdates createUpdateChecker(TreeLogger logger,
       String entryPoint) {
     // Windows has a custom implementation to handle proxies.
-    if (System.getProperty("os.name").toLowerCase(Locale.ENGLISH).contains("win")) {
+    if (System.getProperty("os.name").toLowerCase(Locale.ROOT).contains("win")) {
       return new CheckForUpdatesIE6(logger, entryPoint);
     } else {
       return new CheckForUpdates(logger, entryPoint);
diff --git a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java
index 868dc9b..c932d7c 100644
--- a/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java
+++ b/dev/core/src/com/google/gwt/dev/shell/rewrite/RewriteJsniMethods.java
@@ -120,7 +120,7 @@
       for (Class<?> c : primitives) {
         Type type = Type.getType(c);
         String typeName = type.getClassName();
-        String firstChar = typeName.substring(0, 1).toUpperCase(Locale.ENGLISH);
+        String firstChar = typeName.substring(0, 1).toUpperCase(Locale.ROOT);
         typeName = firstChar + typeName.substring(1);
         SORT_MAP[type.getSort()] = new JavaScriptHostInfo(type, "invokeNative"
             + typeName);
diff --git a/dev/core/src/com/google/gwt/dev/util/BrowserInfo.java b/dev/core/src/com/google/gwt/dev/util/BrowserInfo.java
index 0b0efd0..3d0a9a7 100644
--- a/dev/core/src/com/google/gwt/dev/util/BrowserInfo.java
+++ b/dev/core/src/com/google/gwt/dev/util/BrowserInfo.java
@@ -37,7 +37,7 @@
    * @return short name of user agent
    */
   public static String getShortName(String userAgent) {
-    String lcAgent = userAgent.toLowerCase(Locale.ENGLISH);
+    String lcAgent = userAgent.toLowerCase(Locale.ROOT);
     if (lcAgent.contains("msie")) {
       return IE;
     } else if (lcAgent.contains("opr")) {
diff --git a/dev/core/src/com/google/gwt/util/tools/ArgHandlerEnum.java b/dev/core/src/com/google/gwt/util/tools/ArgHandlerEnum.java
index 5165c23..e74d6a6 100644
--- a/dev/core/src/com/google/gwt/util/tools/ArgHandlerEnum.java
+++ b/dev/core/src/com/google/gwt/util/tools/ArgHandlerEnum.java
@@ -71,7 +71,7 @@
   @Override
   public final int handle(String[] args, int startIndex) {
     if (startIndex + 1 < args.length) {
-      String value = args[startIndex + 1].trim().toUpperCase(Locale.ENGLISH);
+      String value = args[startIndex + 1].trim().toUpperCase(Locale.ROOT);
       T mode = matchOption(value);
       if (mode == null) {
         System.err.println(value + " is not a valid option for " + getTag());
diff --git a/dev/core/test/com/google/gwt/dev/resource/impl/PathPrefixSetTest.java b/dev/core/test/com/google/gwt/dev/resource/impl/PathPrefixSetTest.java
index 9eb58df..3616eb6 100644
--- a/dev/core/test/com/google/gwt/dev/resource/impl/PathPrefixSetTest.java
+++ b/dev/core/test/com/google/gwt/dev/resource/impl/PathPrefixSetTest.java
@@ -131,7 +131,7 @@
     ResourceFilter allowsGifs = new ResourceFilter() {
       @Override
       public boolean allows(String path) {
-        return path.toLowerCase(Locale.ENGLISH).endsWith(".gif");
+        return path.toLowerCase(Locale.ROOT).endsWith(".gif");
       }
     };
 
diff --git a/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java b/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java
index 56eec5e..7fce228 100644
--- a/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java
+++ b/dev/core/test/com/google/gwt/dev/util/log/speedtracer/SpeedTracerLoggerTest.java
@@ -248,7 +248,7 @@
   private BufferedReader extractJsonFromWriter(Writer writer)
       throws IOException {
     String jsonString = writer.toString();
-    assertTrue(jsonString.substring(0,5).toLowerCase(Locale.ENGLISH).startsWith("<html"));
+    assertTrue(jsonString.substring(0,5).toLowerCase(Locale.ROOT).startsWith("<html"));
     BufferedReader jsonReader = new BufferedReader(new StringReader(jsonString));
     // Skip ahead to start of JSON
     while (true) {
diff --git a/user/src/com/google/gwt/cell/client/EditTextCell.java b/user/src/com/google/gwt/cell/client/EditTextCell.java
index 5593729..86a0788 100644
--- a/user/src/com/google/gwt/cell/client/EditTextCell.java
+++ b/user/src/com/google/gwt/cell/client/EditTextCell.java
@@ -21,7 +21,6 @@
 import static com.google.gwt.dom.client.BrowserEvents.KEYUP;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.dom.client.InputElement;
@@ -33,6 +32,8 @@
 import com.google.gwt.text.shared.SafeHtmlRenderer;
 import com.google.gwt.text.shared.SimpleSafeHtmlRenderer;
 
+import java.util.Locale;
+
 /**
  * An editable text cell. Click to edit, escape to cancel, return to commit.
  */
@@ -332,7 +333,7 @@
       EventTarget eventTarget = event.getEventTarget();
       if (Element.is(eventTarget)) {
         Element target = Element.as(eventTarget);
-        if ("input".equals(StringCase.toLower(target.getTagName()))) {
+        if ("input".equals(target.getTagName().toLowerCase(Locale.ROOT))) {
           commit(context, parent, viewData, valueUpdater);
         }
       }
diff --git a/user/src/com/google/gwt/core/shared/impl/StringCase.java b/user/src/com/google/gwt/core/shared/impl/StringCase.java
deleted file mode 100644
index 34b031f..0000000
--- a/user/src/com/google/gwt/core/shared/impl/StringCase.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2014 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
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.core.shared.impl;
-
-import java.util.Locale;
-
-/**
- * Provides {@link Locale} independent {@link String#toLowerCase()} and {@link String#toLowerCase()}
- * functions.
- * <p>
- * For client-only code, even the emulated version of {@link String} already works locale
- * independent, as dev-mode uses the one from JDK this class should still be used in place of
- * regular String methods.
- * <p>
- * This class has a translated version to deal with the missing {@link String#toLowerCase(Locale)}
- * method in client code.
- *
- * @see <a href="http://mattryall.net/blog/2009/02/the-infamous-turkish-locale-bug">Infamus Turkish
- *      locale bug</a>
- */
-public class StringCase {
-  public static String toLower(String string) {
-    return string.toLowerCase(Locale.ENGLISH);
-  }
-
-  public static String toUpper(String string) {
-    return string.toUpperCase(Locale.ENGLISH);
-  }
-}
diff --git a/user/src/com/google/gwt/dom/builder/client/DomStylesBuilder.java b/user/src/com/google/gwt/dom/builder/client/DomStylesBuilder.java
index 0263d3d..3de6c76 100644
--- a/user/src/com/google/gwt/dom/builder/client/DomStylesBuilder.java
+++ b/user/src/com/google/gwt/dom/builder/client/DomStylesBuilder.java
@@ -16,7 +16,6 @@
 package com.google.gwt.dom.builder.client;
 
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.builder.shared.StylesBuilder;
 import com.google.gwt.dom.client.Style.BorderStyle;
 import com.google.gwt.dom.client.Style.Cursor;
@@ -41,6 +40,8 @@
 import com.google.gwt.regexp.shared.RegExp;
 import com.google.gwt.safehtml.shared.SafeUri;
 
+import java.util.Locale;
+
 /**
  * Builds the style object.
  */
@@ -108,7 +109,7 @@
           camelCase += word;
         } else {
           // Remove hyphen and uppercase next letter.
-          camelCase += StringCase.toUpper(matches.getGroup(2));
+          camelCase += matches.getGroup(2).toUpperCase(Locale.ROOT);
           if (matches.getGroupCount() > 2) {
             camelCase += matches.getGroup(3);
           }
diff --git a/user/src/com/google/gwt/dom/builder/shared/HtmlStylesBuilder.java b/user/src/com/google/gwt/dom/builder/shared/HtmlStylesBuilder.java
index 6dd126a..1ae46fa 100644
--- a/user/src/com/google/gwt/dom/builder/shared/HtmlStylesBuilder.java
+++ b/user/src/com/google/gwt/dom/builder/shared/HtmlStylesBuilder.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.dom.builder.shared;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Style.BorderStyle;
 import com.google.gwt.dom.client.Style.Cursor;
 import com.google.gwt.dom.client.Style.Display;
@@ -41,6 +40,7 @@
 import com.google.gwt.safehtml.shared.SafeUri;
 
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -107,7 +107,7 @@
           hyphenated += word;
         } else {
           // Hyphenate the first letter.
-          hyphenated += "-" + StringCase.toLower(matches.getGroup(1));
+          hyphenated += "-" + matches.getGroup(1).toLowerCase(Locale.ROOT);
           if (matches.getGroupCount() > 1) {
             hyphenated += matches.getGroup(2);
           }
diff --git a/user/src/com/google/gwt/dom/client/HeadingElement.java b/user/src/com/google/gwt/dom/client/HeadingElement.java
index 279e45c..a955d05 100644
--- a/user/src/com/google/gwt/dom/client/HeadingElement.java
+++ b/user/src/com/google/gwt/dom/client/HeadingElement.java
@@ -16,7 +16,8 @@
 package com.google.gwt.dom.client;
 
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.shared.impl.StringCase;
+
+import java.util.Locale;
 
 /**
  * For the H1 to H6 elements.
@@ -87,7 +88,7 @@
       return false;
     }
     
-    String tag = StringCase.toLower(elem.getTagName());
+    String tag = elem.getTagName().toLowerCase(Locale.ROOT);
     
     if (tag.length() != 2) {
       return false;
diff --git a/user/src/com/google/gwt/i18n/server/GwtLocaleFactoryImpl.java b/user/src/com/google/gwt/i18n/server/GwtLocaleFactoryImpl.java
index df87067..621e01f 100644
--- a/user/src/com/google/gwt/i18n/server/GwtLocaleFactoryImpl.java
+++ b/user/src/com/google/gwt/i18n/server/GwtLocaleFactoryImpl.java
@@ -64,10 +64,10 @@
 
   private static String titleCase(String str) {
     if (str.length() < 2) {
-      return str.toUpperCase(Locale.ENGLISH);
+      return str.toUpperCase(Locale.ROOT);
     }
     return String.valueOf(Character.toTitleCase(str.charAt(0))) +
-        str.substring(1).toLowerCase(Locale.ENGLISH);
+        str.substring(1).toLowerCase(Locale.ROOT);
   }
 
   private final Object instanceCacheLock = new Object[0];
@@ -96,7 +96,7 @@
       language = null;
     }
     if (language != null) {
-      language = language.toLowerCase(Locale.ENGLISH);
+      language = language.toLowerCase(Locale.ROOT);
     }
     if (script != null && script.length() == 0) {
       script = null;
@@ -108,13 +108,13 @@
       region = null;
     }
     if (region != null) {
-      region = region.toUpperCase(Locale.ENGLISH);
+      region = region.toUpperCase(Locale.ROOT);
     }
     if (variant != null && variant.length() == 0) {
       variant = null;
     }
     if (variant != null) {
-      variant = variant.toUpperCase(Locale.ENGLISH);
+      variant = variant.toUpperCase(Locale.ROOT);
     }
     GwtLocaleImpl locale = new GwtLocaleImpl(this, language, region, script,
         variant);
diff --git a/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java b/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java
index ba6b919..a219f64 100644
--- a/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java
+++ b/user/src/com/google/gwt/i18n/shared/DateTimeFormat.java
@@ -15,13 +15,13 @@
  */
 package com.google.gwt.i18n.shared;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.i18n.client.LocaleInfo;
 import com.google.gwt.i18n.shared.impl.DateRecord;
 
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -1396,13 +1396,13 @@
     // We keep track of the longest match, and return that. Note that this
     // unfortunately requires us to test all array elements.
     int bestMatchLength = 0, bestMatch = -1;
-    String textInLowerCase = StringCase.toLower(text.substring(start));
+    String textInLowerCase = text.substring(start).toLowerCase(Locale.ROOT);
     for (int i = 0; i < count; ++i) {
       int length = data[i].length();
       // Always compare if we have no match yet; otherwise only compare
       // against potentially better matches (longer strings).
       if (length > bestMatchLength
-          && textInLowerCase.startsWith(StringCase.toLower(data[i]))) {
+          && textInLowerCase.startsWith(data[i].toLowerCase(Locale.ROOT))) {
         bestMatch = i;
         bestMatchLength = length;
       }
diff --git a/user/src/com/google/gwt/junit/RunStyleSelenium.java b/user/src/com/google/gwt/junit/RunStyleSelenium.java
index b973b17..2bd0b4e 100644
--- a/user/src/com/google/gwt/junit/RunStyleSelenium.java
+++ b/user/src/com/google/gwt/junit/RunStyleSelenium.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.shared.impl.StringCase;
 
 import com.thoughtworks.selenium.DefaultSelenium;
 import com.thoughtworks.selenium.Selenium;
@@ -25,6 +24,7 @@
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -447,7 +447,7 @@
             // loading, IE will throw a permission denied exception.
             String message = e.getMessage();
             if (message == null
-                || !StringCase.toLower(message).contains("permission denied")) {
+                || !message.toLowerCase(Locale.ROOT).contains("permission denied")) {
               if (interruptedHosts == null) {
                 interruptedHosts = new HashSet<String>();
               }
diff --git a/user/src/com/google/gwt/logging/impl/LevelImplRegular.java b/user/src/com/google/gwt/logging/impl/LevelImplRegular.java
index 641f640..2130e2e 100644
--- a/user/src/com/google/gwt/logging/impl/LevelImplRegular.java
+++ b/user/src/com/google/gwt/logging/impl/LevelImplRegular.java
@@ -16,8 +16,8 @@
 
 package com.google.gwt.logging.impl;
 
-import com.google.gwt.core.shared.impl.StringCase;
 
+import java.util.Locale;
 import java.util.logging.Level;
 
 /**
@@ -26,7 +26,7 @@
 public class LevelImplRegular implements LevelImpl {
   @Override
   public Level parse(String name) {
-    name = StringCase.toUpper(name);
+    name = name.toUpperCase(Locale.ROOT);
     if (name.equals("ALL")) {
       return Level.ALL;
     } else if (name.equals("CONFIG")) {
diff --git a/user/src/com/google/gwt/resources/css/GenerateCssAst.java b/user/src/com/google/gwt/resources/css/GenerateCssAst.java
index c7ed344..fb97263 100644
--- a/user/src/com/google/gwt/resources/css/GenerateCssAst.java
+++ b/user/src/com/google/gwt/resources/css/GenerateCssAst.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.resources.css.ast.CssDef;
 import com.google.gwt.resources.css.ast.CssEval;
 import com.google.gwt.resources.css.ast.CssExternalSelectors;
@@ -85,6 +84,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Stack;
 import java.util.regex.Matcher;
@@ -250,7 +250,7 @@
       }
       String ruleName = atRule.substring(1, idx);
       String methodName = "parse" + (Character.toUpperCase(ruleName.charAt(0)))
-          + StringCase.toLower(ruleName.substring(1));
+          + ruleName.substring(1).toLowerCase(Locale.ROOT);
       try {
         Method parseMethod = getClass().getDeclaredMethod(methodName,
             String.class);
diff --git a/user/src/com/google/gwt/resources/css/RtlVisitor.java b/user/src/com/google/gwt/resources/css/RtlVisitor.java
index ca13839..997cde3 100644
--- a/user/src/com/google/gwt/resources/css/RtlVisitor.java
+++ b/user/src/com/google/gwt/resources/css/RtlVisitor.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.resources.css;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.resources.css.ast.Context;
 import com.google.gwt.resources.css.ast.CssCompilerException;
 import com.google.gwt.resources.css.ast.CssModVisitor;
@@ -32,6 +31,7 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.ListIterator;
+import java.util.Locale;
 
 /**
  * Applies RTL transforms to a stylesheet.
@@ -146,7 +146,7 @@
       return v;
     }
 
-    String ident = StringCase.toLower(identValue.getIdent());
+    String ident = identValue.getIdent().toLowerCase(Locale.ROOT);
     if (!ident.endsWith("-resize")) {
       return v;
     }
@@ -233,7 +233,7 @@
   private void invokePropertyHandler(String name, List<Value> values) {
     // See if we have a property-handler function
     try {
-      String[] parts = StringCase.toLower(name).split("-");
+      String[] parts = name.toLowerCase(Locale.ROOT).split("-");
       StringBuffer methodName = new StringBuffer("propertyHandler");
       for (String part : parts) {
         if (part.length() > 0) {
diff --git a/user/src/com/google/gwt/resources/css/ast/CssProperty.java b/user/src/com/google/gwt/resources/css/ast/CssProperty.java
index a5969dc..e95e566 100644
--- a/user/src/com/google/gwt/resources/css/ast/CssProperty.java
+++ b/user/src/com/google/gwt/resources/css/ast/CssProperty.java
@@ -16,13 +16,13 @@
 package com.google.gwt.resources.css.ast;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.shared.impl.StringCase;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Maps a named property to a Value.
@@ -343,7 +343,7 @@
       StringBuilder b = new StringBuilder();
       for (char c : s.toCharArray()) {
         if (Character.isISOControl(c)) {
-          b.append('\\').append(StringCase.toUpper(Integer.toHexString(c))).append(
+          b.append('\\').append(Integer.toHexString(c).toUpperCase(Locale.ROOT)).append(
               " ");
         } else {
           switch (c) {
diff --git a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
index ecf6c3c..ff67be9 100644
--- a/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
+++ b/user/src/com/google/gwt/resources/rg/CssResourceGenerator.java
@@ -28,7 +28,6 @@
 import com.google.gwt.core.ext.typeinfo.JPrimitiveType;
 import com.google.gwt.core.ext.typeinfo.NotFoundException;
 import com.google.gwt.core.ext.typeinfo.TypeOracle;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.util.DefaultTextOutput;
 import com.google.gwt.dev.util.Util;
 import com.google.gwt.i18n.client.LocaleInfo;
@@ -88,6 +87,7 @@
 import java.util.IdentityHashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.SortedSet;
@@ -386,7 +386,7 @@
      * so we want to append a trailing character to the end of the search in
      * case the obfuscated class name is exactly equal to one of the prefixes.
      */
-    String search = StringCase.toLower(target.toString()) + " ";
+    String search = target.toString().toLowerCase(Locale.ROOT) + " ";
     SortedSet<String> headSet = prefixes.headSet(search);
     if (!headSet.isEmpty()) {
       String prefix = headSet.last();
@@ -952,7 +952,7 @@
           if (value.startsWith(".")) {
             value = value.substring(1);
           }
-          reservedPrefixes.add(StringCase.toLower(value));
+          reservedPrefixes.add(value.toLowerCase(Locale.ROOT));
         }
       } catch (BadPropertyValueException e) {
         // Do nothing. Unexpected, but we can live with it.
diff --git a/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java b/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
index 65e154f..fdff1fc 100644
--- a/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
+++ b/user/src/com/google/gwt/resources/rg/ImageBundleBuilder.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.util.log.PrintWriterTreeLogger;
 import com.google.gwt.dev.util.log.speedtracer.CompilerEventType;
 import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger;
@@ -43,6 +42,7 @@
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import javax.imageio.ImageIO;
@@ -759,7 +759,7 @@
         }
       }
     } catch (IllegalArgumentException iex) {
-      if (StringCase.toLower(imageName).endsWith("png")
+      if (imageName.toLowerCase(Locale.ROOT).endsWith("png")
           && iex.getMessage() != null
           && iex.getStackTrace()[0].getClassName().equals(
               "javax.imageio.ImageTypeSpecifier$Indexed")) {
diff --git a/user/src/com/google/gwt/safehtml/shared/UriUtils.java b/user/src/com/google/gwt/safehtml/shared/UriUtils.java
index 42b2bf9..942074f 100644
--- a/user/src/com/google/gwt/safehtml/shared/UriUtils.java
+++ b/user/src/com/google/gwt/safehtml/shared/UriUtils.java
@@ -16,11 +16,11 @@
 package com.google.gwt.safehtml.shared;
 
 import com.google.gwt.core.shared.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.http.client.URL;
 import com.google.gwt.regexp.shared.RegExp;
 
 import java.io.UnsupportedEncodingException;
+import java.util.Locale;
 
 /**
  * Utility class containing static methods for validating and sanitizing URIs.
@@ -79,7 +79,7 @@
             || DONT_NEED_ENCODING.indexOf(c) != -1) {
           sb.append((char) c);
         } else {
-          String hexByte = StringCase.toUpper(Integer.toHexString(c));
+          String hexByte = Integer.toHexString(c).toUpperCase(Locale.ROOT);
           if (hexByte.length() == 1) {
             hexByte = "0" + hexByte;
           }
@@ -228,12 +228,12 @@
      * For this reason there are two checks for mailto: "mailto" and "MAILTO"
      * For details, see: http://www.i18nguy.com/unicode/turkish-i18n.html
      */
-    String schemeLc = StringCase.toLower(scheme);
+    String schemeLc = scheme.toLowerCase(Locale.ROOT);
     return ("http".equals(schemeLc)
         || "https".equals(schemeLc)
         || "ftp".equals(schemeLc)
         || "mailto".equals(schemeLc)
-        || "MAILTO".equals(StringCase.toUpper(scheme)));
+        || "MAILTO".equals(scheme.toUpperCase(Locale.ROOT)));
   }
 
   /**
diff --git a/user/src/com/google/gwt/uibinder/attributeparsers/CssNameConverter.java b/user/src/com/google/gwt/uibinder/attributeparsers/CssNameConverter.java
index 130de98..3127223 100644
--- a/user/src/com/google/gwt/uibinder/attributeparsers/CssNameConverter.java
+++ b/user/src/com/google/gwt/uibinder/attributeparsers/CssNameConverter.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.uibinder.attributeparsers;
 
-import com.google.gwt.core.shared.impl.StringCase;
 
 import java.util.LinkedHashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
@@ -45,7 +45,7 @@
       if (b.length() == 0) {
         b.append(bit);
       } else {
-        b.append(StringCase.toUpper(bit.substring(0, 1)));
+        b.append(bit.substring(0, 1).toUpperCase(Locale.ROOT));
         if (bit.length() > 1) {
           b.append(bit.substring(1));
         }
diff --git a/user/src/com/google/gwt/uibinder/attributeparsers/HorizontalAlignmentConstantParser.java b/user/src/com/google/gwt/uibinder/attributeparsers/HorizontalAlignmentConstantParser.java
index b68f45d..19ffaa1 100644
--- a/user/src/com/google/gwt/uibinder/attributeparsers/HorizontalAlignmentConstantParser.java
+++ b/user/src/com/google/gwt/uibinder/attributeparsers/HorizontalAlignmentConstantParser.java
@@ -17,12 +17,12 @@
 
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.core.ext.typeinfo.JType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.uibinder.rebind.MortalLogger;
 import com.google.gwt.uibinder.rebind.XMLElement;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment;
 
 import java.util.HashMap;
+import java.util.Locale;
 
 /**
  * Parses a
@@ -59,7 +59,7 @@
 
   @Override
   public String parse(XMLElement source, String value) throws UnableToCompleteException {
-    String translated = values.get(StringCase.toUpper(value));
+    String translated = values.get(value.toUpperCase(Locale.ROOT));
     if (translated != null) {
       return translated;
     }
diff --git a/user/src/com/google/gwt/uibinder/attributeparsers/LengthAttributeParser.java b/user/src/com/google/gwt/uibinder/attributeparsers/LengthAttributeParser.java
index 1b95a76..ad76557 100644
--- a/user/src/com/google/gwt/uibinder/attributeparsers/LengthAttributeParser.java
+++ b/user/src/com/google/gwt/uibinder/attributeparsers/LengthAttributeParser.java
@@ -16,11 +16,11 @@
 package com.google.gwt.uibinder.attributeparsers;
 
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.uibinder.rebind.MortalLogger;
 import com.google.gwt.uibinder.rebind.XMLElement;
 
+import java.util.Locale;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -65,7 +65,7 @@
         if ("%".equals(unitStr)) {
           unitStr = "PCT";
         }
-        unitStr = StringCase.toUpper(unitStr);
+        unitStr = unitStr.toUpperCase(Locale.ROOT);
       }
 
       // Now let the default enum parser handle it.
diff --git a/user/src/com/google/gwt/uibinder/attributeparsers/TextAlignConstantParser.java b/user/src/com/google/gwt/uibinder/attributeparsers/TextAlignConstantParser.java
index 48e74c3..ce81b42 100644
--- a/user/src/com/google/gwt/uibinder/attributeparsers/TextAlignConstantParser.java
+++ b/user/src/com/google/gwt/uibinder/attributeparsers/TextAlignConstantParser.java
@@ -17,12 +17,12 @@
 
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.core.ext.typeinfo.JType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.uibinder.rebind.MortalLogger;
 import com.google.gwt.uibinder.rebind.XMLElement;
 import com.google.gwt.user.client.ui.TextBoxBase;
 
 import java.util.HashMap;
+import java.util.Locale;
 
 /**
  * Parses a {@link com.google.gwt.user.client.ui.TextBoxBase.TextAlignConstant}.
@@ -51,7 +51,7 @@
 
   @Override
   public String parse(XMLElement source, String value) throws UnableToCompleteException {
-    String translated = values.get(StringCase.toUpper(value));
+    String translated = values.get(value.toUpperCase(Locale.ROOT));
     if (translated != null) {
       return translated;
     }
diff --git a/user/src/com/google/gwt/uibinder/attributeparsers/VerticalAlignmentConstantParser.java b/user/src/com/google/gwt/uibinder/attributeparsers/VerticalAlignmentConstantParser.java
index 6302981..80aa044 100644
--- a/user/src/com/google/gwt/uibinder/attributeparsers/VerticalAlignmentConstantParser.java
+++ b/user/src/com/google/gwt/uibinder/attributeparsers/VerticalAlignmentConstantParser.java
@@ -17,12 +17,12 @@
 
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.core.ext.typeinfo.JType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.uibinder.rebind.MortalLogger;
 import com.google.gwt.uibinder.rebind.XMLElement;
 import com.google.gwt.user.client.ui.HasVerticalAlignment;
 
 import java.util.HashMap;
+import java.util.Locale;
 
 /**
  * Parses a
@@ -51,7 +51,7 @@
 
   @Override
   public String parse(XMLElement source, String value) throws UnableToCompleteException {
-    String translated = values.get(StringCase.toUpper(value));
+    String translated = values.get(value.toUpperCase(Locale.ROOT));
     if (translated != null) {
       return translated;
     }
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/BeanParser.java b/user/src/com/google/gwt/uibinder/elementparsers/BeanParser.java
index ca2527f..f54e96d 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/BeanParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/BeanParser.java
@@ -21,7 +21,6 @@
 import com.google.gwt.core.ext.typeinfo.JMethod;
 import com.google.gwt.core.ext.typeinfo.JParameter;
 import com.google.gwt.core.ext.typeinfo.JType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.uibinder.rebind.UiBinderContext;
 import com.google.gwt.uibinder.rebind.UiBinderWriter;
 import com.google.gwt.uibinder.rebind.XMLAttribute;
@@ -32,6 +31,7 @@
 
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -235,7 +235,7 @@
   }
 
   private String initialCap(String propertyName) {
-    return StringCase.toUpper(propertyName.substring(0, 1))
+    return propertyName.substring(0, 1).toUpperCase(Locale.ROOT)
         + propertyName.substring(1);
   }
 
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/CellPanelParser.java b/user/src/com/google/gwt/uibinder/elementparsers/CellPanelParser.java
index 409e2be..14cbdaf 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/CellPanelParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/CellPanelParser.java
@@ -17,13 +17,14 @@
 
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.core.ext.typeinfo.JClassType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.uibinder.rebind.FieldWriter;
 import com.google.gwt.uibinder.rebind.UiBinderWriter;
 import com.google.gwt.uibinder.rebind.XMLElement;
 import com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant;
 import com.google.gwt.user.client.ui.HasVerticalAlignment.VerticalAlignmentConstant;
 
+import java.util.Locale;
+
 /**
  * Parses {@link com.google.gwt.user.client.ui.CellPanel} widgets.
  */
@@ -96,7 +97,7 @@
       } else {
         if (!writer.isWidgetElement(child)) {
           writer.die(elem, "Expected a widget or <%s:%s>, found %s",
-              elem.getPrefix(), StringCase.toLower(CELL_TAG), child);
+              elem.getPrefix(), CELL_TAG.toLowerCase(Locale.ROOT), child);
         }
         // It's just a normal child, so parse it as a widget.
         FieldWriter childField = writer.parseElementToField(child);
@@ -107,6 +108,6 @@
 
   private boolean localTagNameIsCell(String tagName) {
     // Older templates had this as "Cell", but now we prefer "cell"
-    return tagName.equals(CELL_TAG) || tagName.equals(StringCase.toLower(CELL_TAG));
+    return tagName.equals(CELL_TAG) || tagName.equals(CELL_TAG.toLowerCase(Locale.ROOT));
   }
 }
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java b/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java
index 66d30e9..febbe31 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/CustomButtonParser.java
@@ -17,13 +17,13 @@
 
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.core.ext.typeinfo.JClassType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.uibinder.rebind.UiBinderWriter;
 import com.google.gwt.uibinder.rebind.XMLElement;
 import com.google.gwt.uibinder.rebind.XMLElement.Interpreter;
 import com.google.gwt.user.client.ui.Image;
 
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -85,7 +85,7 @@
   }
 
   private String faceNameGetter(String faceName) {
-    return "get" + StringCase.toUpper(faceName.substring(0, 1))
+    return "get" + faceName.substring(0, 1).toUpperCase(Locale.ROOT)
         + faceName.substring(1);
   }
 }
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java
index 1aacda7..a09b8a5 100644
--- a/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java
+++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderParser.java
@@ -23,7 +23,6 @@
 import com.google.gwt.core.ext.typeinfo.JPrimitiveType;
 import com.google.gwt.core.ext.typeinfo.JType;
 import com.google.gwt.core.ext.typeinfo.TypeOracle;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.resource.ResourceOracle;
 import com.google.gwt.resources.client.CssResource;
 import com.google.gwt.resources.client.DataResource;
@@ -39,6 +38,7 @@
 import com.google.gwt.uibinder.rebind.model.OwnerField;
 
 import java.util.LinkedHashSet;
+import java.util.Locale;
 
 /**
  * Parses the root UiBinder element, and kicks of the parsing of the rest of the
@@ -513,7 +513,7 @@
 
         if (writer.isBinderElement(elem)) {
           try {
-            Resource.valueOf(StringCase.toUpper(elem.getLocalName())).create(
+            Resource.valueOf(elem.getLocalName().toUpperCase(Locale.ROOT)).create(
                 UiBinderParser.this, elem);
           } catch (IllegalArgumentException e) {
             writer.die(elem,
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
index 63ce39c..8e05ae8 100644
--- a/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
+++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java
@@ -24,7 +24,6 @@
 import com.google.gwt.core.ext.typeinfo.JType;
 import com.google.gwt.core.ext.typeinfo.JTypeParameter;
 import com.google.gwt.core.ext.typeinfo.TypeOracle;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.resource.ResourceOracle;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.dom.client.TagName;
@@ -180,7 +179,7 @@
   }
 
   private static String capitalizePropName(String propName) {
-    return StringCase.toUpper(propName.substring(0, 1)) + propName.substring(1);
+    return propName.substring(0, 1).toUpperCase(Locale.ROOT) + propName.substring(1);
   }
 
   /**
diff --git a/user/src/com/google/gwt/uibinder/rebind/model/OwnerFieldClass.java b/user/src/com/google/gwt/uibinder/rebind/model/OwnerFieldClass.java
index 899bc00..fe5d310 100644
--- a/user/src/com/google/gwt/uibinder/rebind/model/OwnerFieldClass.java
+++ b/user/src/com/google/gwt/uibinder/rebind/model/OwnerFieldClass.java
@@ -22,7 +22,6 @@
 import com.google.gwt.core.ext.typeinfo.JParameter;
 import com.google.gwt.core.ext.typeinfo.JPrimitiveType;
 import com.google.gwt.core.ext.typeinfo.JType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.util.Pair;
 import com.google.gwt.uibinder.client.UiChild;
 import com.google.gwt.uibinder.client.UiConstructor;
@@ -35,6 +34,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
@@ -254,7 +254,7 @@
       addSetter(allSetters, beanPropertyName, method);
 
       // keep backwards compatibility (i.e. hTML instead of HTML for setHTML)
-      String legacyPropertyName = StringCase.toLower(propertyName.substring(0, 1))
+      String legacyPropertyName = propertyName.substring(0, 1).toLowerCase(Locale.ROOT)
           + propertyName.substring(1);
       if (!legacyPropertyName.equals(beanPropertyName)) {
         addSetter(allSetters, legacyPropertyName, method);
@@ -305,7 +305,7 @@
           if (tag.equals("")) {
             String name = method.getName();
             if (name.startsWith("add")) {
-              tag = StringCase.toLower(name.substring(3));
+              tag = name.substring(3).toLowerCase(Locale.ROOT);
             } else {
               logger.die(method.getName()
                   + " must either specify a UiChild tagname or begin "
diff --git a/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java b/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
index 4727a84..ed537e3 100644
--- a/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
+++ b/user/src/com/google/gwt/user/cellview/client/AbstractCellTable.java
@@ -22,7 +22,6 @@
 import com.google.gwt.cell.client.ValueUpdater;
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.builder.shared.HtmlTableSectionBuilder;
 import com.google.gwt.dom.builder.shared.TableSectionBuilder;
 import com.google.gwt.dom.client.BrowserEvents;
@@ -59,6 +58,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
@@ -474,7 +474,7 @@
        * generate the entire table. We do the same for all browsers to avoid any
        * future bugs, since setting innerHTML on a table section seems brittle.
        */
-      sectionTag = StringCase.toLower(sectionTag);
+      sectionTag = sectionTag.toLowerCase(Locale.ROOT);
       if ("tbody".equals(sectionTag)) {
         tmpElem.setInnerSafeHtml(template.tbody(rowHtml));
       } else if ("thead".equals(sectionTag)) {
@@ -741,7 +741,7 @@
      */
     private void replaceTableSection(AbstractCellTable<?> table, TableSectionElement section,
         SafeHtml html) {
-      String sectionName = StringCase.toLower(section.getTagName());
+      String sectionName = section.getTagName().toLowerCase(Locale.ROOT);
       TableSectionElement newSection = convertToSectionElement(table, sectionName, html);
       TableElement tableElement = table.getElement().cast();
       tableElement.replaceChild(newSection, section);
diff --git a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImpl.java b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImpl.java
index cd80f78..8332e17 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImpl.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImpl.java
@@ -17,13 +17,13 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.Widget;
 
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -71,7 +71,7 @@
    * @return true if the element is focusable, false if not
    */
   public boolean isFocusable(Element elem) {
-    return focusableTypes.contains(StringCase.toLower(elem.getTagName()))
+    return focusableTypes.contains(elem.getTagName().toLowerCase(Locale.ROOT))
         || elem.getTabIndex() >= 0;
   }
 
diff --git a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
index 0cf5e2b..18248c8 100644
--- a/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
+++ b/user/src/com/google/gwt/user/cellview/client/CellBasedWidgetImplTrident.java
@@ -19,7 +19,6 @@
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.BrowserEvents;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
@@ -33,6 +32,7 @@
 import com.google.gwt.user.client.ui.Widget;
 
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -154,7 +154,7 @@
     String type = event.getType();
     if (BrowserEvents.FOCUSIN.equals(type)) {
       // If this is an input element, remember that we focused it.
-      String tagName = StringCase.toLower(target.getTagName());
+      String tagName = target.getTagName().toLowerCase(Locale.ROOT);
       if (inputTypes.contains(tagName)) {
         focusedInput = target;
         focusedInputValue = getInputValue(target);
@@ -188,7 +188,7 @@
     if (elem == null || !"input".equalsIgnoreCase(elem.getTagName())) {
       return false;
     }
-    String inputType = StringCase.toLower(InputElement.as(elem).getType());
+    String inputType = InputElement.as(elem).getType().toLowerCase(Locale.ROOT);
     return "checkbox".equals(inputType) || "radio".equals(inputType);
   }
 
@@ -242,7 +242,7 @@
 
   @Override
   public boolean isFocusable(Element elem) {
-    return focusableTypes.contains(StringCase.toLower(elem.getTagName()))
+    return focusableTypes.contains(elem.getTagName().toLowerCase(Locale.ROOT))
         || getTabIndexIfSpecified(elem) >= 0;
   }
 
@@ -250,7 +250,7 @@
   public void onBrowserEvent(final Widget widget, Event event) {
     // We need to remove the event listener from the cell now that the event
     // has fired.
-    String type = StringCase.toLower(event.getType());
+    String type = event.getType().toLowerCase(Locale.ROOT);
     if (BrowserEvents.FOCUS.equals(type) || BrowserEvents.BLUR.equals(type) || BrowserEvents.CHANGE.equals(type)) {
       EventTarget eventTarget = event.getEventTarget();
       if (Element.is(eventTarget)) {
diff --git a/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java b/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java
index 955f459..6091a50 100644
--- a/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java
+++ b/user/src/com/google/gwt/user/client/ui/AbsolutePanel.java
@@ -16,10 +16,11 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
 
+import java.util.Locale;
+
 /**
  * An absolute panel positions all of its children absolutely, allowing them to
  * overlap.
@@ -276,7 +277,7 @@
      * the offsetParent, for elements whose parent is the document BODY, is the
      * HTML element, not the BODY element.
      */
-    if ("body".equals(StringCase.toLower(getElement().getNodeName()))) {
+    if ("body".equals(getElement().getNodeName().toLowerCase(Locale.ROOT))) {
       return;
     }
 
diff --git a/user/src/com/google/gwt/user/client/ui/MultiWordSuggestOracle.java b/user/src/com/google/gwt/user/client/ui/MultiWordSuggestOracle.java
index 2d91b1d..3b417aa 100644
--- a/user/src/com/google/gwt/user/client/ui/MultiWordSuggestOracle.java
+++ b/user/src/com/google/gwt/user/client/ui/MultiWordSuggestOracle.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.rpc.IsSerializable;
@@ -27,6 +26,7 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -485,7 +485,7 @@
     // can skip that step.
 
     // Lower case suggestion.
-    formattedSuggestion = StringCase.toLower(formattedSuggestion);
+    formattedSuggestion = formattedSuggestion.toLowerCase(Locale.ROOT);
 
     // Apply whitespace.
     if (whitespaceChars != null) {
diff --git a/user/src/com/google/gwt/user/client/ui/UIObject.java b/user/src/com/google/gwt/user/client/ui/UIObject.java
index da140e4..e910101 100644
--- a/user/src/com/google/gwt/user/client/ui/UIObject.java
+++ b/user/src/com/google/gwt/user/client/ui/UIObject.java
@@ -17,11 +17,12 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.debug.client.DebugInfo;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.user.client.DOM;
 
+import java.util.Locale;
+
 /**
  * The superclass for all user-interface objects. It simply wraps a DOM element,
  * and cannot receive events. Most interesting user-interface classes derive
@@ -653,7 +654,7 @@
   public void setHeight(String height) {
     // This exists to deal with an inconsistency in IE's implementation where
     // it won't accept negative numbers in length measurements
-    assert extractLengthValue(StringCase.toLower(height.trim())) >= 0 : "CSS heights should not be negative";
+    assert extractLengthValue(height.trim().toLowerCase(Locale.ROOT)) >= 0 : "CSS heights should not be negative";
     getElement().getStyle().setProperty("height", height);
   }
 
@@ -771,7 +772,7 @@
   public void setWidth(String width) {
     // This exists to deal with an inconsistency in IE's implementation where
     // it won't accept negative numbers in length measurements
-    assert extractLengthValue(StringCase.toLower(width.trim())) >= 0 : "CSS widths should not be negative";
+    assert extractLengthValue(width.trim().toLowerCase(Locale.ROOT)) >= 0 : "CSS widths should not be negative";
     getElement().getStyle().setProperty("width", width);
   }
 
diff --git a/user/src/com/google/gwt/user/rebind/AbstractSourceCreator.java b/user/src/com/google/gwt/user/rebind/AbstractSourceCreator.java
index 39e17fe..5f5e31f 100644
--- a/user/src/com/google/gwt/user/rebind/AbstractSourceCreator.java
+++ b/user/src/com/google/gwt/user/rebind/AbstractSourceCreator.java
@@ -19,7 +19,8 @@
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.core.ext.typeinfo.JPrimitiveType;
-import com.google.gwt.core.shared.impl.StringCase;
+
+import java.util.Locale;
 
 /**
  * Super class for AbstractMethod and AbstractClass creators. The primary
@@ -83,7 +84,7 @@
       return "Integer";
     } else {
       String s = type.getSimpleSourceName();
-      return StringCase.toUpper(s.substring(0, 1)) + s.substring(1);
+      return s.substring(0, 1).toUpperCase(Locale.ROOT) + s.substring(1);
     }
   }
 
diff --git a/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java b/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
index bf5067a..2f7921b 100644
--- a/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
+++ b/user/src/com/google/gwt/user/rebind/ui/ImageBundleBuilder.java
@@ -18,7 +18,6 @@
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.util.Util;
 import com.google.gwt.dev.util.log.speedtracer.CompilerEventType;
 import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger;
@@ -35,6 +34,7 @@
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import javax.imageio.ImageIO;
@@ -399,7 +399,7 @@
       try {
         image = ImageIO.read(imageUrl);
       } catch (IllegalArgumentException iex) {
-        if (StringCase.toLower(imageName).endsWith("png")
+        if (imageName.toLowerCase(Locale.ROOT).endsWith("png")
             && iex.getMessage() != null
             && iex.getStackTrace()[0].getClassName().equals(
                 "javax.imageio.ImageTypeSpecifier$Indexed")) {
diff --git a/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java b/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java
index acfd679..54fbbaa 100644
--- a/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java
+++ b/user/src/com/google/gwt/user/server/rpc/RPCServletUtils.java
@@ -15,13 +15,13 @@
  */
 package com.google.gwt.user.server.rpc;
 
-import com.google.gwt.core.shared.impl.StringCase;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.Method;
 import java.nio.charset.Charset;
+import java.util.Locale;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.zip.GZIPOutputStream;
 
@@ -430,7 +430,7 @@
        * properly parsed character encoding string if we decide to make this
        * change.
        */
-      if (StringCase.toLower(characterEncoding).contains(StringCase.toLower(expectedCharSet))) {
+      if (characterEncoding.toLowerCase(Locale.ROOT).contains(expectedCharSet.toLowerCase(Locale.ROOT))) {
         encodingOkay = true;
       }
     }
@@ -463,12 +463,12 @@
     boolean contentTypeIsOkay = false;
 
     if (contentType != null) {
-      contentType = StringCase.toLower(contentType);
+      contentType = contentType.toLowerCase(Locale.ROOT);
       /*
        * NOTE:We use startsWith because some servlet engines, i.e. Tomcat, do
        * not remove the charset component but others do.
        */
-      if (contentType.startsWith(StringCase.toLower(expectedContentType))) {
+      if (contentType.startsWith(expectedContentType.toLowerCase(Locale.ROOT))) {
         contentTypeIsOkay = true;
       }
     }
diff --git a/user/src/com/google/gwt/user/tools/WebAppCreator.java b/user/src/com/google/gwt/user/tools/WebAppCreator.java
index 5104cb1..eba228a 100644
--- a/user/src/com/google/gwt/user/tools/WebAppCreator.java
+++ b/user/src/com/google/gwt/user/tools/WebAppCreator.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.tools;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.About;
 import com.google.gwt.dev.ArgProcessorBase;
 import com.google.gwt.dev.Compiler;
@@ -43,6 +42,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
@@ -614,7 +614,7 @@
     replacements.put("@shellClass", DevMode.class.getName());
     replacements.put("@compileClass", Compiler.class.getName());
     replacements.put("@startupUrl", moduleShortName + ".html");
-    replacements.put("@renameTo", StringCase.toLower(moduleShortName));
+    replacements.put("@renameTo", moduleShortName.toLowerCase(Locale.ROOT));
     replacements.put("@moduleNameJUnit", theModuleName + "JUnit");
 
     // Add command to copy gwt-servlet-deps.jar into libs, unless this is a
@@ -629,7 +629,7 @@
     StringBuilder serverLibs = new StringBuilder();
     if (libDirectory.exists()) {
       for (File file : libDirectory.listFiles()) {
-        if (StringCase.toLower(file.getName()).endsWith(".jar")) {
+        if (file.getName().toLowerCase(Locale.ROOT).endsWith(".jar")) {
           serverLibs.append("   <classpathentry kind=\"lib\" path=\"" + warFolder + "/WEB-INF/lib/");
           serverLibs.append(file.getName());
           serverLibs.append("\"/>\n");
diff --git a/user/src/com/google/gwt/user/tools/util/CreatorUtilities.java b/user/src/com/google/gwt/user/tools/util/CreatorUtilities.java
index 1891ea2..39d567b 100644
--- a/user/src/com/google/gwt/user/tools/util/CreatorUtilities.java
+++ b/user/src/com/google/gwt/user/tools/util/CreatorUtilities.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.tools.util;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.cfg.ModuleDefLoader;
 
 import java.io.File;
@@ -27,6 +26,7 @@
 import java.security.PrivilegedAction;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Utility methods used by ApplicationCreator.
@@ -78,7 +78,7 @@
             + "Must be present before .launch file can be created");
       }
 
-      String lcPath = StringCase.toLower(path);
+      String lcPath = path.toLowerCase(Locale.ROOT);
 
       if (f.isDirectory()) {
         // For a directory, we assume it contains compiled class files
diff --git a/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java b/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java
index 4637a33..b3fa2f1 100644
--- a/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java
+++ b/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java
@@ -27,11 +27,11 @@
 import com.google.gwt.core.ext.typeinfo.JClassType;
 import com.google.gwt.core.ext.typeinfo.NotFoundException;
 import com.google.gwt.core.ext.typeinfo.TypeOracle;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.user.rebind.ClassSourceFileComposerFactory;
 import com.google.gwt.user.rebind.SourceWriter;
 
 import java.io.PrintWriter;
+import java.util.Locale;
 
 /**
  * Generator for {@link com.google.gwt.useragent.client.UserAgent}.
@@ -73,7 +73,7 @@
       throw new UnableToCompleteException();
     }
 
-    String userAgentValueInitialCap = StringCase.toUpper(userAgentValue.substring(0, 1))
+    String userAgentValueInitialCap = userAgentValue.substring(0, 1).toUpperCase(Locale.ROOT)
         + userAgentValue.substring(1);
     className = className + "Impl" + userAgentValueInitialCap;
 
diff --git a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
index b00f008..1350bb8 100644
--- a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
+++ b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
@@ -26,7 +26,6 @@
 import com.google.gwt.core.ext.typeinfo.JMethod;
 import com.google.gwt.core.ext.typeinfo.JPrimitiveType;
 import com.google.gwt.core.ext.typeinfo.JType;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.jjs.ast.JBooleanLiteral;
 import com.google.gwt.dev.jjs.ast.JCharLiteral;
 import com.google.gwt.dev.jjs.ast.JDoubleLiteral;
@@ -76,6 +75,7 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
@@ -201,7 +201,7 @@
     if (propertyName.length() == 0) {
       return "";
     }
-    String cap = StringCase.toUpper(propertyName.substring(0, 1));
+    String cap = propertyName.substring(0, 1).toUpperCase(Locale.ROOT);
     if (propertyName.length() > 1) {
       cap += propertyName.substring(1);
     }
diff --git a/user/src/com/google/gwt/view/client/DefaultSelectionEventManager.java b/user/src/com/google/gwt/view/client/DefaultSelectionEventManager.java
index 20d272f..8a126c3 100644
--- a/user/src/com/google/gwt/view/client/DefaultSelectionEventManager.java
+++ b/user/src/com/google/gwt/view/client/DefaultSelectionEventManager.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.BrowserEvents;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.InputElement;
@@ -24,6 +23,7 @@
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -151,9 +151,9 @@
 
         // Determine if we clicked on a checkbox.
         Element target = nativeEvent.getEventTarget().cast();
-        if ("input".equals(StringCase.toLower(target.getTagName()))) {
+        if ("input".equals(target.getTagName().toLowerCase(Locale.ROOT))) {
           final InputElement input = target.cast();
-          if ("checkbox".equals(StringCase.toLower(input.getType()))) {
+          if ("checkbox".equals(input.getType().toLowerCase(Locale.ROOT))) {
             // Synchronize the checkbox with the current selection state.
             input.setChecked(event.getDisplay().getSelectionModel().isSelected(
                 event.getValue()));
diff --git a/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java b/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java
index 36e1597..16af994 100644
--- a/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java
+++ b/user/src/com/google/web/bindery/requestfactory/vm/testing/UrlRequestTransport.java
@@ -15,7 +15,6 @@
  */
 package com.google.web.bindery.requestfactory.vm.testing;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.web.bindery.requestfactory.shared.RequestFactory;
 import com.google.web.bindery.requestfactory.shared.RequestTransport;
 import com.google.web.bindery.requestfactory.shared.ServerFailure;
@@ -29,6 +28,7 @@
 import java.net.URL;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.zip.GZIPInputStream;
 import java.util.zip.InflaterInputStream;
@@ -61,7 +61,7 @@
    */
   public UrlRequestTransport(URL url) {
     this.url = url;
-    String proto = StringCase.toLower(url.getProtocol());
+    String proto = url.getProtocol().toLowerCase(Locale.ROOT);
     if (!proto.equals("http") && !proto.equals("https")) {
       throw new IllegalArgumentException("Only http and https URLs supported");
     }
diff --git a/user/super/com/google/gwt/core/translatable/com/google/gwt/core/shared/impl/StringCase.java b/user/super/com/google/gwt/core/translatable/com/google/gwt/core/shared/impl/StringCase.java
deleted file mode 100644
index 97326a5..0000000
--- a/user/super/com/google/gwt/core/translatable/com/google/gwt/core/shared/impl/StringCase.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright 2014 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
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.core.shared.impl;
-
-import com.google.gwt.core.client.GwtScriptOnly;
-
-/**
- * Provides {@link Locale} independent {@link String#toLowerCase()} and {@link String#toLowerCase()}
- * functions.
- * <p>
- * This translated version directly calls corresponding methods as they are already
- * locale-independent in the emulated versions.
- */
-@GwtScriptOnly
-public class StringCase {
-  public static String toLower(String string) {
-    return string.toLowerCase();
-  }
-
-  public static String toUpper(String string) {
-    return string.toUpperCase();
-  }
-}
diff --git a/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java b/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java
index b41b7b1..58c06d2 100644
--- a/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java
+++ b/user/test/com/google/gwt/canvas/dom/client/Context2dTest.java
@@ -21,12 +21,13 @@
 import com.google.gwt.canvas.dom.client.Context2d.LineJoin;
 import com.google.gwt.canvas.dom.client.Context2d.TextAlign;
 import com.google.gwt.canvas.dom.client.Context2d.TextBaseline;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.ui.RootPanel;
 
+import java.util.Locale;
+
 /**
  * Tests {@link Context2d}.
  * 
@@ -455,7 +456,7 @@
     context.setShadowOffsetY(4);
     context.lineTo(60, 40);
     assertEquals(3.0, context.getShadowBlur());
-    assertEquals("#ff00ff", StringCase.toLower(context.getShadowColor()));
+    assertEquals("#ff00ff", context.getShadowColor().toLowerCase(Locale.ROOT));
     assertEquals(3.0, context.getShadowOffsetX());
     assertEquals(4.0, context.getShadowOffsetY());
   }
diff --git a/user/test/com/google/gwt/cell/client/ImageLoadingCellTest.java b/user/test/com/google/gwt/cell/client/ImageLoadingCellTest.java
index e9706b7..4a7a804 100644
--- a/user/test/com/google/gwt/cell/client/ImageLoadingCellTest.java
+++ b/user/test/com/google/gwt/cell/client/ImageLoadingCellTest.java
@@ -16,12 +16,13 @@
 package com.google.gwt.cell.client;
 
 import com.google.gwt.cell.client.Cell.Context;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.ImageElement;
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link TextCell}.
  */
@@ -43,8 +44,8 @@
     assertEquals(2, elem.getChildCount());
     Element imgWrapper = elem.getChild(1).cast();
     ImageElement img = imgWrapper.getFirstChildElement().cast();
-    assertEquals("img", StringCase.toLower(img.getTagName()));
-    assertTrue(StringCase.toLower(img.getSrc()).endsWith("test.png"));
+    assertEquals("img", img.getTagName().toLowerCase(Locale.ROOT));
+    assertTrue(img.getSrc().toLowerCase(Locale.ROOT).endsWith("test.png"));
   }
 
   @Override
@@ -63,8 +64,8 @@
     assertEquals(2, elem.getChildCount());
     Element imgWrapper = elem.getChild(1).cast();
     ImageElement img = imgWrapper.getFirstChildElement().cast();
-    assertEquals("img", StringCase.toLower(img.getTagName()));
-    assertTrue(StringCase.toLower(img.getSrc()).endsWith("test.png"));
+    assertEquals("img", img.getTagName().toLowerCase(Locale.ROOT));
+    assertTrue(img.getSrc().toLowerCase(Locale.ROOT).endsWith("test.png"));
   }
 
   @Override
diff --git a/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java b/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
index f50cee4..17d3e58 100644
--- a/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/CompilerTest.java
@@ -16,7 +16,6 @@
 package com.google.gwt.dev.jjs.test;
 
 import com.google.gwt.core.client.JavaScriptException;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dev.jjs.test.compilertests.MethodNamedSameAsClass;
 import com.google.gwt.junit.client.GWTTestCase;
 
@@ -24,6 +23,7 @@
 
 import java.util.ArrayList;
 import java.util.EventListener;
+import java.util.Locale;
 
 /**
  * Miscellaneous tests of the Java to JavaScript compiler.
@@ -1232,7 +1232,7 @@
     assertFalse("Hello, AJAX".equals("me"));
     assertTrue("Hello, AJAX".equals("Hello, AJAX"));
     assertTrue("Hello, AJAX".equalsIgnoreCase("HELLO, ajax"));
-    assertEquals("hello, ajax", StringCase.toLower("Hello, AJAX"));
+    assertEquals("hello, ajax", "Hello, AJAX".toLowerCase(Locale.ROOT));
 
     assertEquals("foobar", "foo" + barShouldInline());
     assertEquals("1bar", 1 + barShouldInline());
diff --git a/user/test/com/google/gwt/dom/client/DocumentTest.java b/user/test/com/google/gwt/dom/client/DocumentTest.java
index 2cfeacc..6173599 100644
--- a/user/test/com/google/gwt/dom/client/DocumentTest.java
+++ b/user/test/com/google/gwt/dom/client/DocumentTest.java
@@ -15,11 +15,12 @@
  */
 package com.google.gwt.dom.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 
+import java.util.Locale;
+
 /**
  * Tests the {@link Document} class.
  */
@@ -34,110 +35,110 @@
   public void testElementCreators() {
     Document doc = Document.get();
 
-    assertEquals("a", StringCase.toLower(doc.createAnchorElement().getTagName()));
-    assertEquals("area", StringCase.toLower(doc.createAreaElement().getTagName()));
-    assertEquals("base", StringCase.toLower(doc.createBaseElement().getTagName()));
+    assertEquals("a", doc.createAnchorElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("area", doc.createAreaElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("base", doc.createBaseElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("blockquote",
-        StringCase.toLower(doc.createBlockQuoteElement().getTagName()));
-    assertEquals("br", StringCase.toLower(doc.createBRElement().getTagName()));
+        doc.createBlockQuoteElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("br", doc.createBRElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("caption",
-        StringCase.toLower(doc.createCaptionElement().getTagName()));
-    assertEquals("col", StringCase.toLower(doc.createColElement().getTagName()));
+        doc.createCaptionElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("col", doc.createColElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("colgroup",
-        StringCase.toLower(doc.createColGroupElement().getTagName()));
-    assertEquals("del", StringCase.toLower(doc.createDelElement().getTagName()));
-    assertEquals("div", StringCase.toLower(doc.createDivElement().getTagName()));
-    assertEquals("dl", StringCase.toLower(doc.createDLElement().getTagName()));
+        doc.createColGroupElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("del", doc.createDelElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("div", doc.createDivElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("dl", doc.createDLElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("fieldset",
-        StringCase.toLower(doc.createFieldSetElement().getTagName()));
-    assertEquals("form", StringCase.toLower(doc.createFormElement().getTagName()));
-    assertEquals("frame", StringCase.toLower(doc.createFrameElement().getTagName()));
+        doc.createFieldSetElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("form", doc.createFormElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("frame", doc.createFrameElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("frameset",
-        StringCase.toLower(doc.createFrameSetElement().getTagName()));
-    assertEquals("head", StringCase.toLower(doc.createHeadElement().getTagName()));
-    assertEquals("h1", StringCase.toLower(doc.createHElement(1).getTagName()));
-    assertEquals("hr", StringCase.toLower(doc.createHRElement().getTagName()));
-    assertEquals("iframe", StringCase.toLower(doc.createIFrameElement().getTagName()));
-    assertEquals("img", StringCase.toLower(doc.createImageElement().getTagName()));
-    assertEquals("ins", StringCase.toLower(doc.createInsElement().getTagName()));
-    assertEquals("label", StringCase.toLower(doc.createLabelElement().getTagName()));
-    assertEquals("legend", StringCase.toLower(doc.createLegendElement().getTagName()));
-    assertEquals("li", StringCase.toLower(doc.createLIElement().getTagName()));
-    assertEquals("link", StringCase.toLower(doc.createLinkElement().getTagName()));
-    assertEquals("map", StringCase.toLower(doc.createMapElement().getTagName()));
-    assertEquals("meta", StringCase.toLower(doc.createMetaElement().getTagName()));
-    assertEquals("object", StringCase.toLower(doc.createObjectElement().getTagName()));
-    assertEquals("ol", StringCase.toLower(doc.createOLElement().getTagName()));
+        doc.createFrameSetElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("head", doc.createHeadElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("h1", doc.createHElement(1).getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("hr", doc.createHRElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("iframe", doc.createIFrameElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("img", doc.createImageElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("ins", doc.createInsElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("label", doc.createLabelElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("legend", doc.createLegendElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("li", doc.createLIElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("link", doc.createLinkElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("map", doc.createMapElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("meta", doc.createMetaElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("object", doc.createObjectElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("ol", doc.createOLElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("optgroup",
-        StringCase.toLower(doc.createOptGroupElement().getTagName()));
-    assertEquals("option", StringCase.toLower(doc.createOptionElement().getTagName()));
-    assertEquals("param", StringCase.toLower(doc.createParamElement().getTagName()));
-    assertEquals("p", StringCase.toLower(doc.createPElement().getTagName()));
-    assertEquals("pre", StringCase.toLower(doc.createPreElement().getTagName()));
-    assertEquals("q", StringCase.toLower(doc.createQElement().getTagName()));
-    assertEquals("script", StringCase.toLower(doc.createScriptElement().getTagName()));
-    assertEquals("select", StringCase.toLower(doc.createSelectElement().getTagName()));
+        doc.createOptGroupElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("option", doc.createOptionElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("param", doc.createParamElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("p", doc.createPElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("pre", doc.createPreElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("q", doc.createQElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("script", doc.createScriptElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("select", doc.createSelectElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("select",
-        StringCase.toLower(doc.createSelectElement(false).getTagName()));
-    assertEquals("span", StringCase.toLower(doc.createSpanElement().getTagName()));
-    assertEquals("style", StringCase.toLower(doc.createStyleElement().getTagName()));
-    assertEquals("table", StringCase.toLower(doc.createTableElement().getTagName()));
-    assertEquals("tbody", StringCase.toLower(doc.createTBodyElement().getTagName()));
-    assertEquals("td", StringCase.toLower(doc.createTDElement().getTagName()));
+        doc.createSelectElement(false).getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("span", doc.createSpanElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("style", doc.createStyleElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("table", doc.createTableElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("tbody", doc.createTBodyElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("td", doc.createTDElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("textarea",
-        StringCase.toLower(doc.createTextAreaElement().getTagName()));
-    assertEquals("tfoot", StringCase.toLower(doc.createTFootElement().getTagName()));
-    assertEquals("thead", StringCase.toLower(doc.createTHeadElement().getTagName()));
-    assertEquals("th", StringCase.toLower(doc.createTHElement().getTagName()));
-    assertEquals("title", StringCase.toLower(doc.createTitleElement().getTagName()));
-    assertEquals("tr", StringCase.toLower(doc.createTRElement().getTagName()));
-    assertEquals("ul", StringCase.toLower(doc.createULElement().getTagName()));
+        doc.createTextAreaElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("tfoot", doc.createTFootElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("thead", doc.createTHeadElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("th", doc.createTHElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("title", doc.createTitleElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("tr", doc.createTRElement().getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("ul", doc.createULElement().getTagName().toLowerCase(Locale.ROOT));
 
     assertEquals("button",
-        StringCase.toLower(doc.createPushButtonElement().getTagName()));
+        doc.createPushButtonElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("button",
-        StringCase.toLower(doc.createResetButtonElement().getTagName()));
+        doc.createResetButtonElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("button",
-        StringCase.toLower(doc.createSubmitButtonElement().getTagName()));
+        doc.createSubmitButtonElement().getTagName().toLowerCase(Locale.ROOT));
 
     assertEquals("button",
-        StringCase.toLower(doc.createPushButtonElement().getType()));
+        doc.createPushButtonElement().getType().toLowerCase(Locale.ROOT));
     assertEquals("reset",
-        StringCase.toLower(doc.createResetButtonElement().getType()));
+        doc.createResetButtonElement().getType().toLowerCase(Locale.ROOT));
     assertEquals("submit",
-        StringCase.toLower(doc.createSubmitButtonElement().getType()));
+        doc.createSubmitButtonElement().getType().toLowerCase(Locale.ROOT));
 
     assertEquals("input",
-        StringCase.toLower(doc.createCheckInputElement().getTagName()));
+        doc.createCheckInputElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("input",
-        StringCase.toLower(doc.createFileInputElement().getTagName()));
+        doc.createFileInputElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("input",
-        StringCase.toLower(doc.createHiddenInputElement().getTagName()));
+        doc.createHiddenInputElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("input",
-        StringCase.toLower(doc.createImageInputElement().getTagName()));
+        doc.createImageInputElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("input",
-        StringCase.toLower(doc.createPasswordInputElement().getTagName()));
+        doc.createPasswordInputElement().getTagName().toLowerCase(Locale.ROOT));
     assertEquals("input",
-        StringCase.toLower(doc.createRadioInputElement("foo").getTagName()));
+        doc.createRadioInputElement("foo").getTagName().toLowerCase(Locale.ROOT));
     assertEquals("input",
-        StringCase.toLower(doc.createTextInputElement().getTagName()));
+        doc.createTextInputElement().getTagName().toLowerCase(Locale.ROOT));
 
     assertEquals("button",
-        StringCase.toLower(doc.createButtonInputElement().getType()));
+        doc.createButtonInputElement().getType().toLowerCase(Locale.ROOT));
     assertEquals("checkbox",
-        StringCase.toLower(doc.createCheckInputElement().getType()));
-    assertEquals("file", StringCase.toLower(doc.createFileInputElement().getType()));
+        doc.createCheckInputElement().getType().toLowerCase(Locale.ROOT));
+    assertEquals("file", doc.createFileInputElement().getType().toLowerCase(Locale.ROOT));
     assertEquals("hidden",
-        StringCase.toLower(doc.createHiddenInputElement().getType()));
-    assertEquals("image", StringCase.toLower(doc.createImageInputElement().getType()));
+        doc.createHiddenInputElement().getType().toLowerCase(Locale.ROOT));
+    assertEquals("image", doc.createImageInputElement().getType().toLowerCase(Locale.ROOT));
     assertEquals("password",
-        StringCase.toLower(doc.createPasswordInputElement().getType()));
+        doc.createPasswordInputElement().getType().toLowerCase(Locale.ROOT));
     assertEquals("radio",
-        StringCase.toLower(doc.createRadioInputElement("foo").getType()));
-    assertEquals("reset", StringCase.toLower(doc.createResetInputElement().getType()));
+        doc.createRadioInputElement("foo").getType().toLowerCase(Locale.ROOT));
+    assertEquals("reset", doc.createResetInputElement().getType().toLowerCase(Locale.ROOT));
     assertEquals("submit",
-        StringCase.toLower(doc.createSubmitInputElement().getType()));
-    assertEquals("text", StringCase.toLower(doc.createTextInputElement().getType()));
+        doc.createSubmitInputElement().getType().toLowerCase(Locale.ROOT));
+    assertEquals("text", doc.createTextInputElement().getType().toLowerCase(Locale.ROOT));
   }
 
   /**
diff --git a/user/test/com/google/gwt/dom/client/ElementTest.java b/user/test/com/google/gwt/dom/client/ElementTest.java
index 5f24ddb..8a69690 100644
--- a/user/test/com/google/gwt/dom/client/ElementTest.java
+++ b/user/test/com/google/gwt/dom/client/ElementTest.java
@@ -18,13 +18,14 @@
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Style.Position;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 
+import java.util.Locale;
+
 /**
  * Element tests (many stolen from DOMTest).
  */
@@ -426,7 +427,7 @@
 
     Node div = Document.get().createDivElement();
     assertTrue(Element.is(div));
-    assertEquals("div", StringCase.toLower(Element.as(div).getTagName()));
+    assertEquals("div", Element.as(div).getTagName().toLowerCase(Locale.ROOT));
 
     // Element.is(null) is allowed and should return false.
     assertFalse(Element.is(null));
@@ -434,7 +435,7 @@
     // Element sub-classes like DivElement have is(...) and as(...) too
     assertFalse(DivElement.is(Document.get()));
     assertTrue(DivElement.is(div));
-    assertEquals("div", StringCase.toLower(DivElement.as(div).getTagName()));
+    assertEquals("div", DivElement.as(div).getTagName().toLowerCase(Locale.ROOT));
     assertFalse(DivElement.is(null));
   }
 
@@ -443,7 +444,7 @@
    */
   public void testNamespaces() {
     Element elem = Document.get().createElement("myns:elem");
-    assertEquals("myns:elem", StringCase.toLower(elem.getTagName()));
+    assertEquals("myns:elem", elem.getTagName().toLowerCase(Locale.ROOT));
   }
 
   /**
@@ -452,7 +453,7 @@
   public void testNativeProperties() {
     DivElement div = Document.get().createDivElement();
 
-    assertEquals("div", StringCase.toLower(div.getTagName()));
+    assertEquals("div", div.getTagName().toLowerCase(Locale.ROOT));
 
     div.setClassName("myClass");
     assertEquals(div.getClassName(), "myClass");
@@ -650,8 +651,8 @@
     Element button = div.getFirstChildElement();
     Element img = button.getFirstChildElement();
 
-    assertEquals("button", StringCase.toLower(button.getTagName()));
-    assertEquals("img", StringCase.toLower(img.getTagName()));
+    assertEquals("button", button.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("img", img.getTagName().toLowerCase(Locale.ROOT));
     assertTrue(((ImageElement) img).getSrc().endsWith("foo.gif"));
   }
 
diff --git a/user/test/com/google/gwt/dom/client/NodeTest.java b/user/test/com/google/gwt/dom/client/NodeTest.java
index 9bb512d..54df1a9 100644
--- a/user/test/com/google/gwt/dom/client/NodeTest.java
+++ b/user/test/com/google/gwt/dom/client/NodeTest.java
@@ -16,11 +16,12 @@
 package com.google.gwt.dom.client;
 
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 import com.google.gwt.junit.client.GWTTestCase;
 
+import java.util.Locale;
+
 /**
  * Tests the {@link Node} class.
  */
@@ -218,7 +219,7 @@
     DivElement div = doc.createDivElement();
     Text txt0 = doc.createTextNode("foo");
 
-    assertEquals("div", StringCase.toLower(div.getNodeName()));
+    assertEquals("div", div.getNodeName().toLowerCase(Locale.ROOT));
 
     assertEquals("foo", txt0.getNodeValue());
     txt0.setNodeValue("bar");
diff --git a/user/test/com/google/gwt/dom/client/TableTests.java b/user/test/com/google/gwt/dom/client/TableTests.java
index b978e58..490088c 100644
--- a/user/test/com/google/gwt/dom/client/TableTests.java
+++ b/user/test/com/google/gwt/dom/client/TableTests.java
@@ -15,9 +15,10 @@
  */
 package com.google.gwt.dom.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 
+import java.util.Locale;
+
 /**
  * Tests the {@link TableElement}, {@link TableCaptionElement},
  * {@link TableCellElement}, {@link TableRowElement}, and
@@ -121,9 +122,9 @@
     assertEquals("thead should exist", thead, table.getTHead());
     assertEquals("tfoot should exist", tfoot, table.getTFoot());
 
-    assertEquals("<thead> expected", "thead", StringCase.toLower(thead.getTagName()));
-    assertEquals("<tbody> expected", "tbody", StringCase.toLower(tbody.getTagName()));
-    assertEquals("<tfoot> expected", "tfoot", StringCase.toLower(tfoot.getTagName()));
+    assertEquals("<thead> expected", "thead", thead.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("<tbody> expected", "tbody", tbody.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("<tfoot> expected", "tfoot", tfoot.getTagName().toLowerCase(Locale.ROOT));
 
     // Ensure table row enumeration contains all rows (order of section rows is
     // not guaranteed across browsers).
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 6bfdc01..fade8c5 100644
--- a/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/CompilerConstantStringTest.java
@@ -16,10 +16,11 @@
 package com.google.gwt.emultest.java.lang;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.testing.TestUtils;
 
+import java.util.Locale;
+
 /**
  * This test verifies that the static evaluation performed by the compiler
  * on constant string expressions is correct.
@@ -174,9 +175,9 @@
   }
 
   public void testLowerCase() {
-    assertEquals("abc", StringCase.toLower("AbC"));
-    assertEquals("abc", StringCase.toLower("abc"));
-    assertEquals("", StringCase.toLower(""));
+    assertEquals("abc", "AbC".toLowerCase(Locale.ROOT));
+    assertEquals("abc", "abc".toLowerCase(Locale.ROOT));
+    assertEquals("", "".toLowerCase(Locale.ROOT));
   }
 
   public void testMatch() {
@@ -292,9 +293,9 @@
   }
 
   public void testUpperCase() {
-    assertEquals("abc", StringCase.toLower("AbC"));
-    assertEquals("abc", StringCase.toLower("abc"));
-    assertEquals("", StringCase.toLower(""));
+    assertEquals("abc", "AbC".toLowerCase(Locale.ROOT));
+    assertEquals("abc", "abc".toLowerCase(Locale.ROOT));
+    assertEquals("", "".toLowerCase(Locale.ROOT));
   }
 
   public void testValueOf() {
diff --git a/user/test/com/google/gwt/emultest/java/lang/StringBufferTest.java b/user/test/com/google/gwt/emultest/java/lang/StringBufferTest.java
index 2f1bc79..a8a7185 100644
--- a/user/test/com/google/gwt/emultest/java/lang/StringBufferTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/StringBufferTest.java
@@ -15,9 +15,10 @@
  */
 package com.google.gwt.emultest.java.lang;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 
+import java.util.Locale;
+
 /**
  * This class tests classes StringBuffer and StringBuilder.
  */
@@ -230,9 +231,9 @@
    * This method tests <code>toLowerCase</code>.
    */
   public void testLowerCase() {
-    assertEquals("abc", StringCase.toLower("AbC"));
-    assertEquals("abc", StringCase.toLower("abc"));
-    assertEquals("", StringCase.toLower(""));
+    assertEquals("abc", "AbC".toLowerCase(Locale.ROOT));
+    assertEquals("abc", "abc".toLowerCase(Locale.ROOT));
+    assertEquals("", "".toLowerCase(Locale.ROOT));
   }
 
   /**
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 5a0b674..498c21d 100644
--- a/user/test/com/google/gwt/emultest/java/lang/StringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.testing.TestUtils;
 
@@ -517,7 +516,7 @@
     assertFalse(test.regionMatches(true, 1, "bCdx", 0, 4));
     assertFalse(test.regionMatches(true, 1, "bCdx", 1, 3));
     assertTrue(test.regionMatches(true, 0, "xaBcd", 1, 4));
-    test = StringCase.toUpper(test);
+    test = test.toUpperCase(Locale.ROOT);
     assertTrue(test.regionMatches(true, 0, "XAbCd", 1, 4));
     assertTrue(test.regionMatches(true, 1, "BcD", 0, 3));
     assertTrue(test.regionMatches(true, 1, "bCdx", 0, 3));
diff --git a/user/test/com/google/gwt/emultest/java/util/HashMapTest.java b/user/test/com/google/gwt/emultest/java/util/HashMapTest.java
index cba66ec..a4f4dac 100644
--- a/user/test/com/google/gwt/emultest/java/util/HashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/HashMapTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.emultest.java.util;
 
-import com.google.gwt.core.shared.impl.StringCase;
 
 import org.apache.commons.collections.TestMap;
 
@@ -24,6 +23,7 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Set;
@@ -559,7 +559,7 @@
     assertTrue(keySet.size() == SIZE_ONE);
     assertTrue(keySet.contains(KEY_TEST_KEY_SET));
     assertFalse(keySet.contains(VALUE_TEST_KEY_SET));
-    assertFalse(keySet.contains(StringCase.toUpper(KEY_TEST_KEY_SET)));
+    assertFalse(keySet.contains(KEY_TEST_KEY_SET.toUpperCase(Locale.ROOT)));
   }
 
   /*
@@ -621,18 +621,18 @@
     assertEquals(srcMap.size(), dstMap.size());
     assertTrue(dstMap.containsKey(KEY_1));
     assertTrue(dstMap.containsValue(VALUE_1));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_1)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_1)));
+    assertFalse(dstMap.containsKey(KEY_1.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_1.toUpperCase(Locale.ROOT)));
 
     assertTrue(dstMap.containsKey(KEY_2));
     assertTrue(dstMap.containsValue(VALUE_2));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_2)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_2)));
+    assertFalse(dstMap.containsKey(KEY_2.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_2.toUpperCase(Locale.ROOT)));
 
     assertTrue(dstMap.containsKey(KEY_3));
     assertTrue(dstMap.containsValue(VALUE_3));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_3)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_3)));
+    assertFalse(dstMap.containsKey(KEY_3.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_3.toUpperCase(Locale.ROOT)));
 
     // Check that an empty map does not blow away the contents of the
     // destination map
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 12d5714..d605394 100644
--- a/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/IdentityHashMapTest.java
@@ -16,7 +16,6 @@
 package com.google.gwt.emultest.java.util;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 
 import org.apache.commons.collections.TestMap;
 
@@ -24,6 +23,7 @@
 import java.util.HashMap;
 import java.util.IdentityHashMap;
 import java.util.Iterator;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
@@ -571,7 +571,7 @@
     assertTrue(keySet.size() == SIZE_ONE);
     assertTrue(keySet.contains(KEY_TEST_KEY_SET));
     assertFalse(keySet.contains(VALUE_TEST_KEY_SET));
-    assertFalse(keySet.contains(StringCase.toUpper(KEY_TEST_KEY_SET)));
+    assertFalse(keySet.contains(KEY_TEST_KEY_SET.toUpperCase(Locale.ROOT)));
   }
 
   /*
@@ -606,18 +606,18 @@
     assertEquals(srcMap.size(), dstMap.size());
     assertTrue(dstMap.containsKey(KEY_1));
     assertTrue(dstMap.containsValue(VALUE_1));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_1)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_1)));
+    assertFalse(dstMap.containsKey(KEY_1.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_1.toUpperCase(Locale.ROOT)));
 
     assertTrue(dstMap.containsKey(KEY_2));
     assertTrue(dstMap.containsValue(VALUE_2));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_2)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_2)));
+    assertFalse(dstMap.containsKey(KEY_2.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_2.toUpperCase(Locale.ROOT)));
 
     assertTrue(dstMap.containsKey(KEY_3));
     assertTrue(dstMap.containsValue(VALUE_3));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_3)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_3)));
+    assertFalse(dstMap.containsKey(KEY_3.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_3.toUpperCase(Locale.ROOT)));
 
     // Check that an empty map does not blow away the contents of the
     // destination map
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 840d8e1..a9152ab 100644
--- a/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/LinkedHashMapTest.java
@@ -16,13 +16,13 @@
 package com.google.gwt.emultest.java.util;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 
 import org.apache.commons.collections.TestMap;
 
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
@@ -409,7 +409,7 @@
     assertEquals(SIZE_ONE, keySet.size());
     assertTrue(keySet.contains(KEY_TEST_KEY_SET));
     assertFalse(keySet.contains(VALUE_TEST_KEY_SET));
-    assertFalse(keySet.contains(StringCase.toUpper(KEY_TEST_KEY_SET)));
+    assertFalse(keySet.contains(KEY_TEST_KEY_SET.toUpperCase(Locale.ROOT)));
   }
 
   /*
@@ -569,18 +569,18 @@
     assertEquals(srcMap.size(), dstMap.size());
     assertTrue(dstMap.containsKey(KEY_1));
     assertTrue(dstMap.containsValue(VALUE_1));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_1)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_1)));
+    assertFalse(dstMap.containsKey(KEY_1.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_1.toUpperCase(Locale.ROOT)));
 
     assertTrue(dstMap.containsKey(KEY_2));
     assertTrue(dstMap.containsValue(VALUE_2));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_2)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_2)));
+    assertFalse(dstMap.containsKey(KEY_2.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_2.toUpperCase(Locale.ROOT)));
 
     assertTrue(dstMap.containsKey(KEY_3));
     assertTrue(dstMap.containsValue(VALUE_3));
-    assertFalse(dstMap.containsKey(StringCase.toUpper(KEY_3)));
-    assertFalse(dstMap.containsValue(StringCase.toUpper(VALUE_3)));
+    assertFalse(dstMap.containsKey(KEY_3.toUpperCase(Locale.ROOT)));
+    assertFalse(dstMap.containsValue(VALUE_3.toUpperCase(Locale.ROOT)));
 
     // Check that an empty map does not blow away the contents of the
     // destination map
diff --git a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlAsComponentsTest.java b/user/test/com/google/gwt/uibinder/test/client/SafeHtmlAsComponentsTest.java
index 922490c..39bb83d 100644
--- a/user/test/com/google/gwt/uibinder/test/client/SafeHtmlAsComponentsTest.java
+++ b/user/test/com/google/gwt/uibinder/test/client/SafeHtmlAsComponentsTest.java
@@ -16,13 +16,14 @@
 package com.google.gwt.uibinder.test.client;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.DivElement;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.uibinder.client.UiBinder;
 import com.google.gwt.uibinder.client.UiField;
 
+import java.util.Locale;
+
 /**
  * Test the use of SafeHtml objects as UiBinder components. E.g.
  * 
@@ -54,8 +55,8 @@
   public void testSafeHtml() {
     Ui domUi = new Ui();
     assertNotNull(domUi.safeObject);
-    assertEquals(StringCase.toLower(domUi.safeObject.asString()),
-                 StringCase.toLower(domUi.div.getInnerHTML()));
-    assertEquals(StringCase.toLower("Hello <b>Bob</b>"), StringCase.toLower(domUi.div.getInnerHTML()));
+    assertEquals(domUi.safeObject.asString().toLowerCase(Locale.ROOT),
+                 domUi.div.getInnerHTML().toLowerCase(Locale.ROOT));
+    assertEquals("Hello <b>Bob</b>".toLowerCase(Locale.ROOT), domUi.div.getInnerHTML().toLowerCase(Locale.ROOT));
   }
 }
diff --git a/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java b/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java
index c4f5fe4..87bf806 100644
--- a/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java
+++ b/user/test/com/google/gwt/uibinder/test/client/UiBinderTest.java
@@ -16,7 +16,6 @@
 package com.google.gwt.uibinder.test.client;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.DivElement;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.ParagraphElement;
@@ -46,6 +45,8 @@
 import com.google.gwt.user.client.ui.ValueLabel;
 import com.google.gwt.user.client.ui.Widget;
 
+import java.util.Locale;
+
 /**
  * Functional test of UiBinder.
  */
@@ -91,15 +92,15 @@
   }
 
   public void testTableWithColumns() {
-    assertEquals("col", StringCase.toLower(domUi.narrowColumn.getTagName()));
-    assertEquals("tr", StringCase.toLower(domUi.tr.getTagName()));
-    assertEquals("th", StringCase.toLower(domUi.th1.getTagName()));
-    assertEquals("th", StringCase.toLower(domUi.th2.getTagName()));
+    assertEquals("col", domUi.narrowColumn.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("tr", domUi.tr.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("th", domUi.th1.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("th", domUi.th2.getTagName().toLowerCase(Locale.ROOT));
   }
 
   public void testTableWithExplicitTbody() {
-    assertEquals("tbody", StringCase.toLower(domUi.tbody.getTagName()));
-    assertEquals("th", StringCase.toLower(domUi.th4.getTagName()));
+    assertEquals("tbody", domUi.tbody.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("th", domUi.th4.getTagName().toLowerCase(Locale.ROOT));
   }
 
   public void testAutoboxingFieldRef() {
@@ -281,11 +282,11 @@
   public void testCustomButtonParser() {
     // .toLowerCase normalization to keep IE happy
     assertEquals("<b>click me</b>",
-        StringCase.toLower(widgetUi.pushButton.getUpFace().getHTML()));
+        widgetUi.pushButton.getUpFace().getHTML().toLowerCase(Locale.ROOT));
     assertTrue(widgetUi.pushButton.getUpHoveringFace().getHTML().contains(
         ">Click ME!<"));
     assertEquals("<b>click me!</b>",
-        StringCase.toLower(widgetUi.pushButton.getUpHoveringFace().getHTML()));
+        widgetUi.pushButton.getUpHoveringFace().getHTML().toLowerCase(Locale.ROOT));
     // Can't test the images at all :-P
   }
 
@@ -303,13 +304,13 @@
   public void suppressedForSafari3Fail_testDomTextNoMessageWithFunnyChars() {
     ParagraphElement p = widgetUi.funnyCharsParagraph;
     // WebKit does \n replace thing, so let's do it everywhere
-    String t = StringCase.toLower(p.getInnerHTML().replace("\n", " "));
+    String t = p.getInnerHTML().replace("\n", " ").toLowerCase(Locale.ROOT);
     String expected = "Templates can be marked up for <b>localization</b>, which presents alls "
         + "kinds of exciting opportunities for bugs related to character escaping. "
         + "Consider these funny characters \\ \" \" ' ' &amp; &lt; &gt; &gt; { }, and "
         + "the various places they might make your life miserable, like this "
         + "untranslated paragraph.";
-    expected = StringCase.toLower(expected);
+    expected = expected.toLowerCase(Locale.ROOT);
     assertEquals(expected, t);
   }
 
@@ -616,7 +617,7 @@
   }
 
   public void suppressForIEfail_testBizarrelyElementedWidgets() {
-    assertInOrder(StringCase.toLower(widgetUi.widgetCrazyTable.getInnerHTML()),
+    assertInOrder(widgetUi.widgetCrazyTable.getInnerHTML().toLowerCase(Locale.ROOT),
         "<td>they have been known</td>", "<td>to write widgets</td>",
         "<td>that masquerade</td>", "<td>as table cells,</td>",
         "<td>just like these.</td>", "<td>burma shave</td>");
@@ -655,11 +656,11 @@
 
   public void testUiTextWithSafeHtml() {
     assertEquals("<b>this text should be bold!</b>",
-        StringCase.toLower(widgetUi.htmlWithComputedSafeHtml.getHTML()));
+        widgetUi.htmlWithComputedSafeHtml.getHTML().toLowerCase(Locale.ROOT));
     assertEquals("&lt;b&gt;this text won't be bold!&lt;/b&gt;",
-        StringCase.toLower(widgetUi.htmlWithComputedText.getHTML()).replaceAll(">", "&gt;"));
+        widgetUi.htmlWithComputedText.getHTML().toLowerCase(Locale.ROOT).replaceAll(">", "&gt;"));
     assertEquals("<b>this text won't be bold!</b>",
-        StringCase.toLower(widgetUi.labelWithComputedText.getText()));
+        widgetUi.labelWithComputedText.getText().toLowerCase(Locale.ROOT));
   }
 
   public void testFlowPanelWithTag() {
@@ -685,12 +686,12 @@
    * IE's habit of returning capitalized DOM elements.
    */
   private void assertInOrder(String body, String... expected) {
-    body = StringCase.toLower(body);
+    body = body.toLowerCase(Locale.ROOT);
     int lastIndex = 0;
     String lastExpected = "";
 
     for (String next : expected) {
-      next = StringCase.toLower(next);
+      next = next.toLowerCase(Locale.ROOT);
       int index = body.indexOf(next);
       assertTrue(body + " should contain " + next, index > -1);
       assertTrue("Expect " + next + " after " + lastExpected, index > lastIndex);
diff --git a/user/test/com/google/gwt/uibinder/test/client/UiRendererTest.java b/user/test/com/google/gwt/uibinder/test/client/UiRendererTest.java
index cf473ad..6525c29 100644
--- a/user/test/com/google/gwt/uibinder/test/client/UiRendererTest.java
+++ b/user/test/com/google/gwt/uibinder/test/client/UiRendererTest.java
@@ -16,7 +16,6 @@
 package com.google.gwt.uibinder.test.client;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.DivElement;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Node;
@@ -25,6 +24,8 @@
 import com.google.gwt.safehtml.shared.SafeHtml;
 import com.google.gwt.uibinder.test.client.UiRendererUi.HtmlRenderer;
 
+import java.util.Locale;
+
 /**
  * Functional test of UiBinder.
  */
@@ -217,7 +218,7 @@
 
     // Was the first span rendered as a "HTML-safe" text string?
     Node spanWithConstantTextNode = innerDiv.getChild(0);
-    assertEquals("span", StringCase.toLower(spanWithConstantTextNode.getNodeName()));
+    assertEquals("span", spanWithConstantTextNode.getNodeName().toLowerCase(Locale.ROOT));
     assertEquals(Node.TEXT_NODE, spanWithConstantTextNode.getFirstChild().getNodeType());
     assertEquals("<b>This text won't be bold!</b>",
         spanWithConstantTextNode.getFirstChild().getNodeValue());
@@ -237,13 +238,13 @@
     // Fields not present in owning class produce no content
     Node spanNode = innerDiv.getChild(4);
     assertEquals(Node.ELEMENT_NODE, spanNode.getNodeType());
-    assertEquals("span", StringCase.toLower(spanNode.getNodeName()));
+    assertEquals("span", spanNode.getNodeName().toLowerCase(Locale.ROOT));
     assertFalse(spanNode.hasChildNodes());
 
     // Field passed to render() and used twice was rendered correctly too
     Node spanNode2 = innerDiv.getChild(5);
     assertEquals(Node.ELEMENT_NODE, spanNode2.getNodeType());
-    assertEquals("span", StringCase.toLower(spanNode2.getNodeName()));
+    assertEquals("span", spanNode2.getNodeName().toLowerCase(Locale.ROOT));
     assertTrue(spanNode2.hasChildNodes());
     assertSpanContainsRenderedValueText(RENDERED_VALUE_TWICE + RENDERED_VALUE_TWICE,
         spanNode2.getFirstChild());
@@ -272,7 +273,7 @@
   private void assertSpanContainsRenderedValue(Node root) {
     Node firstFieldNode = root.getChild(2);
     assertEquals(Node.ELEMENT_NODE, firstFieldNode.getNodeType());
-    assertEquals("span", StringCase.toLower(firstFieldNode.getNodeName()));
+    assertEquals("span", firstFieldNode.getNodeName().toLowerCase(Locale.ROOT));
     assertTrue(firstFieldNode.hasChildNodes());
     Node renderedValue = firstFieldNode.getFirstChild();
     assertSpanContainsRenderedValueText(RENDERED_VALUE, renderedValue);
diff --git a/user/test/com/google/gwt/user/cellview/client/CellTableTest.java b/user/test/com/google/gwt/user/cellview/client/CellTableTest.java
index 5a6b152..a65772c 100644
--- a/user/test/com/google/gwt/user/cellview/client/CellTableTest.java
+++ b/user/test/com/google/gwt/user/cellview/client/CellTableTest.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.cell.client.TextCell;
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.dom.client.TableCellElement;
@@ -31,6 +30,8 @@
 import com.google.gwt.user.client.ui.RootPanel;
 import com.google.gwt.user.client.ui.Widget;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link CellTable}.
  */
@@ -295,13 +296,13 @@
     table.setColumnWidth(column1, "100px");
     Element col0 = table.colgroup.getFirstChildElement();
     Element col1 = col0.getNextSiblingElement();
-    assertEquals("100px", StringCase.toLower(col1.getStyle().getWidth()));
+    assertEquals("100px", col1.getStyle().getWidth().toLowerCase(Locale.ROOT));
 
     // Remove column 1.
     table.removeColumn(column1);
     table.getPresenter().flush();
     assertEquals("0px", col1.getStyle().getWidth());
-    assertEquals("none", StringCase.toLower(col1.getStyle().getDisplay()));
+    assertEquals("none", col1.getStyle().getDisplay().toLowerCase(Locale.ROOT));
   }
 
   public void testEmptyTableWidgetAttachDetach() {
@@ -346,7 +347,7 @@
     Element col0 = table.colgroup.getFirstChildElement();
     Element col1 = col0.getNextSiblingElement();
     assertEquals("", col0.getStyle().getWidth());
-    assertEquals("100px", StringCase.toLower(col1.getStyle().getWidth()));
+    assertEquals("100px", col1.getStyle().getWidth().toLowerCase(Locale.ROOT));
 
     // Clear the width.
     table.clearColumnWidth(column1);
@@ -355,7 +356,7 @@
 
     // Set the width again.
     table.setColumnWidth(column0, 30.1, Unit.PCT);
-    assertEquals("30.1%", StringCase.toLower(col0.getStyle().getWidth()));
+    assertEquals("30.1%", col0.getStyle().getWidth().toLowerCase(Locale.ROOT));
     assertEquals("", col1.getStyle().getWidth());
   }
 
diff --git a/user/test/com/google/gwt/user/client/ui/AnchorTest.java b/user/test/com/google/gwt/user/client/ui/AnchorTest.java
index 7bf6092..d8c37c3 100644
--- a/user/test/com/google/gwt/user/client/ui/AnchorTest.java
+++ b/user/test/com/google/gwt/user/client/ui/AnchorTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -24,6 +23,8 @@
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link Anchor}.
  */
@@ -123,12 +124,12 @@
     String target = "_blank";
     Anchor anchor1 = new Anchor(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(StringCase.toLower(html), StringCase.toLower(anchor1.getHTML()));
+    assertEquals(html.toLowerCase(Locale.ROOT), anchor1.getHTML().toLowerCase(Locale.ROOT));
     
     Anchor anchor2 = new Anchor(
         SafeHtmlUtils.fromSafeConstant(html), href, target);
     
-    assertEquals(html, StringCase.toLower(anchor2.getHTML()));
+    assertEquals(html, anchor2.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(href, anchor2.getHref());
     assertEquals(target, anchor2.getTarget());
   }
@@ -137,7 +138,7 @@
     Anchor anchor = new Anchor("hello");
     anchor.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(anchor.getHTML()));
+    assertEquals(html, anchor.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testScriptAnchor() {
diff --git a/user/test/com/google/gwt/user/client/ui/ButtonTest.java b/user/test/com/google/gwt/user/client/ui/ButtonTest.java
index 2a1b4bb..40518e2 100644
--- a/user/test/com/google/gwt/user/client/ui/ButtonTest.java
+++ b/user/test/com/google/gwt/user/client/ui/ButtonTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -25,6 +24,8 @@
 import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
 import com.google.gwt.user.client.ui.FormPanel.SubmitHandler;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link Button}.
  */
@@ -114,19 +115,19 @@
     Button button = new Button("hello");
     button.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSafeHtmlConstructor() {
     Button button = new Button(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSafeHtmlWithHandler() {
     H handler = new H();
     Button button = new Button(SafeHtmlUtils.fromSafeConstant(html), handler);
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/CaptionPanelTest.java b/user/test/com/google/gwt/user/client/ui/CaptionPanelTest.java
index 58b6d8f..2a85d99 100644
--- a/user/test/com/google/gwt/user/client/ui/CaptionPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/CaptionPanelTest.java
@@ -15,12 +15,13 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.ui.HasWidgetsTester.WidgetAdder;
 
+import java.util.Locale;
+
 /**
  * Tests {@link CaptionPanel}.
  */
@@ -166,8 +167,8 @@
   }
 
   private void assertEqualsIgnoreCase(String expected, String actual) {
-    String expectedLc = expected != null ? StringCase.toLower(expected) : null;
-    String actualLc = actual != null ? StringCase.toLower(actual) : null;
+    String expectedLc = expected != null ? expected.toLowerCase(Locale.ROOT) : null;
+    String actualLc = actual != null ? actual.toLowerCase(Locale.ROOT) : null;
     assertEquals(expectedLc, actualLc);
   }
 
@@ -275,7 +276,7 @@
       assertSame(widget, panel.getContentWidget());
       Element panelFirstChild = panel.getElement().getFirstChildElement();
       // The legend element ought to be removed from the DOM at this point.
-      assertNotEquals("legend", StringCase.toLower(panelFirstChild.getTagName()));
+      assertNotEquals("legend", panelFirstChild.getTagName().toLowerCase(Locale.ROOT));
       // (Perhaps redundantly) check that the one child is the content widget.
       assertSame(panelFirstChild, widget.getElement());
       assertNull(panelFirstChild.getNextSibling());
@@ -328,14 +329,14 @@
   public void testSafeHtmlConstructor() {
     CaptionPanel panel = new CaptionPanel(SafeHtmlUtils.fromSafeConstant(html));
 
-    assertEquals(html, StringCase.toLower(panel.getCaptionHTML()));
+    assertEquals(html, panel.getCaptionHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSetCaptionSafeHtml() {
     CaptionPanel panel = new CaptionPanel("hiworld");
     panel.setCaptionHTML(SafeHtmlUtils.fromSafeConstant(html));
 
-    assertEquals(html, StringCase.toLower(panel.getCaptionHTML()));
+    assertEquals(html, panel.getCaptionHTML().toLowerCase(Locale.ROOT));
   }
 
   private CaptionPanel createEmptyCaptionPanel() {
diff --git a/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java b/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java
index c612080..1aa3133 100644
--- a/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java
+++ b/user/test/com/google/gwt/user/client/ui/CheckBoxTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.InputElement;
@@ -29,6 +28,8 @@
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
 
+import java.util.Locale;
+
 /**
  * Tests the CheckBox Widget.
  */
@@ -231,14 +232,14 @@
   public void testSafeHtmlConstructor() {
     CheckBox box = new CheckBox(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(box.getHTML()));
+    assertEquals(html, box.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSetSafeHtml() {
     CheckBox box = new CheckBox("hello");
     box.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(box.getHTML()));
+    assertEquals(html, box.getHTML().toLowerCase(Locale.ROOT));
   }
 
   @SuppressWarnings("deprecation")
diff --git a/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java b/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java
index b3efe36..2dcb6e7 100644
--- a/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java
+++ b/user/test/com/google/gwt/user/client/ui/CustomButtonTest.java
@@ -16,7 +16,6 @@
 
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
@@ -29,6 +28,7 @@
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -145,7 +145,7 @@
       Face f = entry.getValue();
       String faceName = entry.getKey();
       assertEquals(f.getText(), faceName);
-      assertEquals(StringCase.toLower(f.getHTML()), "<b>" + StringCase.toLower(faceName)
+      assertEquals(f.getHTML().toLowerCase(Locale.ROOT), "<b>" + faceName.toLowerCase(Locale.ROOT)
           + "</b>");
     }
   }
@@ -154,7 +154,7 @@
     PushButton button = new PushButton();
     button.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSyntheticClick() {
diff --git a/user/test/com/google/gwt/user/client/ui/DOMTest.java b/user/test/com/google/gwt/user/client/ui/DOMTest.java
index a2d9710..6dafda4 100644
--- a/user/test/com/google/gwt/user/client/ui/DOMTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DOMTest.java
@@ -19,7 +19,6 @@
 import com.google.gwt.core.client.GWT.UncaughtExceptionHandler;
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.BodyElement;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
@@ -35,6 +34,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Tests standard DOM operations in the {@link DOM} class.
@@ -357,20 +357,20 @@
   public void testToString() {
     Button b = new Button("abcdef");
     assertTrue(b.toString().indexOf("abcdef") != -1);
-    assertTrue(StringCase.toLower(b.toString()).indexOf("button") != -1);
+    assertTrue(b.toString().toLowerCase(Locale.ROOT).indexOf("button") != -1);
 
     // Test <img src="http://.../logo.gif" />
     Element image = DOM.createImg();
     String imageUrl = "http://www.google.com/images/logo.gif";
     DOM.setImgSrc(image, imageUrl);
-    String imageToString = StringCase.toLower(DOM.toString(image).trim());
+    String imageToString = DOM.toString(image).trim().toLowerCase(Locale.ROOT);
     assertTrue(imageToString.startsWith("<img"));
     assertTrue(imageToString.indexOf(imageUrl) != -1);
 
     // Test <input name="flinks" />
     Element input = DOM.createInputText();
     DOM.setElementProperty(input, "name", "flinks");
-    final String inputToString = StringCase.toLower(DOM.toString(input).trim());
+    final String inputToString = DOM.toString(input).trim().toLowerCase(Locale.ROOT);
     assertTrue(inputToString.startsWith("<input"));
 
     // Test <select><option>....</select>
@@ -380,7 +380,7 @@
       DOM.appendChild(select, option);
       DOM.setInnerText(option, "item #" + i);
     }
-    String selectToString = StringCase.toLower(DOM.toString(select).trim());
+    String selectToString = DOM.toString(select).trim().toLowerCase(Locale.ROOT);
     assertTrue(selectToString.startsWith("<select"));
     for (int i = 0; i < 10; i++) {
       assertTrue(selectToString.indexOf("item #" + i) != -1);
@@ -389,7 +389,7 @@
     // Test <meta name="robots" />
     Element meta = DOM.createElement("meta");
     DOM.setElementProperty(meta, "name", "robots");
-    String metaToString = StringCase.toLower(DOM.toString(meta).trim());
+    String metaToString = DOM.toString(meta).trim().toLowerCase(Locale.ROOT);
     assertTrue(metaToString.startsWith("<meta"));
   }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java b/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
index 40dd46b..b02bd66 100644
--- a/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DialogBoxTest.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
@@ -34,6 +33,8 @@
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
 
+import java.util.Locale;
+
 /**
  * Unit test for {@link DialogBox}.
  */
@@ -237,7 +238,7 @@
     DialogBox box = new DialogBox();
     box.setHTML(SafeHtmlUtils.fromSafeConstant(html));
 
-    assertEquals(html, StringCase.toLower(box.getHTML()));
+    assertEquals(html, box.getHTML().toLowerCase(Locale.ROOT));
   }
 
   /**
@@ -250,7 +251,7 @@
     Element td = dialogBox.getCellElement(0, 1);
     assertEquals(dialogBox.getText(), "text");
     caption.setHTML("<b>text</b>");
-    assertEquals("<b>text</b>", StringCase.toLower(dialogBox.getHTML()));
+    assertEquals("<b>text</b>", dialogBox.getHTML().toLowerCase(Locale.ROOT));
     dialogBox.show();
     assertTrue(dialogBox.getCaption() == caption);
     assertTrue(caption.asWidget().getElement() == DOM.getChild(td, 0));
diff --git a/user/test/com/google/gwt/user/client/ui/DirectionalTextHelperTest.java b/user/test/com/google/gwt/user/client/ui/DirectionalTextHelperTest.java
index 6f13dde..2f181ca 100644
--- a/user/test/com/google/gwt/user/client/ui/DirectionalTextHelperTest.java
+++ b/user/test/com/google/gwt/user/client/ui/DirectionalTextHelperTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.i18n.client.BidiUtils;
@@ -24,6 +23,8 @@
 import com.google.gwt.i18n.shared.AnyRtlDirectionEstimator;
 import com.google.gwt.junit.client.GWTTestCase;
 
+import java.util.Locale;
+
 /**
  * Tests {@link DirectionalTextHelper}.
  */
@@ -188,7 +189,7 @@
       // assertEquals(id + "retreived html is incorrect", iwContent,
       //     directionalTextHelper.getTextOrHtml(true).toLowerCase());
       assertEquals(id + "retreived text is incorrect", IW_TEXT,
-          StringCase.toLower(directionalTextHelper.getTextOrHtml(false)));
+          directionalTextHelper.getTextOrHtml(false).toLowerCase(Locale.ROOT));
     }
   }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java b/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
index 51a28fd..7ce2595 100644
--- a/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/HTMLPanelTest.java
@@ -16,13 +16,14 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Node;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.client.SafeHtmlTemplates;
 import com.google.gwt.safehtml.shared.SafeHtml;
 
+import java.util.Locale;
+
 /**
  * Tests the HTMLPanel widget.
  */
@@ -345,17 +346,17 @@
     hp.addAndReplaceElement(label, "labelHere");
 
     Element parent = label.getElement().getParentElement();
-    assertEquals("td", StringCase.toLower(parent.getTagName()));
+    assertEquals("td", parent.getTagName().toLowerCase(Locale.ROOT));
 
     parent = parent.getParentElement();
-    assertEquals("tr", StringCase.toLower(parent.getTagName()));
+    assertEquals("tr", parent.getTagName().toLowerCase(Locale.ROOT));
 
     while (parent != null && parent != hp.getElement()) {
       parent = parent.getParentElement();
     }
 
     assertNotNull(parent);
-    assertEquals("table", StringCase.toLower(parent.getTagName()));
+    assertEquals("table", parent.getTagName().toLowerCase(Locale.ROOT));
   }
 
   /**
@@ -365,7 +366,7 @@
     HTMLPanel hp = new HTMLPanel("h3", "");
 
     Element element = hp.getElement();
-    assertEquals("h3", StringCase.toLower(element.getTagName()));
+    assertEquals("h3", element.getTagName().toLowerCase(Locale.ROOT));
     assertEquals("", element.getInnerText());
   }
 
@@ -420,10 +421,10 @@
     hp.addAndReplaceElement(label, "labelHere");
 
     Element parent = label.getElement().getParentElement();
-    assertEquals("td", StringCase.toLower(parent.getTagName()));
+    assertEquals("td", parent.getTagName().toLowerCase(Locale.ROOT));
 
     parent = parent.getParentElement();
-    assertEquals("tr", StringCase.toLower(parent.getTagName()));
+    assertEquals("tr", parent.getTagName().toLowerCase(Locale.ROOT));
 
     // Look for the table in the main panel div
     Element firstChild = null;
@@ -433,8 +434,8 @@
     }
 
     assertNotNull(parent);
-    assertEquals("div", StringCase.toLower(parent.getTagName()));
-    assertEquals("table", StringCase.toLower(firstChild.getTagName()));
+    assertEquals("div", parent.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("table", firstChild.getTagName().toLowerCase(Locale.ROOT));
   }
 
   /**
diff --git a/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java b/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java
index dfe4bd7..322da3a 100644
--- a/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java
+++ b/user/test/com/google/gwt/user/client/ui/HTMLTableTestBase.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.TableCellElement;
 import com.google.gwt.junit.client.GWTTestCase;
@@ -28,6 +27,7 @@
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Base test for HTMLTable derived classes.
@@ -310,7 +310,7 @@
   public void testSafeHtml() {
     HTMLTable table = getTable(1, 1);
     table.setHTML(0, 0, SafeHtmlUtils.fromSafeConstant(html));
-    assertEquals(html, StringCase.toLower(table.getHTML(0, 0)));
+    assertEquals(html, table.getHTML(0, 0).toLowerCase(Locale.ROOT));
   }
 
   public void testStyles() {
diff --git a/user/test/com/google/gwt/user/client/ui/HTMLTest.java b/user/test/com/google/gwt/user/client/ui/HTMLTest.java
index cf4b8b9..3448f4f 100644
--- a/user/test/com/google/gwt/user/client/ui/HTMLTest.java
+++ b/user/test/com/google/gwt/user/client/ui/HTMLTest.java
@@ -15,10 +15,11 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.i18n.client.HasDirection.Direction;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 
+import java.util.Locale;
+
 /**
  * Tests {@link HTML}.
  * Note: tests only the direction and alignment logic.
@@ -43,7 +44,7 @@
   public void testSafeHtmlConstructor() {
     HTML htmlElement = new HTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(htmlElement.getHTML()));
+    assertEquals(html, htmlElement.getHTML().toLowerCase(Locale.ROOT));
   }
 
   // test that the SafeHtml constructor creates the wordwrapped'ed HTML.
@@ -53,8 +54,8 @@
     HTML htmlElementRTL = new HTML(
         SafeHtmlUtils.fromSafeConstant(html), Direction.RTL);
     
-    assertEquals(html, StringCase.toLower(htmlElementRTL.getHTML()));
-    assertEquals(html, StringCase.toLower(htmlElementLTR.getHTML()));
+    assertEquals(html, htmlElementRTL.getHTML().toLowerCase(Locale.ROOT));
+    assertEquals(html, htmlElementLTR.getHTML().toLowerCase(Locale.ROOT));
     
     assertEquals(Direction.LTR, htmlElementLTR.getTextDirection());
     assertEquals(Direction.RTL, htmlElementRTL.getTextDirection());
@@ -64,7 +65,7 @@
     HTML htmlElement = new HTML("<b>foo</b>");
     htmlElement.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(htmlElement.getHTML()));
+    assertEquals(html, htmlElement.getHTML().toLowerCase(Locale.ROOT));
   }
 
   @SuppressWarnings("deprecation")
@@ -72,7 +73,7 @@
     HTML htmlElement = new HTML("<b>foo</b>");
     htmlElement.setHTML(SafeHtmlUtils.fromSafeConstant(html), Direction.LTR);
     
-    assertEquals(html, StringCase.toLower(htmlElement.getHTML()));
+    assertEquals(html, htmlElement.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(Direction.LTR, htmlElement.getDirection());
   }
 
diff --git a/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java b/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java
index dc53a77..ae45ab7 100644
--- a/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java
+++ b/user/test/com/google/gwt/user/client/ui/HyperlinkTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
@@ -27,6 +26,8 @@
 import com.google.gwt.user.client.History;
 import com.google.web.bindery.event.shared.HandlerRegistration;
 
+import java.util.Locale;
+
 /**
  * Tests {@link HyperlinkTest}.
  */
@@ -49,13 +50,13 @@
 
   public void testSafeHtmlConstructor() {
     Hyperlink link = new Hyperlink(SafeHtmlUtils.fromSafeConstant(TEST_HTML), TEST_HISTORY_TOKEN);
-    assertEquals(TEST_HTML, StringCase.toLower(link.getHTML()));
+    assertEquals(TEST_HTML, link.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSetSafeHtml() {
     Hyperlink link = new Hyperlink("foobar", TEST_HISTORY_TOKEN);
     link.setHTML(SafeHtmlUtils.fromSafeConstant(TEST_HTML));
-    assertEquals(TEST_HTML, StringCase.toLower(link.getHTML()));
+    assertEquals(TEST_HTML, link.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testLinkToken() {
diff --git a/user/test/com/google/gwt/user/client/ui/InlineHTMLTest.java b/user/test/com/google/gwt/user/client/ui/InlineHTMLTest.java
index 676fb65..7e5d99f 100644
--- a/user/test/com/google/gwt/user/client/ui/InlineHTMLTest.java
+++ b/user/test/com/google/gwt/user/client/ui/InlineHTMLTest.java
@@ -15,10 +15,11 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.i18n.client.HasDirection.Direction;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 
+import java.util.Locale;
+
 /**
  * Tests {@link InlineHTML}.
  * Note: tests only the direction and alignment logic.
@@ -37,7 +38,7 @@
     InlineHTML htmlElement = 
       new InlineHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(htmlElement.getHTML()));
+    assertEquals(html, htmlElement.getHTML().toLowerCase(Locale.ROOT));
   }
 
   // test that the SafeHtml constructor creates the direction HTML.
@@ -47,8 +48,8 @@
     InlineHTML htmlElementRTL = 
       new InlineHTML(SafeHtmlUtils.fromSafeConstant(html), Direction.RTL);
     
-    assertEquals(html, StringCase.toLower(htmlElementRTL.getHTML()));
-    assertEquals(html, StringCase.toLower(htmlElementLTR.getHTML()));
+    assertEquals(html, htmlElementRTL.getHTML().toLowerCase(Locale.ROOT));
+    assertEquals(html, htmlElementLTR.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(Direction.LTR, htmlElementLTR.getTextDirection());
     assertEquals(Direction.RTL, htmlElementRTL.getTextDirection());
   }
@@ -57,6 +58,6 @@
     InlineHTML htmlElement = new InlineHTML("<b>foo</b>");
     htmlElement.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(htmlElement.getHTML()));
+    assertEquals(html, htmlElement.getHTML().toLowerCase(Locale.ROOT));
   }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/InlineHyperlinkTest.java b/user/test/com/google/gwt/user/client/ui/InlineHyperlinkTest.java
index 7088779..98ecafe 100644
--- a/user/test/com/google/gwt/user/client/ui/InlineHyperlinkTest.java
+++ b/user/test/com/google/gwt/user/client/ui/InlineHyperlinkTest.java
@@ -15,10 +15,11 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 
+import java.util.Locale;
+
 /**
  * Tests {@link InlineHyperlinkTest}.
  */
@@ -36,7 +37,7 @@
     InlineHyperlink link = 
       new InlineHyperlink(SafeHtmlUtils.fromSafeConstant(html), token);
     
-    assertEquals(html, StringCase.toLower(link.getHTML()));
+    assertEquals(html, link.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSetSafeHtml() {
@@ -44,6 +45,6 @@
     InlineHyperlink link = new InlineHyperlink("foobar", token);
     link.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(link.getHTML()));
+    assertEquals(html, link.getHTML().toLowerCase(Locale.ROOT));
   }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java
index 4371723..e41a010 100644
--- a/user/test/com/google/gwt/user/client/ui/MenuBarTest.java
+++ b/user/test/com/google/gwt/user/client/ui/MenuBarTest.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.client.Scheduler;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
@@ -28,6 +27,7 @@
 import com.google.gwt.user.client.Command;
 
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Tests the DockPanel widget.
@@ -480,14 +480,14 @@
     // ensure safehtml passes through when a command is set.
     MenuItem item1 =
       bar.addItem(SafeHtmlUtils.fromSafeConstant(html), BLANK_COMMAND);
-    assertEquals(html, StringCase.toLower(item1.getHTML()));
+    assertEquals(html, item1.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(BLANK_COMMAND, item1.getCommand());
     assertEquals(bar, item1.getParentMenu());
 
     // ensure safehtml passes through when a submenu/popup is set.
     MenuBar foo = new MenuBar(true);
     MenuItem item2 = foo.addItem(SafeHtmlUtils.fromSafeConstant(html), bar);
-    assertEquals(html, StringCase.toLower(item2.getHTML()));
+    assertEquals(html, item2.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(bar, item2.getSubMenu());
     assertEquals(foo, item2.getParentMenu());
   }
@@ -498,14 +498,14 @@
     // ensure safehtml passes through when a command is set.
     MenuItem item1 =
       bar.addItem(SafeHtmlUtils.fromSafeConstant(html), BLANK_SCHEDULED_COMMAND);
-    assertEquals(html, StringCase.toLower(item1.getHTML()));
+    assertEquals(html, item1.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(BLANK_SCHEDULED_COMMAND, item1.getScheduledCommand());
     assertEquals(bar, item1.getParentMenu());
 
     // ensure safehtml passes through when a submenu/popup is set.
     MenuBar foo = new MenuBar(true);
     MenuItem item2 = foo.addItem(SafeHtmlUtils.fromSafeConstant(html), bar);
-    assertEquals(html, StringCase.toLower(item2.getHTML()));
+    assertEquals(html, item2.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(bar, item2.getSubMenu());
     assertEquals(foo, item2.getParentMenu());
   }
diff --git a/user/test/com/google/gwt/user/client/ui/MenuItemTest.java b/user/test/com/google/gwt/user/client/ui/MenuItemTest.java
index 4a47813..6a19346 100644
--- a/user/test/com/google/gwt/user/client/ui/MenuItemTest.java
+++ b/user/test/com/google/gwt/user/client/ui/MenuItemTest.java
@@ -17,11 +17,12 @@
 
 import com.google.gwt.aria.client.Roles;
 import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.Command;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link MenuItem}.
  */
@@ -42,7 +43,7 @@
     };
     MenuItem item = new MenuItem(SafeHtmlUtils.fromSafeConstant(html), command);
 
-    assertEquals(html, StringCase.toLower(item.getHTML()));
+    assertEquals(html, item.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(command, item.getCommand());
   }
 
@@ -54,7 +55,7 @@
     };
     MenuItem item = new MenuItem(SafeHtmlUtils.fromSafeConstant(html), command);
 
-    assertEquals(html, StringCase.toLower(item.getHTML()));
+    assertEquals(html, item.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(command, item.getScheduledCommand());
   }
 
@@ -62,7 +63,7 @@
     MenuBar subMenu = new MenuBar();
     MenuItem item = new MenuItem(SafeHtmlUtils.fromSafeConstant(html), subMenu);
 
-    assertEquals(html, StringCase.toLower(item.getHTML()));
+    assertEquals(html, item.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(subMenu, item.getSubMenu());
   }
 
@@ -108,7 +109,7 @@
     MenuItem item = new MenuItem("foo", command);
     item.setHTML(SafeHtmlUtils.fromSafeConstant(html));
 
-    assertEquals(html, StringCase.toLower(item.getHTML()));
+    assertEquals(html, item.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(command, item.getCommand());
   }
 
@@ -121,7 +122,7 @@
     MenuItem item = new MenuItem("foo", command);
     item.setHTML(SafeHtmlUtils.fromSafeConstant(html));
 
-    assertEquals(html, StringCase.toLower(item.getHTML()));
+    assertEquals(html, item.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(command, item.getScheduledCommand());
   }
 
diff --git a/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java b/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java
index b63d806..a75caa7 100644
--- a/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java
+++ b/user/test/com/google/gwt/user/client/ui/RadioButtonTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.InputElement;
@@ -27,6 +26,8 @@
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
 
+import java.util.Locale;
+
 /**
  * Tests the RadioButton class.
  */
@@ -218,8 +219,8 @@
     Element parent = radio.getElement();
     Element firstChild = parent.getFirstChildElement().cast();
     Element secondChild = firstChild.getNextSiblingElement().cast();
-    assertEquals("input", StringCase.toLower(firstChild.getTagName()));
-    assertEquals("label", StringCase.toLower(secondChild.getTagName()));
+    assertEquals("input", firstChild.getTagName().toLowerCase(Locale.ROOT));
+    assertEquals("label", secondChild.getTagName().toLowerCase(Locale.ROOT));
   }
 
   public void testSafeHtml() {
@@ -227,11 +228,11 @@
       new RadioButton("radio", SafeHtmlUtils.fromSafeConstant(html1));
     
     assertEquals("radio", radio.getName());
-    assertEquals(html1, StringCase.toLower(radio.getHTML()));
+    assertEquals(html1, radio.getHTML().toLowerCase(Locale.ROOT));
     
     radio.setHTML(SafeHtmlUtils.fromSafeConstant(html2));
     
-    assertEquals(html2, StringCase.toLower(radio.getHTML()));
+    assertEquals(html2, radio.getHTML().toLowerCase(Locale.ROOT));
   }
 
   private void doClick(Element elm) {
diff --git a/user/test/com/google/gwt/user/client/ui/ResetButtonTest.java b/user/test/com/google/gwt/user/client/ui/ResetButtonTest.java
index 880176b..9fb9c49 100644
--- a/user/test/com/google/gwt/user/client/ui/ResetButtonTest.java
+++ b/user/test/com/google/gwt/user/client/ui/ResetButtonTest.java
@@ -15,13 +15,14 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link ResetButton}.
  */
@@ -48,7 +49,7 @@
   public void testSetSafeHtmlConstructor() {
     ResetButton button = new ResetButton(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSafeHtmlWithHandler() {
@@ -56,6 +57,6 @@
     ResetButton button = 
       new ResetButton(SafeHtmlUtils.fromSafeConstant(html), handler);
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java b/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java
index 57cda80..9a1eb9f 100644
--- a/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java
+++ b/user/test/com/google/gwt/user/client/ui/RichTextAreaTest.java
@@ -16,7 +16,6 @@
 package com.google.gwt.user.client.ui;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.NativeEvent;
@@ -36,6 +35,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Tests the {@link RichTextArea} widget.
@@ -308,7 +308,7 @@
       @Override
       public void onInitialize(InitializeEvent event) {
         richTextArea.setHTML("<b>foo</b>");
-        assertEquals("<b>foo</b>", StringCase.toLower(richTextArea.getHTML()));
+        assertEquals("<b>foo</b>", richTextArea.getHTML().toLowerCase(Locale.ROOT));
         finishTest();
       }
     });
@@ -329,7 +329,7 @@
         new Timer() {
           @Override
           public void run() {
-            assertEquals("<b>foo</b>", StringCase.toLower(richTextArea.getHTML()));
+            assertEquals("<b>foo</b>", richTextArea.getHTML().toLowerCase(Locale.ROOT));
             finishTest();
           }
         }.schedule(100);
@@ -337,7 +337,7 @@
     });
     richTextArea.setHTML("<b>foo</b>");
     RootPanel.get().add(richTextArea);
-    assertEquals("<b>foo</b>", StringCase.toLower(richTextArea.getHTML()));
+    assertEquals("<b>foo</b>", richTextArea.getHTML().toLowerCase(Locale.ROOT));
   }
 
   /**
@@ -352,7 +352,7 @@
       @Override
       public void onInitialize(InitializeEvent event) {
         richTextArea.setHTML(SafeHtmlUtils.fromSafeConstant(html));
-        assertEquals(html, StringCase.toLower(richTextArea.getHTML()));
+        assertEquals(html, richTextArea.getHTML().toLowerCase(Locale.ROOT));
         finishTest();
       }
     });
@@ -374,7 +374,7 @@
         new Timer() {
           @Override
           public void run() {
-            assertEquals(html, StringCase.toLower(richTextArea.getHTML()));
+            assertEquals(html, richTextArea.getHTML().toLowerCase(Locale.ROOT));
             finishTest();
           }
         }.schedule(100);
@@ -382,7 +382,7 @@
     });
     richTextArea.setHTML(SafeHtmlUtils.fromSafeConstant(html));
     RootPanel.get().add(richTextArea);
-    assertEquals(html, StringCase.toLower(richTextArea.getHTML()));
+    assertEquals(html, richTextArea.getHTML().toLowerCase(Locale.ROOT));
   }
 
   /**
diff --git a/user/test/com/google/gwt/user/client/ui/SplitLayoutPanelTest.java b/user/test/com/google/gwt/user/client/ui/SplitLayoutPanelTest.java
index b02dd75..6a6818e 100644
--- a/user/test/com/google/gwt/user/client/ui/SplitLayoutPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/SplitLayoutPanelTest.java
@@ -15,12 +15,13 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.NativeEvent;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link SplitLayoutPanel}.
  */
@@ -103,7 +104,7 @@
 
     p.addWest(new Label("foo"), 64);
     assertEquals("5px",
-        StringCase.toLower(children.get(1).getElement().getStyle().getWidth()));
+        children.get(1).getElement().getStyle().getWidth().toLowerCase(Locale.ROOT));
   }
 
   public void testRemoveInsert() {
diff --git a/user/test/com/google/gwt/user/client/ui/StackLayoutPanelTest.java b/user/test/com/google/gwt/user/client/ui/StackLayoutPanelTest.java
index c7e7fce..ff4cfc6 100644
--- a/user/test/com/google/gwt/user/client/ui/StackLayoutPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/StackLayoutPanelTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
 import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
@@ -26,6 +25,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Tests for {@link StackLayoutPanel}.
@@ -126,7 +126,7 @@
 
     assertEquals(1, panel.getWidgetCount());
     assertEquals(html,
-        StringCase.toLower(panel.getHeaderWidget(0).getElement().getInnerHTML()));
+        panel.getHeaderWidget(0).getElement().getInnerHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testAttachDetachOrder() {
@@ -184,7 +184,7 @@
 
     assertEquals(1, panel.getWidgetCount());
     assertEquals(html,
-        StringCase.toLower(panel.getHeaderWidget(0).getElement().getInnerHTML()));
+        panel.getHeaderWidget(0).getElement().getInnerHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testInsertWithHTML() {
@@ -325,7 +325,7 @@
     panel.setHeaderHTML(0, SafeHtmlUtils.fromSafeConstant(html));
     Widget header = panel.getHeaderWidget(0);
 
-    assertEquals(html, StringCase.toLower(header.getElement().getInnerHTML()));
+    assertEquals(html, header.getElement().getInnerHTML().toLowerCase(Locale.ROOT));
   }
 
   /**
diff --git a/user/test/com/google/gwt/user/client/ui/SubmitButtonTest.java b/user/test/com/google/gwt/user/client/ui/SubmitButtonTest.java
index 26f5d1d..26d01df 100644
--- a/user/test/com/google/gwt/user/client/ui/SubmitButtonTest.java
+++ b/user/test/com/google/gwt/user/client/ui/SubmitButtonTest.java
@@ -15,13 +15,14 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.EventTarget;
 import com.google.gwt.event.dom.client.ClickEvent;
 import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link SubmitButton}.
  */
@@ -49,7 +50,7 @@
     SubmitButton button = 
       new SubmitButton(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSafeHtmlWithHandler() {
@@ -57,6 +58,6 @@
     SubmitButton button = 
       new SubmitButton(SafeHtmlUtils.fromSafeConstant(html), handler);
     
-    assertEquals(html, StringCase.toLower(button.getHTML()));
+    assertEquals(html, button.getHTML().toLowerCase(Locale.ROOT));
   }
 }
diff --git a/user/test/com/google/gwt/user/client/ui/TabBarTest.java b/user/test/com/google/gwt/user/client/ui/TabBarTest.java
index dbd1976..047b5b5 100644
--- a/user/test/com/google/gwt/user/client/ui/TabBarTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TabBarTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
 import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
@@ -25,6 +24,8 @@
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 import com.google.gwt.user.client.DOM;
 
+import java.util.Locale;
+
 /**
  * Tests the {@link TabBar} widget.
  */
@@ -70,7 +71,7 @@
     TabBar bar = createTabBar();
     bar.addTab(SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(bar.getTabHTML(0)));
+    assertEquals(html, bar.getTabHTML(0).toLowerCase(Locale.ROOT));
   }
 
   public void testDebugId() {
@@ -113,7 +114,7 @@
     TabBar bar = createTabBar();
     bar.insertTab(SafeHtmlUtils.fromSafeConstant(html), 0);
     
-    assertEquals(html, StringCase.toLower(bar.getTabHTML(0)));
+    assertEquals(html, bar.getTabHTML(0).toLowerCase(Locale.ROOT));
   }
 
   public void testSelect() {
@@ -197,7 +198,7 @@
     bar.insertTab("foo", 0);
     bar.setTabHTML(0, SafeHtmlUtils.fromSafeConstant(html));
     
-    assertEquals(html, StringCase.toLower(bar.getTabHTML(0)));
+    assertEquals(html, bar.getTabHTML(0).toLowerCase(Locale.ROOT));
   }
 
   public void testGetHTML() {
@@ -224,12 +225,12 @@
     // toLowerCase() is necessary in these assertions because IE capitalizes
     // HTML tags read from innerHTML.
     bar.setTabHTML(1, "<i>w00t!</i>");
-    assertEquals("<i>w00t!</i>", StringCase.toLower(bar.getTabHTML(1)));
+    assertEquals("<i>w00t!</i>", bar.getTabHTML(1).toLowerCase(Locale.ROOT));
 
     // Set the text knowing that we currently have an HTML. This should replace
     // the HTML with a Label.
     bar.setTabText(1, "<b>w00t</b>");
-    assertEquals("<b>w00t</b>", StringCase.toLower(bar.getTabHTML(1)));
+    assertEquals("<b>w00t</b>", bar.getTabHTML(1).toLowerCase(Locale.ROOT));
 
     // Set the text knowing that we currently have a Grid. This should replace
     // the Grid with a Label.
diff --git a/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java b/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
index a59bd7a..a28b31f 100644
--- a/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TabLayoutPanelTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Style.Unit;
 import com.google.gwt.event.logical.shared.BeforeSelectionEvent;
 import com.google.gwt.event.logical.shared.BeforeSelectionHandler;
@@ -30,6 +29,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 
 /**
  * Tests for {@link TabLayoutPanel}.
@@ -278,9 +278,9 @@
     assertEquals("added text",
         p.getTabWidget(addText).getElement().getInnerHTML());
     assertEquals("<b>inserted html</b>",
-        StringCase.toLower(p.getTabWidget(insHtml).getElement().getInnerHTML()));
+        p.getTabWidget(insHtml).getElement().getInnerHTML().toLowerCase(Locale.ROOT));
     assertEquals("<b>added html</b>",
-        StringCase.toLower(p.getTabWidget(addHtml).getElement().getInnerHTML()));
+        p.getTabWidget(addHtml).getElement().getInnerHTML().toLowerCase(Locale.ROOT));
     assertEquals(inserted.w, p.getTabWidget(insWidget));
     assertEquals(added.w, p.getTabWidget(addWidget));
 
diff --git a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java
index 61508ad..6916351 100644
--- a/user/test/com/google/gwt/user/client/ui/TreeItemTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TreeItemTest.java
@@ -15,10 +15,11 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 
+import java.util.Locale;
+
 /**
  * Tests the {@link TreeItem}.
  */
@@ -62,7 +63,7 @@
   public void testAddItemSafeHtml() {
     TreeItem item = new TreeItem(SafeHtmlUtils.fromSafeConstant("foo"));
     TreeItem child = item.addItem(SafeHtmlUtils.fromSafeConstant(HTML));
-    assertEquals(HTML, StringCase.toLower(child.getHTML()));
+    assertEquals(HTML, child.getHTML().toLowerCase(Locale.ROOT));
   }
   
   /**
@@ -91,7 +92,7 @@
 
     // Insert at zero.
     TreeItem a = item.insertItem(0, SafeHtmlUtils.fromSafeConstant("a"));
-    assertEquals("a", StringCase.toLower(a.getHTML()));
+    assertEquals("a", a.getHTML().toLowerCase(Locale.ROOT));
     assertEquals(2, item.getChildCount());
     assertEquals(a, item.getChild(0));
     assertEquals(b, item.getChild(1));
@@ -209,13 +210,13 @@
   public void testSafeHtmlConstructor() {
     TreeItem item = new TreeItem(SafeHtmlUtils.fromSafeConstant(HTML));
     
-    assertEquals(HTML, StringCase.toLower(item.getHTML()));
+    assertEquals(HTML, item.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testSetSafeHtml() {
     TreeItem item = new TreeItem(SafeHtmlUtils.fromSafeConstant("foo"));
     item.setHTML(SafeHtmlUtils.fromSafeConstant(HTML));
-    assertEquals(HTML, StringCase.toLower(item.getHTML()));
+    assertEquals(HTML, item.getHTML().toLowerCase(Locale.ROOT));
   }
 
   /**
diff --git a/user/test/com/google/gwt/user/client/ui/TreeTest.java b/user/test/com/google/gwt/user/client/ui/TreeTest.java
index 631b177..bcc9d9f 100644
--- a/user/test/com/google/gwt/user/client/ui/TreeTest.java
+++ b/user/test/com/google/gwt/user/client/ui/TreeTest.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.user.client.ui;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.junit.DoNotRunWith;
 import com.google.gwt.junit.Platform;
@@ -24,6 +23,7 @@
 import com.google.gwt.user.client.DOM;
 
 import java.util.Iterator;
+import java.util.Locale;
 
 /**
  * Tests the Tree widget.
@@ -86,7 +86,7 @@
   public void testAddItemSafeHtml() {
     Tree t = createTree();
     TreeItem item = t.addItem(SafeHtmlUtils.fromSafeConstant(html));
-    assertEquals(html, StringCase.toLower(item.getHTML()));
+    assertEquals(html, item.getHTML().toLowerCase(Locale.ROOT));
   }
 
   /**
@@ -179,7 +179,7 @@
   public void testInsertItemSafeHtml() {
     Tree t = createTree();
     TreeItem item = t.insertItem(0, SafeHtmlUtils.fromSafeConstant(html));
-    assertEquals(html, StringCase.toLower(item.getHTML()));
+    assertEquals(html, item.getHTML().toLowerCase(Locale.ROOT));
   }
 
   public void testInsertTextItem() {
diff --git a/user/test/com/google/gwt/user/server/rpc/RpcTokenServiceImpl.java b/user/test/com/google/gwt/user/server/rpc/RpcTokenServiceImpl.java
index 05d2603..1cda596 100644
--- a/user/test/com/google/gwt/user/server/rpc/RpcTokenServiceImpl.java
+++ b/user/test/com/google/gwt/user/server/rpc/RpcTokenServiceImpl.java
@@ -15,10 +15,11 @@
  */
 package com.google.gwt.user.server.rpc;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.user.client.rpc.RpcToken;
 import com.google.gwt.user.client.rpc.RpcTokenTestService;
 
+import java.util.Locale;
+
 import javax.servlet.http.HttpServletRequest;
 
 /**
@@ -32,7 +33,7 @@
   
   @Override
   public String capitalize(String input) {
-    return StringCase.toUpper(input);
+    return input.toUpperCase(Locale.ROOT);
   }
   
   @Override
diff --git a/user/test/com/google/gwt/view/client/AbstractDataProviderTest.java b/user/test/com/google/gwt/view/client/AbstractDataProviderTest.java
index c4c8f63..e0f74ba 100644
--- a/user/test/com/google/gwt/view/client/AbstractDataProviderTest.java
+++ b/user/test/com/google/gwt/view/client/AbstractDataProviderTest.java
@@ -15,12 +15,12 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -166,7 +166,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
       @Override
       public Object getKey(String item) {
-        return item == null ? item : StringCase.toUpper(item);
+        return item == null ? item : item.toUpperCase(Locale.ROOT);
       }
     };
     provider = createDataProvider(keyProvider);
diff --git a/user/test/com/google/gwt/view/client/AbstractSelectionModelTest.java b/user/test/com/google/gwt/view/client/AbstractSelectionModelTest.java
index 43f4528..1a03f6e 100644
--- a/user/test/com/google/gwt/view/client/AbstractSelectionModelTest.java
+++ b/user/test/com/google/gwt/view/client/AbstractSelectionModelTest.java
@@ -15,11 +15,12 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.user.client.Timer;
 import com.google.gwt.view.client.SelectionModel.AbstractSelectionModel;
 
+import java.util.Locale;
+
 /**
  * Tests for {@link AbstractSelectionModel}.
  */
@@ -158,7 +159,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
       @Override
       public Object getKey(String item) {
-        return item == null ? item : StringCase.toUpper(item);
+        return item == null ? item : item.toUpperCase(Locale.ROOT);
       }
     };
     model = createSelectionModel(keyProvider);
diff --git a/user/test/com/google/gwt/view/client/DefaultSelectionModelTest.java b/user/test/com/google/gwt/view/client/DefaultSelectionModelTest.java
index b195fb9..9dd9d92 100644
--- a/user/test/com/google/gwt/view/client/DefaultSelectionModelTest.java
+++ b/user/test/com/google/gwt/view/client/DefaultSelectionModelTest.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
 
 import java.util.HashMap;
+import java.util.Locale;
 import java.util.Map;
 
 /**
@@ -132,7 +132,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
         @Override
       public Object getKey(String item) {
-        return StringCase.toUpper(item);
+        return item.toUpperCase(Locale.ROOT);
       }
     };
     DefaultSelectionModel<String> model = createSelectionModel(keyProvider);
@@ -155,7 +155,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
       @Override
       public Object getKey(String item) {
-        return StringCase.toUpper(item);
+        return item.toUpperCase(Locale.ROOT);
       }
     };
     DefaultSelectionModel<String> model = createSelectionModel(keyProvider);
diff --git a/user/test/com/google/gwt/view/client/MultiSelectionModelTest.java b/user/test/com/google/gwt/view/client/MultiSelectionModelTest.java
index 93fa510..43ad114 100644
--- a/user/test/com/google/gwt/view/client/MultiSelectionModelTest.java
+++ b/user/test/com/google/gwt/view/client/MultiSelectionModelTest.java
@@ -15,9 +15,9 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
 
 import java.util.HashSet;
+import java.util.Locale;
 import java.util.Set;
 
 /**
@@ -161,7 +161,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
         @Override
       public Object getKey(String item) {
-        return StringCase.toUpper(item);
+        return item.toUpperCase(Locale.ROOT);
       }
     };
     MultiSelectionModel<String> model = createSelectionModel(keyProvider);
@@ -208,7 +208,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
         @Override
       public Object getKey(String item) {
-        return StringCase.toUpper(item);
+        return item.toUpperCase(Locale.ROOT);
       }
     };
     MultiSelectionModel<String> model = createSelectionModel(keyProvider);
@@ -230,7 +230,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
         @Override
       public Object getKey(String item) {
-        return StringCase.toUpper(item);
+        return item.toUpperCase(Locale.ROOT);
       }
     };
     MultiSelectionModel<String> model = createSelectionModel(keyProvider);
diff --git a/user/test/com/google/gwt/view/client/NoSelectionModelTest.java b/user/test/com/google/gwt/view/client/NoSelectionModelTest.java
index 41fc0a1..e387efd 100644
--- a/user/test/com/google/gwt/view/client/NoSelectionModelTest.java
+++ b/user/test/com/google/gwt/view/client/NoSelectionModelTest.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
+import java.util.Locale;
 
 /**
  * Tests for {@link NoSelectionModel}.
@@ -62,7 +62,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
       @Override
       public Object getKey(String item) {
-        return StringCase.toUpper(item);
+        return item.toUpperCase(Locale.ROOT);
       }
     };
     NoSelectionModel<String> model = createSelectionModel(keyProvider);
diff --git a/user/test/com/google/gwt/view/client/SingleSelectionModelTest.java b/user/test/com/google/gwt/view/client/SingleSelectionModelTest.java
index c426438..0128720 100644
--- a/user/test/com/google/gwt/view/client/SingleSelectionModelTest.java
+++ b/user/test/com/google/gwt/view/client/SingleSelectionModelTest.java
@@ -15,7 +15,7 @@
  */
 package com.google.gwt.view.client;
 
-import com.google.gwt.core.shared.impl.StringCase;
+import java.util.Locale;
 
 /**
  * Tests for {@link SingleSelectionModel}.
@@ -134,7 +134,7 @@
     ProvidesKey<String> keyProvider = new ProvidesKey<String>() {
       @Override
       public Object getKey(String item) {
-        return StringCase.toUpper(item);
+        return item.toUpperCase(Locale.ROOT);
       }
     };
     SingleSelectionModel<String> model = createSelectionModel(keyProvider);