diff --git a/user/super/com/google/gwt/emul/Preconditions.gwt.xml b/user/super/com/google/gwt/emul/Preconditions.gwt.xml
index 8fc04df..d59aa10 100644
--- a/user/super/com/google/gwt/emul/Preconditions.gwt.xml
+++ b/user/super/com/google/gwt/emul/Preconditions.gwt.xml
@@ -17,9 +17,11 @@
 
   <define-property name="jre.checks.bounds" values="AUTO,ENABLED,DISABLED" />
   <define-property name="jre.checks.api" values="AUTO,ENABLED,DISABLED" />
+  <define-property name="jre.checks.numeric" values="AUTO,ENABLED,DISABLED" />
   <define-property name="jre.checks.type" values="AUTO,ENABLED,DISABLED" />
   <set-property name="jre.checks.bounds" value="AUTO" />
   <set-property name="jre.checks.api" value="AUTO" />
+  <set-property name="jre.checks.numeric" value="AUTO" />
   <set-property name="jre.checks.type" value="AUTO" />
 
   <define-property name="jre.checks.checkLevel" values="NORMAL,OPTIMIZED,MINIMAL" />
diff --git a/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java b/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java
index f47a491..693d296 100644
--- a/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java
+++ b/user/super/com/google/gwt/emul/javaemul/internal/InternalPreconditions.java
@@ -35,6 +35,8 @@
  * │        │                                                     │IllegalArgumentException       │
  * │        │                                                     │ConcurrentModificationException│
  * ├────────┼─────────────────────────────────────────────────────┼───────────────────────────────┤
+ * │NUMERIC │Checks related to numeric operations.                │ArithmeticException            │
+ * ├────────┼─────────────────────────────────────────────────────┼───────────────────────────────┤
  * │TYPE    │Checks related to java type system.                  │ClassCastException             │
  * │        │                                                     │ArrayStoreException            │
  * ├────────┼─────────────────────────────────────────────────────┼───────────────────────────────┤
@@ -70,6 +72,7 @@
 public final class InternalPreconditions {
 
   private static final String CHECK_TYPE = getProperty("jre.checks.type");
+  private static final String CHECK_NUMERIC = getProperty("jre.checks.numeric");
   private static final String CHECK_BOUNDS = getProperty("jre.checks.bounds");
   private static final String CHECK_API = getProperty("jre.checks.api");
 
@@ -95,6 +98,8 @@
       (CHECK_BOUNDS.equals("AUTO") && LEVEL_NORMAL_OR_HIGHER) || CHECK_BOUNDS.equals("ENABLED");
   private static final boolean IS_API_CHECKED =
       (CHECK_API.equals("AUTO") && LEVEL_NORMAL_OR_HIGHER) || CHECK_API.equals("ENABLED");
+  private static final boolean IS_NUMERIC_CHECKED =
+      (CHECK_NUMERIC.equals("AUTO") && LEVEL_NORMAL_OR_HIGHER) || CHECK_NUMERIC.equals("ENABLED");
 
   private static final boolean IS_ASSERTED = getProperty("jre.checkedMode").equals("ENABLED");
 
@@ -179,6 +184,24 @@
     }
   }
 
+  public static void checkArithmetic(boolean expression) {
+    if (IS_NUMERIC_CHECKED) {
+      checkCriticalArithmetic(expression);
+    } else if (IS_ASSERTED) {
+      try {
+        checkCriticalArithmetic(expression);
+      } catch (Exception e) {
+        throw new AssertionError(e);
+      }
+    }
+  }
+
+  public static void checkCriticalArithmetic(boolean expression) {
+    if (!expression) {
+      throw new ArithmeticException();
+    }
+  }
+
   /**
    * Ensures the truth of an expression involving existence of an element.
    */
