Add a core API / split out mmodule/libart

Contains:
1) Adds a core API surface for use by framework.jar, etc.
(which is distinct from the intra-core API surface for
internal "core" use).
2) Move rules related to intra-core dependencies
into mmodules/Android.bp
3) Add mmodules/libart. To be joined later by mmodules/oj

Various renames and tidy ups are included to reduce duplication and
make things clearer now there are two APIs: core.intra
and core.api. Also removes some usages of the term mmodule because
at least two people don't like it.

Bug: 113148576
Test: build / boot
Test: CTS: run cts -m CtsLibcoreSimpleMModuleTestCases
Test: CTS: run cts -m CtsLibcoreCoreApiTestCases
Change-Id: Id43bf55c83ffcdcb2181a5aa203a14d7c83a764c
diff --git a/JavaLibrary.bp b/JavaLibrary.bp
index ab23bf3..a337a54 100644
--- a/JavaLibrary.bp
+++ b/JavaLibrary.bp
@@ -45,6 +45,49 @@
     "ojluni/src/main/resources/",
 ]
 
+// The source files that go into core-oj.
+filegroup {
+    name: "core_oj_java_files",
+    srcs: [":openjdk_java_files"],
+}
+
+// OpenJDK source is not annotated with @hide so we need a separate
+// filegroup for just the parts that contribute to the API.
+filegroup {
+    name: "core_oj_api_files",
+    srcs: [":openjdk_javadoc_files"],
+}
+
+// The source files that go into core-libart.
+filegroup {
+    name: "core_libart_java_files",
+    srcs: [
+        ":non_openjdk_java_files",
+        ":android_icu4j_src_files",
+    ],
+}
+
+// Some parts of libart are not annotated with @hide so we need a separate
+// filegroup for just the parts that contribute to the API.
+filegroup {
+    name: "core_libart_api_files",
+    srcs: [
+        ":non_openjdk_javadoc_files",
+        ":android_icu4j_src_files",
+    ],
+}
+
+// The set of files in core that have been marked up with @hide and API-related
+// annotations.
+filegroup {
+    name: "core_api_files",
+    srcs: [
+        ":core_oj_api_files",
+        ":core_libart_api_files",
+        ":core_simple_java_files",
+    ],
+}
+
 java_defaults {
     name: "libcore_java_defaults",
     javacflags: [
@@ -69,10 +112,9 @@
     defaults: ["libcore_java_defaults"],
 
     srcs: [
-        ":openjdk_java_files",
-        ":non_openjdk_java_files",
-        ":android_icu4j_src_files",
-        ":core_simple_mmodule_java_files",
+        ":core_oj_java_files",
+        ":core_libart_java_files",
+        ":core_simple_java_files",
         ":openjdk_lambda_stub_files",
     ],
 
@@ -105,7 +147,7 @@
     installable: true,
     hostdex: true,
 
-    srcs: [":openjdk_java_files"],
+    srcs: [":core_oj_java_files"],
     java_resource_dirs: core_resource_dirs,
 
     no_standard_libs: true,
@@ -148,10 +190,7 @@
     installable: true,
     hostdex: true,
 
-    srcs: [
-        ":non_openjdk_java_files",
-        ":android_icu4j_src_files",
-    ],
+    srcs: [":core_libart_java_files"],
     java_resources: [":android_icu4j_resources"],
 
     no_standard_libs: true,
@@ -237,12 +276,16 @@
     include_srcs: true,
 }
 
+// The libraries that make up core.
 java_system_modules {
     name: "core-system-modules",
     libs: [
         "core-oj",
         "core-libart",
-        "core-lambda-stubs",
+        "core-simple",
+        // This one is not on device but it's needed when javac compiles code
+        // containing lambdas.
+        "core-lambda-stubs"
     ],
 }
 
@@ -451,21 +494,9 @@
     ],
 }
 
