diff --git a/JavaLibrary.bp b/JavaLibrary.bp
index afba8e9..528db8f 100644
--- a/JavaLibrary.bp
+++ b/JavaLibrary.bp
@@ -503,6 +503,8 @@
         "android-support-test",
     ],
     platform_apis: true,
+    // This builds classes that are in the java.base Java module:
+    patch_module: "java.base",
 }
 
 // Builds the core-tests-support library used by various tests.
@@ -744,7 +746,7 @@
 //
 // Only for use by art.module.public.api.stubs target below.
 droidstubs {
-    name: "art-module-public-api-stubs-gen",
+    name: "art-module-public-api-stubs-source",
     srcs: [
         ":core_oj_api_files",
         ":core_libart_api_files",
@@ -752,16 +754,13 @@
     java_version: "1.9",
     installable: false,
     sdk_version: "none",
+    system_modules: "none",
 }
 
 // A stubs target containing the parts of the public SDK API provided by the ART module.
 java_library {
     name: "art.module.public.api.stubs",
-    visibility: [
-        "//external/conscrypt",
-        "//external/icu/android_icu4j",
-    ],
-    srcs: [":art-module-public-api-stubs-gen"],
+    srcs: [":art-module-public-api-stubs-source"],
     errorprone: {
         javacflags: [
             "-Xep:MissingOverride:OFF",
@@ -853,6 +852,7 @@
     srcs: [":art_module_api_files"],
     installable: false,
     sdk_version: "none",
+    system_modules: "none",
     annotations_enabled: true,
     args: "--hide-annotation libcore.api.Hide " +
         "--validate-nullability-from-merged-stubs ",
@@ -917,5 +917,6 @@
     srcs: [
         ":api_surface_annotation_files",
     ],
+    java_version: "1.9",
     sdk_version: "core_current",
 }
diff --git a/dalvik/src/main/java/dalvik/annotation/compat/UnsupportedAppUsage.java b/dalvik/src/main/java/dalvik/annotation/compat/UnsupportedAppUsage.java
index aaebbb8..888ad38 100644
--- a/dalvik/src/main/java/dalvik/annotation/compat/UnsupportedAppUsage.java
+++ b/dalvik/src/main/java/dalvik/annotation/compat/UnsupportedAppUsage.java
@@ -21,7 +21,6 @@
 import static java.lang.annotation.ElementType.TYPE;
 import static java.lang.annotation.RetentionPolicy.CLASS;
 
-import dalvik.system.VersionCodes;
 import java.lang.annotation.Repeatable;
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
diff --git a/dalvik/src/main/java/dalvik/system/VersionCodes.java b/dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java
similarity index 97%
rename from dalvik/src/main/java/dalvik/system/VersionCodes.java
rename to dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java
index b20af83..8f7bcd2 100644
--- a/dalvik/src/main/java/dalvik/system/VersionCodes.java
+++ b/dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package dalvik.system;
+package dalvik.annotation.compat;
 
 import libcore.api.CorePlatformApi;
 import libcore.api.IntraCoreApi;
diff --git a/luni/src/main/java/android/compat/Compatibility.java b/luni/src/main/java/android/compat/Compatibility.java
index a0cc0a0..1fbdf76 100644
--- a/luni/src/main/java/android/compat/Compatibility.java
+++ b/luni/src/main/java/android/compat/Compatibility.java
@@ -154,6 +154,10 @@
             }
         }
 
+        public boolean isEmpty() {
+            return enabled.isEmpty() && disabled.isEmpty();
+        }
+
         private static long[] toLongArray(Set<Long> values) {
             long[] result = new long[values.size()];
             int idx = 0;
diff --git a/luni/src/main/java/libcore/util/FP16.java b/luni/src/main/java/libcore/util/FP16.java
index 88fe43a..9157f85 100644
--- a/luni/src/main/java/libcore/util/FP16.java
+++ b/luni/src/main/java/libcore/util/FP16.java
@@ -626,30 +626,42 @@
         } else {
             e = e - FP32_EXPONENT_BIAS + EXPONENT_BIAS;
             if (e >= 0x1f) { // Overflow
-                outE = 0x31;
+                outE = 0x1f;
             } else if (e <= 0) { // Underflow
                 if (e < -10) {
                     // The absolute fp32 value is less than MIN_VALUE, flush to +/-0
                 } else {
                     // The fp32 value is a normalized float less than MIN_NORMAL,
                     // we convert to a denorm fp16
-                    m = (m | 0x800000) >> (1 - e);
-                    if ((m & 0x1000) != 0) m += 0x2000;
-                    outM = m >> 13;
+                    m = m | 0x800000;
+                    int shift = 14 - e;
+                    outM = m >> shift;
+
+                    int lowm = m & ((1 << shift) - 1);
+                    int hway = 1 << (shift - 1);
+                    // if above halfway or exactly halfway and outM is odd
+                    if (lowm + (outM & 1) > hway){
+                        // Round to nearest even
+                        // Can overflow into exponent bit, which surprisingly is OK.
+                        // This increment relies on the +outM in the return statement below
+                        outM++;
+                    }
                 }
             } else {
                 outE = e;
                 outM = m >> 13;
-                if ((m & 0x1000) != 0) {
-                    // Round to nearest "0.5" up
-                    int out = (outE << EXPONENT_SHIFT) | outM;
-                    out++;
-                    return (short) (out | (s << SIGN_SHIFT));
+                // if above halfway or exactly halfway and outM is odd
+                if ((m & 0x1fff) + (outM & 0x1) > 0x1000) {
+                    // Round to nearest even
+                    // Can overflow into exponent bit, which surprisingly is OK.
+                    // This increment relies on the +outM in the return statement below
+                    outM++;
                 }
             }
         }
-
-        return (short) ((s << SIGN_SHIFT) | (outE << EXPONENT_SHIFT) | outM);
+        // The outM is added here as the +1 increments for outM above can
+        // cause an overflow in the exponent bit which is OK.
+        return (short) ((s << SIGN_SHIFT) | (outE << EXPONENT_SHIFT) + outM);
     }
 
     /**
diff --git a/mmodules/core_platform_api/Android.bp b/mmodules/core_platform_api/Android.bp
index b82cc13..adf7d28 100644
--- a/mmodules/core_platform_api/Android.bp
+++ b/mmodules/core_platform_api/Android.bp
@@ -25,6 +25,7 @@
         ":art_module_api_files",
     ],
     sdk_version: "none",
+    system_modules: "none",
     libs: [
         // Needed to break the cycle in the platform api caused by
         // b/141747409.
@@ -69,10 +70,6 @@
 // core library modules.
 java_library {
     name: "art.module.platform.api.stubs",
-    visibility: [
-        "//external/conscrypt",
-        "//external/icu/android_icu4j",
-    ],
     srcs: [
         ":art-module-platform-api-stubs-source",
     ],
diff --git a/mmodules/core_platform_api/api/platform/current-api.txt b/mmodules/core_platform_api/api/platform/current-api.txt
index 14d96eb..5181f94 100644
--- a/mmodules/core_platform_api/api/platform/current-api.txt
+++ b/mmodules/core_platform_api/api/platform/current-api.txt
@@ -21,6 +21,7 @@
     method public java.util.Set<java.lang.Long> forceDisabledSet();
     method public long[] forceEnabledChangesArray();
     method public java.util.Set<java.lang.Long> forceEnabledSet();
+    method public boolean isEmpty();
     method public boolean isForceDisabled(long);
     method public boolean isForceEnabled(long);
   }
@@ -528,6 +529,12 @@
     method public abstract dalvik.annotation.compat.UnsupportedAppUsage[] value();
   }
 
+  public class VersionCodes {
+    field public static final int O = 26; // 0x1a
+    field public static final int P = 28; // 0x1c
+    field public static final int Q = 29; // 0x1d
+  }
+
 }
 
 package dalvik.annotation.optimization {
@@ -752,12 +759,6 @@
     method @dalvik.annotation.optimization.FastNative public static dalvik.system.AnnotatedStackTraceElement[] getAnnotatedThreadStackTrace(Thread);
   }
 
-  public class VersionCodes {
-    field public static final int O = 26; // 0x1a
-    field public static final int P = 28; // 0x1c
-    field public static final int Q = 29; // 0x1d
-  }
-
   public final class ZygoteHooks {
     method public static void gcAndFinalize();
     method public static void onBeginPreload();
diff --git a/mmodules/intracoreapi/Android.bp b/mmodules/intracoreapi/Android.bp
index 4212f7f..f8454bb 100644
--- a/mmodules/intracoreapi/Android.bp
+++ b/mmodules/intracoreapi/Android.bp
@@ -25,6 +25,7 @@
         ":art_module_api_files",
     ],
     sdk_version: "none",
+    system_modules: "none",
 
     installable: false,
     args: "--hide-annotation libcore.api.Hide " +
@@ -53,8 +54,6 @@
 java_library {
     name: "art.module.intra.core.api.stubs",
     visibility: [
-        "//external/conscrypt",
-        "//external/icu/android_icu4j",
         "//libcore/mmodules/core_platform_api",
     ],
     srcs: [
diff --git a/mmodules/intracoreapi/api/intra/current-api.txt b/mmodules/intracoreapi/api/intra/current-api.txt
index c2024d6..46a1298 100644
--- a/mmodules/intracoreapi/api/intra/current-api.txt
+++ b/mmodules/intracoreapi/api/intra/current-api.txt
@@ -12,6 +12,7 @@
     method public java.util.Set<java.lang.Long> forceDisabledSet();
     method public long[] forceEnabledChangesArray();
     method public java.util.Set<java.lang.Long> forceEnabledSet();
+    method public boolean isEmpty();
     method public boolean isForceDisabled(long);
     method public boolean isForceEnabled(long);
   }
@@ -46,6 +47,12 @@
     method @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public abstract dalvik.annotation.compat.UnsupportedAppUsage[] value();
   }
 
+  @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public class VersionCodes {
+    field @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public static final int O = 26; // 0x1a
+    field @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public static final int P = 28; // 0x1c
+    field @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public static final int Q = 29; // 0x1d
+  }
+
 }
 
 package dalvik.annotation.optimization {
@@ -72,12 +79,6 @@
     method @dalvik.annotation.compat.UnsupportedAppUsage(trackingBug=111170242) @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public void warnIfOpen();
   }
 
-  @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public class VersionCodes {
-    field @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public static final int O = 26; // 0x1a
-    field @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public static final int P = 28; // 0x1c
-    field @libcore.api.CorePlatformApi @libcore.api.IntraCoreApi public static final int Q = 29; // 0x1d
-  }
-
 }
 
 package java.net {
diff --git a/non_openjdk_java_files.bp b/non_openjdk_java_files.bp
index 4f7a33d..f889637 100644
--- a/non_openjdk_java_files.bp
+++ b/non_openjdk_java_files.bp
@@ -113,7 +113,7 @@
     name: "hidden_api_surface_annotation_files",
     srcs: [
         "dalvik/src/main/java/dalvik/annotation/compat/UnsupportedAppUsage.java",
-        "dalvik/src/main/java/dalvik/system/VersionCodes.java",
+        "dalvik/src/main/java/dalvik/annotation/compat/VersionCodes.java",
     ],
 }
 
@@ -405,8 +405,6 @@
         "luni/src/main/java/libcore/reflect/WildcardTypeImpl.java",
         "luni/src/main/java/libcore/util/CharsetUtils.java",
         "luni/src/main/java/libcore/util/CollectionUtils.java",
-        "luni/src/main/java/libcore/util/NonNull.java",
-        "luni/src/main/java/libcore/util/Nullable.java",
         "luni/src/main/java/libcore/util/NullFromTypeParam.java",
         "luni/src/main/java/libcore/util/Objects.java",
         "luni/src/main/java/org/apache/harmony/xml/ExpatAttributes.java",
diff --git a/ojluni/annotations/hiddenapi/java/lang/Boolean.java b/ojluni/annotations/hiddenapi/java/lang/Boolean.java
index 14f0255..d5b749c 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Boolean.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Boolean.java
@@ -26,7 +26,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Boolean
diff --git a/ojluni/annotations/hiddenapi/java/lang/Byte.java b/ojluni/annotations/hiddenapi/java/lang/Byte.java
index 6938eb7..4e58f2b 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Byte.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Byte.java
@@ -26,7 +26,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Byte extends java.lang.Number implements java.lang.Comparable<java.lang.Byte> {
diff --git a/ojluni/annotations/hiddenapi/java/lang/Character.java b/ojluni/annotations/hiddenapi/java/lang/Character.java
index 6ac842d..d6c68e3 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Character.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Character.java
@@ -26,7 +26,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Character
diff --git a/ojluni/annotations/hiddenapi/java/lang/Double.java b/ojluni/annotations/hiddenapi/java/lang/Double.java
index 187b7b4..d58289f 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Double.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Double.java
@@ -26,7 +26,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Double extends java.lang.Number
diff --git a/ojluni/annotations/hiddenapi/java/lang/Float.java b/ojluni/annotations/hiddenapi/java/lang/Float.java
index 1081764..da45b52 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Float.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Float.java
@@ -26,7 +26,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Float extends java.lang.Number implements java.lang.Comparable<java.lang.Float> {
diff --git a/ojluni/annotations/hiddenapi/java/lang/Integer.java b/ojluni/annotations/hiddenapi/java/lang/Integer.java
index adb8c9c..49bec24 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Integer.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Integer.java
@@ -27,7 +27,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Integer extends java.lang.Number
diff --git a/ojluni/annotations/hiddenapi/java/lang/Long.java b/ojluni/annotations/hiddenapi/java/lang/Long.java
index 2f32b27..a8ae869 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Long.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Long.java
@@ -27,7 +27,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Long extends java.lang.Number implements java.lang.Comparable<java.lang.Long> {
diff --git a/ojluni/annotations/hiddenapi/java/lang/Short.java b/ojluni/annotations/hiddenapi/java/lang/Short.java
index f1f0641..00583c9 100644
--- a/ojluni/annotations/hiddenapi/java/lang/Short.java
+++ b/ojluni/annotations/hiddenapi/java/lang/Short.java
@@ -26,7 +26,7 @@
 package java.lang;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Short extends java.lang.Number implements java.lang.Comparable<java.lang.Short> {
diff --git a/ojluni/annotations/hiddenapi/java/net/InetAddress.java b/ojluni/annotations/hiddenapi/java/net/InetAddress.java
index e1a1deb..6436a6b 100644
--- a/ojluni/annotations/hiddenapi/java/net/InetAddress.java
+++ b/ojluni/annotations/hiddenapi/java/net/InetAddress.java
@@ -27,7 +27,7 @@
 package java.net;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public class InetAddress implements java.io.Serializable {
diff --git a/ojluni/annotations/hiddenapi/javax/net/ssl/SSLServerSocketFactory.java b/ojluni/annotations/hiddenapi/javax/net/ssl/SSLServerSocketFactory.java
index 61c720b..8226c75 100644
--- a/ojluni/annotations/hiddenapi/javax/net/ssl/SSLServerSocketFactory.java
+++ b/ojluni/annotations/hiddenapi/javax/net/ssl/SSLServerSocketFactory.java
@@ -27,7 +27,7 @@
 package javax.net.ssl;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public abstract class SSLServerSocketFactory extends javax.net.ServerSocketFactory {
diff --git a/ojluni/annotations/hiddenapi/javax/net/ssl/SSLSocketFactory.java b/ojluni/annotations/hiddenapi/javax/net/ssl/SSLSocketFactory.java
index 70a11bd..e79418d 100644
--- a/ojluni/annotations/hiddenapi/javax/net/ssl/SSLSocketFactory.java
+++ b/ojluni/annotations/hiddenapi/javax/net/ssl/SSLSocketFactory.java
@@ -27,7 +27,7 @@
 package javax.net.ssl;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public abstract class SSLSocketFactory extends javax.net.SocketFactory {
diff --git a/ojluni/annotations/hiddenapi/sun/misc/Unsafe.java b/ojluni/annotations/hiddenapi/sun/misc/Unsafe.java
index 54308e4..f560d96 100644
--- a/ojluni/annotations/hiddenapi/sun/misc/Unsafe.java
+++ b/ojluni/annotations/hiddenapi/sun/misc/Unsafe.java
@@ -26,7 +26,7 @@
 package sun.misc;
 
 import dalvik.annotation.compat.UnsupportedAppUsage;
-import dalvik.system.VersionCodes;
+import dalvik.annotation.compat.VersionCodes;
 
 @SuppressWarnings({"unchecked", "deprecation", "all"})
 public final class Unsafe {
diff --git a/openjdk_java_files.bp b/openjdk_java_files.bp
index 885517b..57f6251 100644
--- a/openjdk_java_files.bp
+++ b/openjdk_java_files.bp
@@ -1834,6 +1834,7 @@
     srcs: [":openjdk_javadoc_files"],
     installable: false,
     sdk_version: "none",
+    system_modules: "none",
     args: "--exclude-documentation-from-stubs",
 }
 
@@ -1849,6 +1850,7 @@
     ],
     installable: false,
     sdk_version: "none",
+    system_modules: "none",
     args: "--exclude-documentation-from-stubs " +
         "--hide-annotation libcore.api.Hide ",
     merge_inclusion_annotations_dirs: ["ojluni-annotated-mmodule-stubs"],
diff --git a/test-rules/src/platform_compat/java/android/compat/CompatChangeRule.java b/test-rules/src/platform_compat/java/android/compat/CompatChangeRule.java
index 2586f9c..1bae1a2 100644
--- a/test-rules/src/platform_compat/java/android/compat/CompatChangeRule.java
+++ b/test-rules/src/platform_compat/java/android/compat/CompatChangeRule.java
@@ -86,17 +86,12 @@
         if (disableCompatChanges != null) {
             disabled.addAll(Longs.asList(disableCompatChanges.value()));
         }
-        ArraySet<Long> intersection = new ArraySet<>(enabled);
-        intersection.retainAll(disabled);
-        if (!intersection.isEmpty()) {
-            throw new IllegalArgumentException(
-                    "Changes " + intersection + " are both enabled and disabled.");
-        }
-        if (enabled.isEmpty() && disabled.isEmpty()) {
-            throw new IllegalStateException("Added a CompatChangeRule without specifying any "
+        ChangeConfig config = new ChangeConfig(enabled, disabled);
+        if (config.isEmpty()) {
+            throw new IllegalArgumentException("Added a CompatChangeRule without specifying any "
                 + "@EnableCompatChanges or @DisableCompatChanges !");
         }
-        return new CompatChangeStatement(statement, new ChangeConfig(enabled, disabled));
+        return new CompatChangeStatement(statement, config);
     }
 
     private static class CompatChangeStatement extends Statement {
