Move checkBounds from StringHelper to InternalPreconditions.

Change-Id: Ica6fed965d273ccd31576fbea2b0f6cffa8deccb
diff --git a/dev/core/super/javaemul/internal/InternalPreconditions.java b/dev/core/super/javaemul/internal/InternalPreconditions.java
index 66b6430..5792137 100644
--- a/dev/core/super/javaemul/internal/InternalPreconditions.java
+++ b/dev/core/super/javaemul/internal/InternalPreconditions.java
@@ -235,6 +235,23 @@
   }
 
   /**
+   * Checks that bounds are correct.
+   *
+   * @throw StringIndexOutOfBoundsException if the range is not legal
+   */
+  public static void checkStringBounds(int start, int end, int size) {
+    if (start < 0) {
+      throw new StringIndexOutOfBoundsException("fromIndex: " + start + " < 0");
+    }
+    if (end > size) {
+      throw new StringIndexOutOfBoundsException("toIndex: " + end + " > size " + size);
+    }
+    if (end < start) {
+      throw new StringIndexOutOfBoundsException("fromIndex: " + start + " > toIndex: " + end);
+    }
+  }
+
+  /**
    * Substitutes each {@code %s} in {@code template} with an argument. These are matched by
    * position: the first {@code %s} gets {@code args[0]}, etc.  If there are more arguments than
    * placeholders, the unmatched arguments will be appended to the end of the formatted message in
diff --git a/dev/core/super/javaemul/internal/StringHelper.java b/dev/core/super/javaemul/internal/StringHelper.java
index 01f0027..270664e 100644
--- a/dev/core/super/javaemul/internal/StringHelper.java
+++ b/dev/core/super/javaemul/internal/StringHelper.java
@@ -20,27 +20,6 @@
  * in GWT's emul.
  */
 public class StringHelper {
-  /**
-   * Checks that bounds are correct.
-   *
-   * @param legalCount the end of the legal range
-   * @param start must be >= 0
-   * @param end must be <= legalCount and must be >= start
-   * @throw StringIndexOutOfBoundsException if the range is not legal
-   * @skip
-   */
-  public static void checkBounds(int legalCount, int start, int end) {
-    if (start < 0) {
-      throw new StringIndexOutOfBoundsException(start);
-    }
-    if (end < start) {
-      throw new StringIndexOutOfBoundsException(end - start);
-    }
-    if (end > legalCount) {
-      throw new StringIndexOutOfBoundsException(end);
-    }
-  }
-
   public static String valueOf(char x[], int start, int end) {
     // Work around function.prototype.apply call stack size limits:
     // https://code.google.com/p/v8/issues/detail?id=2896
diff --git a/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java b/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java
index 7db1549..40c3819 100644
--- a/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java
+++ b/user/super/com/google/gwt/emul/java/lang/AbstractStringBuilder.java
@@ -15,7 +15,7 @@
  */
 package java.lang;
 
-import javaemul.internal.StringHelper;
+import static javaemul.internal.InternalPreconditions.checkStringBounds;
 
 /**
  * A base class to share implementation between {@link StringBuffer} and {@link StringBuilder}.
@@ -63,8 +63,8 @@
   }
 
   public void getChars(int srcStart, int srcEnd, char[] dst, int dstStart) {
-    StringHelper.checkBounds(length(), srcStart, srcEnd);
-    StringHelper.checkBounds(dst.length, dstStart, dstStart + (srcEnd - srcStart));
+    checkStringBounds(srcStart, srcEnd, length());
+    checkStringBounds(dstStart, dstStart + (srcEnd - srcStart), dst.length);
     while (srcStart < srcEnd) {
       dst[dstStart++] = string.charAt(srcStart++);
     }
diff --git a/user/super/com/google/gwt/emul/java/lang/String.java b/user/super/com/google/gwt/emul/java/lang/String.java
index a6c3025..f540688 100644
--- a/user/super/com/google/gwt/emul/java/lang/String.java
+++ b/user/super/com/google/gwt/emul/java/lang/String.java
@@ -22,6 +22,7 @@
 import java.util.Locale;
 
 import javaemul.internal.HashCodes;
+import javaemul.internal.InternalPreconditions;
 import javaemul.internal.StringHelper;
 import javaemul.internal.annotations.DoNotInline;
 
@@ -113,7 +114,7 @@
 
   public static String valueOf(char x[], int offset, int count) {
     int end = offset + count;
-    StringHelper.checkBounds(x.length, offset, end);
+    InternalPreconditions.checkStringBounds(offset, end, x.length);
     return StringHelper.valueOf(x, offset, end);
   }