-filegroup {
-    name: "core-javadoc-files",
-    srcs: [
-        ":openjdk_javadoc_files",
-        ":non_openjdk_javadoc_files",
-        ":android_icu4j_src_files_for_docs",
-        ":core_simple_mmodule_java_files",
-    ],
-}
-
 droiddoc {
     name: "core-current-stubs-gen-docs",
-    srcs: [
-        ":core-javadoc-files",
-    ],
+    srcs: [":core_api_files"],
     installable: false,
     no_framework_libs: true,
     metalava_enabled: true,
@@ -474,9 +505,7 @@
 
 java_library_static {
     name: "core.current.stubs",
-    srcs: [
-        ":core-current-stubs-gen-docs",
-    ],
+    srcs: [":core-current-stubs-gen-docs"],
     errorprone: {
         javacflags: [
             "-Xep:MissingOverride:OFF",
@@ -489,40 +518,3 @@
     system_modules: "none",
 }
 
-//
-// Targets related to core mmodule APIs / dependencies.
-//
-
-// Generates stub source files for the {public SDK API + intra-core mmodule API}
-// of core-all.
-droiddoc {
-    name: "core-all-mmodule-stubs-docs",
-    srcs: [":core-javadoc-files"],
-
-    installable: false,
-    no_framework_libs: true,
-    metalava_enabled: true,
-    args: "-nodocs -stubsourceonly -showAnnotation libcore.mmodule.IntraCoreMModuleApi",
-}
-
-// A library containing the {public SDK API + intra-core mmodule API} stubs for
-// core-all.
-java_library {
-    name: "core-all.mmodule.stubs",
-    srcs: [
-      ":core-all-mmodule-stubs-docs",
-    ],
-
-    no_standard_libs: true,
-    libs: ["core-all"],
-    system_modules: "core-all-system-modules",
-    openjdk9: {
-        javacflags: ["--patch-module=java.base=."],
-    },
-}
-
-// Used when compiling mmodule code against core-all.mmodule.stubs.
-java_system_modules {
-    name: "core-all-mmodule-stubs-system-modules",
-    libs: ["core-all.mmodule.stubs"],
-}
diff --git a/luni/src/main/java/libcore/mmodule/CoreApi.java b/luni/src/main/java/libcore/mmodule/CoreApi.java
new file mode 100644
index 0000000..cf5b003
--- /dev/null
+++ b/luni/src/main/java/libcore/mmodule/CoreApi.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * 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 libcore.mmodule;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Indicates an API is part of a contract provided by the "core" set of
+ * libraries to the rest of the Android software stack.
+ * <p>
+ * This annotation should only appear on API that is already marked <pre>@hide</pre>.
+ *
+ * @hide
+ */
+@Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE})
+@Retention(RetentionPolicy.SOURCE)
+public @interface CoreApi {
+}
diff --git a/luni/src/main/java/libcore/mmodule/DemoLibartClass.java b/luni/src/main/java/libcore/mmodule/libart/DemoLibartClass.java
similarity index 72%
rename from luni/src/main/java/libcore/mmodule/DemoLibartClass.java
rename to luni/src/main/java/libcore/mmodule/libart/DemoLibartClass.java
index 0a73f8e..4b86e6a 100644
--- a/luni/src/main/java/libcore/mmodule/DemoLibartClass.java
+++ b/luni/src/main/java/libcore/mmodule/libart/DemoLibartClass.java
@@ -14,17 +14,24 @@
  * limitations under the License.
  */
 
-package libcore.mmodule;
+package libcore.mmodule.libart;
 
+import libcore.mmodule.CoreApi;
 import libcore.mmodule.IntraCoreMModuleApi;
 import libcore.mmodule.simple.DemoSimpleClass;
 
 /**
- * A class that provides a dependency within core-libart for the core-simple mmodule to depend on,
- * and depends on the core-simple mmodule thereby demonstrating a bi-directional dependency.
+ * A class that provides:
+ * <ul>
+ * <li>A method within core-libart for the core-simple mmodule to depend on,
+ * and a method that depends on the core-simple mmodule thereby demonstrating a
+ * bi-directional, intra-module dependency.</li>
+ * <li>A "core module API" method for use by higher-level code.</li>
+ * </ul>
  *
  * @hide
  */
+@CoreApi
 @IntraCoreMModuleApi
 public class DemoLibartClass {
 
@@ -35,7 +42,7 @@
      *
      * @hide
      */
-    @IntraCoreMModuleApi // Exposed for tests
+    @IntraCoreMModuleApi
     public static String intraCoreDependencyMethod() {
         // Delegate to core-simple code to implement the method.
         return DemoSimpleClass.simpleMethod();
@@ -53,6 +60,14 @@
     }
 
     /**
+     * A core API method provided to higher-level code in the Android software stack.
+     */
+    @CoreApi
+    public static String coreApiMethod() {
+        return "Hello World";
+    }
+
+    /**
      * A method that is public but not part of the intra-core mmodule API contract, i.e. it cannot
      * be used from an mmodule.
      *
diff --git a/mmodules/Android.bp b/mmodules/Android.bp
new file mode 100644
index 0000000..a055fea
--- /dev/null
+++ b/mmodules/Android.bp
@@ -0,0 +1,93 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// 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.
+
+// This build file contains rules related to a set of jars that collectively
+// form Android's "core". Core provides low-level behavior to Android's
+// software stack and apps.
+
+//
+// This section contains build rules for the APIs that the various core
+// libraries can depend on from each other: public SDK APIs and "intra-core"
+// APIs. Intra-core APIs are not for use by other parts of the Android software
+// stack.
+//
+
+// Generates stub source files for the {public SDK + intra-core} API
+// of the core jars.
+droiddoc {
+    name: "core-intra-stubs-docs",
+    srcs: [":core_api_files"],
+
+    installable: false,
+    no_framework_libs: true,
+    metalava_enabled: true,
+    args: "-nodocs -stubsourceonly -showAnnotation libcore.mmodule.IntraCoreMModuleApi",
+}
+
+// A library containing the {public SDK + intra-core} API stubs for the
+// core jars.
+java_library {
+    name: "core.intra.stubs",
+    srcs: [":core-intra-stubs-docs"],
+
+    no_standard_libs: true,
+    libs: ["core-all"],
+    system_modules: "core-all-system-modules",
+    openjdk9: {
+        javacflags: ["--patch-module=java.base=."],
+    },
+}
+
+// Used when compiling against core.intra.stubs.
+java_system_modules {
+    name: "core-intra-stubs-system-modules",
+    libs: ["core.intra.stubs"],
+}
+
+//
+// This section contains build rules for the APIs that various core libraries
+// provide to other parts of the Android software stack: these include the
+// public SDK APIs plus some "core APIs" that only the Android software stack
+// can use.
+//
+
+// Generates stub source files for the {public SDK + core} API of the core jars.
+droiddoc {
+    name: "core-api-stubs-docs",
+    srcs: [":core_api_files"],
+
+    installable: false,
+    no_framework_libs: true,
+    metalava_enabled: true,
+    args: "-nodocs -stubsourceonly -showAnnotation libcore.mmodule.CoreApi",
+}
+
+// A library containing the {public SDK + core} API stubs for the core jars.
+java_library {
+    name: "core.api.stubs",
+    srcs: [":core-api-stubs-docs"],
+
+    no_standard_libs: true,
+    libs: ["core-all"],
+    system_modules: "core-all-system-modules",
+    openjdk9: {
+        javacflags: ["--patch-module=java.base=."],
+    },
+}
+
+// Used when compiling higher-level code against core.api.stubs.
+java_system_modules {
+    name: "core-api-stubs-system-modules",
+    libs: ["core.api.stubs"],
+}
diff --git a/mmodules/coreapi/Android.bp b/mmodules/coreapi/Android.bp
new file mode 100644
index 0000000..188c9f4
--- /dev/null
+++ b/mmodules/coreapi/Android.bp
@@ -0,0 +1,31 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// 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.
+
+// Tests associated with the core APIs.
+java_test {
+    name: "core-api-test",
+    srcs: [ "src/test/java/**/*.java" ],
+
+    no_standard_libs: true,
+    libs: [
+          // We depend on stubs not the impl code. We do not test
+          // internals, just the {public SDK + intra-core} APIs.
+          "core.api.stubs",
+          // Other deps needed for tests.
+          "junit",
+    ],
+    system_modules: "core-api-stubs-system-modules",
+}
+
+
diff --git a/mmodules/coreapi/src/test/java/libcore/test/coreapi/DemoLibartCoreApiTest.java b/mmodules/coreapi/src/test/java/libcore/test/coreapi/DemoLibartCoreApiTest.java
new file mode 100644
index 0000000..8688c49
--- /dev/null
+++ b/mmodules/coreapi/src/test/java/libcore/test/coreapi/DemoLibartCoreApiTest.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * 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 libcore.test.coreapi;
+
+import static org.junit.Assert.assertEquals;
+
+import libcore.mmodule.libart.DemoLibartClass;
+
+import org.junit.Test;
+
+/**
+ * A test of the behavior of {@link DemoLibartClass} core API methods.
+ */
+public class DemoLibartCoreApiTest {
+
+    @Test
+    public void coreApiMethod() {
+        assertEquals("Hello World", DemoLibartClass.coreApiMethod());
+    }
+}
diff --git a/mmodules/libart/Android.bp b/mmodules/libart/Android.bp
new file mode 100644
index 0000000..f06e43d
--- /dev/null
+++ b/mmodules/libart/Android.bp
@@ -0,0 +1,94 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// 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.
+
+java_defaults {
+    name: "core-libart-defaults",
+    srcs: [":core_libart_java_files"],
+    installable: true,
+
+    // As a logical part of the set of core libs we cannot use
+    // no_standard_libs: false here because this core jar is one of the
+    // default standard libs and that leads to a cycle.
+    // So, we deliberately compile against core-all to avoid cycles.
+    no_standard_libs: true,
+    libs: ["core-all"],
+    system_modules: "core-all-system-modules",
+    openjdk9: {
+        javacflags: ["--patch-module=java.base=."],
+    },
+
+    dxflags: ["--core-library"],
+}
+
+// A library containing the implementation of core-libart.
+java_library {
+    // TODO: Rename / replace the existing core-libart.
+    name: "core-libart.mmodule",
+    hostdex: true,
+    defaults: ["core-libart-defaults"],
+}
+
+// A guaranteed unstripped version of core-libart.
+// The build system may or may not strip the core-libart jar
+// but this will not be stripped. See b/24535627.
+java_library {
+    name: "core-libart-testdex.mmodule",
+    defaults: ["core-libart-defaults"],
+    dex_preopt: {
+        enabled: false,
+    },
+}
+
+// Tests associated with the core-libart intra-core APIs.
+java_test {
+    name: "core-libart-intra-test",
+    srcs: [ "src/test/java/**/*.java" ],
+
+    no_standard_libs: true,
+    libs: [
+          // We depend on stubs not the impl code. We do not test
+          // internals, just the {public SDK + intra-core} APIs.
+          "core.intra.stubs",
+          // Other deps needed for tests.
+          "junit",
+    ],
+    system_modules: "core-intra-stubs-system-modules",
+}
+
+// Generates stub source files for the {public SDK + intra-core} APIs
+// of core-libart.
+droiddoc {
+    name: "core-libart-intra-stubs-docs",
+    srcs: [":core_libart_api_files"],
+    installable: false,
+    metalava_enabled: true,
+    args: "-nodocs -stubsourceonly -showAnnotation libcore.mmodule.IntraCoreMModuleApi",
+}
+
+// A library containing the {public SDK + intra-core} API stubs for
+// core-libart.
+java_library {
+    name: "core-libart.intra.stubs",
+    srcs: [":core-libart-intra-stubs-docs"],
+
+    no_standard_libs: true,
+    // We use core.intra.stubs here to prove that we have all the dependencies
+    // needed to compile the libart intra stubs within the intra stubs, i.e.
+    // there are no non-API references.
+    libs: ["core.intra.stubs"],
+    system_modules: "core-intra-stubs-system-modules",
+    openjdk9: {
+        javacflags: ["--patch-module=java.base=."],
+    },
+}
diff --git a/mmodules/simple/src/test/java/libcore/test/mmodule/libart/DemoLibartClassTest.java b/mmodules/libart/src/test/java/libcore/test/mmodule/libart/DemoLibartClassTest.java
similarity index 96%
rename from mmodules/simple/src/test/java/libcore/test/mmodule/libart/DemoLibartClassTest.java
rename to mmodules/libart/src/test/java/libcore/test/mmodule/libart/DemoLibartClassTest.java
index f383390..76c28d8 100644
--- a/mmodules/simple/src/test/java/libcore/test/mmodule/libart/DemoLibartClassTest.java
+++ b/mmodules/libart/src/test/java/libcore/test/mmodule/libart/DemoLibartClassTest.java
@@ -19,7 +19,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertSame;
 
-import libcore.mmodule.DemoLibartClass;
+import libcore.mmodule.libart.DemoLibartClass;
 
 import org.junit.Test;
 
diff --git a/mmodules/simple/Android.bp b/mmodules/simple/Android.bp
index be5a8a1..cdd440f 100644
--- a/mmodules/simple/Android.bp
+++ b/mmodules/simple/Android.bp
@@ -13,21 +13,19 @@
 // limitations under the License.
 
 filegroup {
-    name: "core_simple_mmodule_java_files",
+    name: "core_simple_java_files",
     srcs: ["src/main/java/**/*.java"]
 }
 
 java_defaults {
-    name: "core-simple-mmodule-defaults",
-    srcs: [":core_simple_mmodule_java_files"],
+    name: "core-simple-defaults",
+    srcs: [":core_simple_java_files"],
     installable: true,
 
-    // As a logical part of the set of core-* libs we cannot use
-    // no_standard_libs: false here because core-simple is one of the default
-    // standard libs and that leads to a cycle. core-simple can depend on
-    // core-oj and core-libart and there can be dependencies from core-libart
-    // or core-oj back onto core-simple. So, we deliberately compile against
-    // core-all to avoid cycles.
+    // As a logical part of the set of core libs we cannot use
+    // no_standard_libs: false here because this core jar is one of the
+    // default standard libs and that leads to a cycle.
+    // So, we deliberately compile against core-all to avoid cycles.
     no_standard_libs: true,
     libs: ["core-all"],
     system_modules: "core-all-system-modules",
@@ -38,11 +36,11 @@
     dxflags: ["--core-library"],
 }
 
-// A library containing the implementation of the core-simple mmodule.
+// A library containing the implementation of core-simple.
 java_library {
     name: "core-simple",
     hostdex: true,
-    defaults: ["core-simple-mmodule-defaults"],
+    defaults: ["core-simple-defaults"],
 }
 
 // A guaranteed unstripped version of core-simple.
@@ -50,52 +48,50 @@
 // but this will not be stripped. See b/24535627.
 java_library {
     name: "core-simple-testdex",
-    defaults: ["core-simple-mmodule-defaults"],
+    defaults: ["core-simple-defaults"],
     dex_preopt: {
         enabled: false,
     },
 }
 
-// Tests associated with the core-simple mmodule.
+// Tests associated with the core-simple intra-core APIs.
 java_test {
-    name: "core-simple-mmodule-test",
+    name: "core-simple-intra-test",
     srcs: [ "src/test/java/**/*.java" ],
 
     no_standard_libs: true,
     libs: [
-          // We depend on stubs not the impl code. We do not test mmodule
-          // internals, just the {public SDK API + intra-core mmodule API}.
-          "core-all.mmodule.stubs",
+          // We depend on stubs not the impl code. We do not test
+          // internals, just the {public SDK + intra-core} APIs.
+          "core.intra.stubs",
           // Other deps needed for tests.
           "junit",
     ],
-    system_modules: "core-all-mmodule-stubs-system-modules",
+    system_modules: "core-intra-stubs-system-modules",
 }
 
-// Generates stub source files for the {public SDK API + intra-core mmodule API}
-// of the core-simple mmodule.
+// Generates stub source files for the {public SDK + intra-core} APIs
+// of core-simple.
 droiddoc {
-    name: "core-simple-mmodule-stubs-docs",
-    srcs: [":core_simple_mmodule_java_files"],
+    name: "core-simple-intra-stubs-docs",
+    srcs: [":core_simple_java_files"],
     installable: false,
     metalava_enabled: true,
     args: "-nodocs -stubsourceonly -showAnnotation libcore.mmodule.IntraCoreMModuleApi",
 }
 
-// A library containing the {public SDK API + intra-core mmodule API} stubs for
-// the core-simple mmodule.
+// A library containing the {public SDK + intra-core} API stubs for
+// core-simple.
 java_library {
-    name: "core-simple.mmodule.stubs",
-    srcs: [
-      ":core-simple-mmodule-stubs-docs",
-    ],
+    name: "core-simple.intra.stubs",
+    srcs: [":core-simple-intra-stubs-docs"],
 
     no_standard_libs: true,
-    // We use core-all.mmodule.stubs here to prove that we have all the
-    // dependencies needed to compile the mmodule stubs within the stubs, i.e.
+    // We use core.intra.stubs here to prove that we have all the dependencies
+    // needed to compile the simple intra stubs within the intra stubs, i.e.
     // there are no non-API references.
-    libs: ["core-all.mmodule.stubs"],
-    system_modules: "core-all-mmodule-stubs-system-modules",
+    libs: ["core.intra.stubs"],
+    system_modules: "core-intra-stubs-system-modules",
     openjdk9: {
         javacflags: ["--patch-module=java.base=."],
     },
diff --git a/mmodules/simple/src/main/java/libcore/mmodule/simple/DemoSimpleClass.java b/mmodules/simple/src/main/java/libcore/mmodule/simple/DemoSimpleClass.java
index 413746909..8ac03ad 100644
--- a/mmodules/simple/src/main/java/libcore/mmodule/simple/DemoSimpleClass.java
+++ b/mmodules/simple/src/main/java/libcore/mmodule/simple/DemoSimpleClass.java
@@ -17,7 +17,7 @@
 package libcore.mmodule.simple;
 
 import libcore.mmodule.IntraCoreMModuleApi;
-import libcore.mmodule.DemoLibartClass;
+import libcore.mmodule.libart.DemoLibartClass;
 
 /**
  * A class that nothing in libcore or the Android framework depends on to provide public SDK
diff --git a/non_openjdk_java_files.bp b/non_openjdk_java_files.bp
index 523babb..3d398f5 100644
--- a/non_openjdk_java_files.bp
+++ b/non_openjdk_java_files.bp
@@ -156,8 +156,9 @@
         "luni/src/main/java/javax/xml/xpath/XPathFunctionException.java",
         "luni/src/main/java/javax/xml/xpath/XPathFunctionResolver.java",
         "luni/src/main/java/javax/xml/xpath/XPathVariableResolver.java",
-        "luni/src/main/java/libcore/mmodule/DemoLibartClass.java",
+        "luni/src/main/java/libcore/mmodule/CoreApi.java",
         "luni/src/main/java/libcore/mmodule/IntraCoreMModuleApi.java",
+        "luni/src/main/java/libcore/mmodule/libart/DemoLibartClass.java",
         "json/src/main/java/org/json/JSON.java",
         "json/src/main/java/org/json/JSONArray.java",
         "json/src/main/java/org/json/JSONException.java",