diff --git a/.prebuilt_info/prebuilt_info_go_current_current_zip.asciipb b/.prebuilt_info/prebuilt_info_go_current_current_zip.asciipb
new file mode 100644
index 0000000..44e13b1
--- /dev/null
+++ b/.prebuilt_info/prebuilt_info_go_current_current_zip.asciipb
@@ -0,0 +1,15 @@
+drops {
+  android_build_drop {
+    build_id: "T1007188"
+    target: "train_build"
+    source_file: "mainline-sdks/for-UpsideDownCake-build/current/com.google.android.go.scheduling/sdk/scheduling-sdk-current.zip"
+  }
+  dest_file: "go/current/current.zip"
+  version: ""
+  version_group: ""
+  git_project: "platform/prebuilts/module_sdk/Scheduling"
+  git_branch: "udc-dev"
+  transform: TRANSFORM_UNZIP
+  transform_options {
+  }
+}
diff --git a/go/current/Android.bp b/go/current/Android.bp
new file mode 100644
index 0000000..5fc9e45
--- /dev/null
+++ b/go/current/Android.bp
@@ -0,0 +1,112 @@
+// This is auto-generated. DO NOT EDIT.
+
+// blueprint rules added by vendor/google/build/mainline_modules_sdks.py
+// to support coexistence.
+blueprint_package_includes {
+    match_all: ["com.android.mainline_go"]
+}
+
+package {
+    // A default list here prevents the license LSC from adding its own list which would
+    // be unnecessary as every module in the sdk already has its own licenses property.
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+prebuilt_bootclasspath_fragment {
+    name: "com.android.scheduling-bootclasspath-fragment",
+    // Do not prefer prebuilt if the Soong config variable "module_build_from_source" in namespace "ANDROID" is true.
+    use_source_config_var: {
+        config_namespace: "ANDROID",
+        var_name: "module_build_from_source",
+    },
+    visibility: ["//visibility:public"],
+    apex_available: ["com.android.scheduling"],
+    licenses: ["scheduling-sdk_Android-Apache-2.0"],
+    contents: ["framework-scheduling"],
+    fragments: [
+        {
+            apex: "com.android.art",
+            module: "art-bootclasspath-fragment",
+        },
+    ],
+    hidden_api: {
+        annotation_flags: "hiddenapi/annotation-flags.csv",
+        metadata: "hiddenapi/metadata.csv",
+        index: "hiddenapi/index.csv",
+        signature_patterns: "hiddenapi/signature-patterns.csv",
+        filtered_stub_flags: "hiddenapi/filtered-stub-flags.csv",
+        filtered_flags: "hiddenapi/filtered-flags.csv",
+    },
+}
+
+java_sdk_library_import {
+    name: "framework-scheduling",
+    // Do not prefer prebuilt if the Soong config variable "module_build_from_source" in namespace "ANDROID" is true.
+    use_source_config_var: {
+        config_namespace: "ANDROID",
+        var_name: "module_build_from_source",
+    },
+    visibility: ["//visibility:public"],
+    apex_available: ["com.android.scheduling"],
+    licenses: ["scheduling-sdk_Android-Apache-2.0"],
+    shared_library: false,
+    permitted_packages: ["android.scheduling"],
+    public: {
+        jars: ["sdk_library/public/framework-scheduling-stubs.jar"],
+        stub_srcs: ["sdk_library/public/framework-scheduling.srcjar"],
+        current_api: "sdk_library/public/framework-scheduling.txt",
+        removed_api: "sdk_library/public/framework-scheduling-removed.txt",
+        annotations: "sdk_library/public/framework-scheduling_annotations.zip",
+        sdk_version: "module_current",
+    },
+    system: {
+        jars: ["sdk_library/system/framework-scheduling-stubs.jar"],
+        stub_srcs: ["sdk_library/system/framework-scheduling.srcjar"],
+        current_api: "sdk_library/system/framework-scheduling.txt",
+        removed_api: "sdk_library/system/framework-scheduling-removed.txt",
+        annotations: "sdk_library/system/framework-scheduling_annotations.zip",
+        sdk_version: "module_current",
+    },
+    module_lib: {
+        jars: ["sdk_library/module-lib/framework-scheduling-stubs.jar"],
+        stub_srcs: ["sdk_library/module-lib/framework-scheduling.srcjar"],
+        current_api: "sdk_library/module-lib/framework-scheduling.txt",
+        removed_api: "sdk_library/module-lib/framework-scheduling-removed.txt",
+        annotations: "sdk_library/module-lib/framework-scheduling_annotations.zip",
+        sdk_version: "module_current",
+    },
+}
+
+java_import {
+    name: "service-scheduling",
+    // Do not prefer prebuilt if the Soong config variable "module_build_from_source" in namespace "ANDROID" is true.
+    use_source_config_var: {
+        config_namespace: "ANDROID",
+        var_name: "module_build_from_source",
+    },
+    visibility: ["//visibility:public"],
+    apex_available: ["com.android.scheduling"],
+    licenses: ["scheduling-sdk_Android-Apache-2.0"],
+    jars: ["java_systemserver_libs/snapshot/jars/are/invalid/service-scheduling.jar"],
+    min_sdk_version: "31",
+}
+
+license {
+    name: "scheduling-sdk_Android-Apache-2.0",
+    visibility: ["//visibility:private"],
+    license_kinds: ["SPDX-license-identifier-Apache-2.0"],
+    license_text: ["licenses/build/soong/licenses/LICENSE"],
+}
+
+prebuilt_systemserverclasspath_fragment {
+    name: "com.android.scheduling-systemserverclasspath-fragment",
+    // Do not prefer prebuilt if the Soong config variable "module_build_from_source" in namespace "ANDROID" is true.
+    use_source_config_var: {
+        config_namespace: "ANDROID",
+        var_name: "module_build_from_source",
+    },
+    visibility: ["//visibility:public"],
+    apex_available: ["com.android.scheduling"],
+    licenses: ["scheduling-sdk_Android-Apache-2.0"],
+    standalone_contents: ["service-scheduling"],
+}
diff --git a/go/current/hiddenapi/annotation-flags.csv b/go/current/hiddenapi/annotation-flags.csv
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/go/current/hiddenapi/annotation-flags.csv
diff --git a/go/current/hiddenapi/filtered-flags.csv b/go/current/hiddenapi/filtered-flags.csv
new file mode 100644
index 0000000..f55fca9
--- /dev/null
+++ b/go/current/hiddenapi/filtered-flags.csv
@@ -0,0 +1,22 @@
+Landroid/scheduling/IRebootReadinessManager$Default;->asBinder()Landroid/os/IBinder;,public-api,sdk,system-api,test-api
+Landroid/scheduling/IRebootReadinessManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;,public-api,sdk,system-api,test-api
+Landroid/scheduling/IRebootReadinessManager$Stub;->asBinder()Landroid/os/IBinder;,public-api,sdk,system-api,test-api
+Landroid/scheduling/IRebootReadinessManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z,public-api,sdk,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Default;->asBinder()Landroid/os/IBinder;,public-api,sdk,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;,public-api,sdk,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Stub;->asBinder()Landroid/os/IBinder;,public-api,sdk,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z,public-api,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessCallbackProxy$$ExternalSyntheticLambda0;->run()V,core-platform-api,public-api,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;-><init>(ZJLjava/lang/String;)V,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;->getEstimatedFinishTime()J,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;->getLogSubsystemName()Ljava/lang/String;,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;->isReadyToReboot()Z,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RequestRebootReadinessStatusListener;->onRequestRebootReadinessStatus()Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->ACTION_REBOOT_READY:Ljava/lang/String;,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->EXTRA_IS_READY_TO_REBOOT:Ljava/lang/String;,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->addRequestRebootReadinessStatusListener(Ljava/util/concurrent/Executor;Landroid/scheduling/RebootReadinessManager$RequestRebootReadinessStatusListener;)V,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->cancelPendingReboot()V,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->isReadyToReboot()Z,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->markRebootPending()V,sdk,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->removeRequestRebootReadinessStatusListener(Landroid/scheduling/RebootReadinessManager$RequestRebootReadinessStatusListener;)V,sdk,system-api,test-api
+Landroid/scheduling/SchedulingFrameworkInitializer$$ExternalSyntheticLambda0;->createService(Landroid/content/Context;Landroid/os/IBinder;)Ljava/lang/Object;,sdk,system-api,test-api
diff --git a/go/current/hiddenapi/filtered-stub-flags.csv b/go/current/hiddenapi/filtered-stub-flags.csv
new file mode 100644
index 0000000..54f764e
--- /dev/null
+++ b/go/current/hiddenapi/filtered-stub-flags.csv
@@ -0,0 +1,22 @@
+Landroid/scheduling/IRebootReadinessManager$Default;->asBinder()Landroid/os/IBinder;,public-api,system-api,test-api
+Landroid/scheduling/IRebootReadinessManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;,public-api,system-api,test-api
+Landroid/scheduling/IRebootReadinessManager$Stub;->asBinder()Landroid/os/IBinder;,public-api,system-api,test-api
+Landroid/scheduling/IRebootReadinessManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z,public-api,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Default;->asBinder()Landroid/os/IBinder;,public-api,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;,public-api,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Stub;->asBinder()Landroid/os/IBinder;,public-api,system-api,test-api
+Landroid/scheduling/IRequestRebootReadinessStatusListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z,public-api,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessCallbackProxy$$ExternalSyntheticLambda0;->run()V,core-platform-api,public-api,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;-><init>(ZJLjava/lang/String;)V,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;->getEstimatedFinishTime()J,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;->getLogSubsystemName()Ljava/lang/String;,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;->isReadyToReboot()Z,system-api,test-api
+Landroid/scheduling/RebootReadinessManager$RequestRebootReadinessStatusListener;->onRequestRebootReadinessStatus()Landroid/scheduling/RebootReadinessManager$RebootReadinessStatus;,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->ACTION_REBOOT_READY:Ljava/lang/String;,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->EXTRA_IS_READY_TO_REBOOT:Ljava/lang/String;,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->addRequestRebootReadinessStatusListener(Ljava/util/concurrent/Executor;Landroid/scheduling/RebootReadinessManager$RequestRebootReadinessStatusListener;)V,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->cancelPendingReboot()V,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->isReadyToReboot()Z,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->markRebootPending()V,system-api,test-api
+Landroid/scheduling/RebootReadinessManager;->removeRequestRebootReadinessStatusListener(Landroid/scheduling/RebootReadinessManager$RequestRebootReadinessStatusListener;)V,system-api,test-api
+Landroid/scheduling/SchedulingFrameworkInitializer$$ExternalSyntheticLambda0;->createService(Landroid/content/Context;Landroid/os/IBinder;)Ljava/lang/Object;,system-api,test-api
diff --git a/go/current/hiddenapi/index.csv b/go/current/hiddenapi/index.csv
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/go/current/hiddenapi/index.csv
@@ -0,0 +1 @@
+
diff --git a/go/current/hiddenapi/metadata.csv b/go/current/hiddenapi/metadata.csv
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/go/current/hiddenapi/metadata.csv
@@ -0,0 +1 @@
+
diff --git a/go/current/hiddenapi/signature-patterns.csv b/go/current/hiddenapi/signature-patterns.csv
new file mode 100644
index 0000000..65648c9
--- /dev/null
+++ b/go/current/hiddenapi/signature-patterns.csv
@@ -0,0 +1 @@
+android/scheduling/**
diff --git a/go/current/java_systemserver_libs/snapshot/jars/are/invalid/service-scheduling.jar b/go/current/java_systemserver_libs/snapshot/jars/are/invalid/service-scheduling.jar
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/go/current/java_systemserver_libs/snapshot/jars/are/invalid/service-scheduling.jar
diff --git a/go/current/licenses/build/soong/licenses/LICENSE b/go/current/licenses/build/soong/licenses/LICENSE
new file mode 100644
index 0000000..d645695
--- /dev/null
+++ b/go/current/licenses/build/soong/licenses/LICENSE
@@ -0,0 +1,202 @@
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
diff --git a/go/current/sdk_library/module-lib/framework-scheduling-removed.txt b/go/current/sdk_library/module-lib/framework-scheduling-removed.txt
new file mode 100644
index 0000000..d802177
--- /dev/null
+++ b/go/current/sdk_library/module-lib/framework-scheduling-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/go/current/sdk_library/module-lib/framework-scheduling-stubs.jar b/go/current/sdk_library/module-lib/framework-scheduling-stubs.jar
new file mode 100644
index 0000000..aa52704
--- /dev/null
+++ b/go/current/sdk_library/module-lib/framework-scheduling-stubs.jar
Binary files differ
diff --git a/go/current/sdk_library/module-lib/framework-scheduling.srcjar b/go/current/sdk_library/module-lib/framework-scheduling.srcjar
new file mode 100644
index 0000000..0552c56
--- /dev/null
+++ b/go/current/sdk_library/module-lib/framework-scheduling.srcjar
Binary files differ
diff --git a/go/current/sdk_library/module-lib/framework-scheduling.txt b/go/current/sdk_library/module-lib/framework-scheduling.txt
new file mode 100644
index 0000000..9356eb7
--- /dev/null
+++ b/go/current/sdk_library/module-lib/framework-scheduling.txt
@@ -0,0 +1,9 @@
+// Signature format: 2.0
+package android.scheduling {
+
+  public class SchedulingFrameworkInitializer {
+    method public static void registerServiceWrappers();
+  }
+
+}
+
diff --git a/go/current/sdk_library/module-lib/framework-scheduling_annotations.zip b/go/current/sdk_library/module-lib/framework-scheduling_annotations.zip
new file mode 100644
index 0000000..ff6b9b8
--- /dev/null
+++ b/go/current/sdk_library/module-lib/framework-scheduling_annotations.zip
Binary files differ
diff --git a/go/current/sdk_library/public/framework-scheduling-removed.txt b/go/current/sdk_library/public/framework-scheduling-removed.txt
new file mode 100644
index 0000000..d802177
--- /dev/null
+++ b/go/current/sdk_library/public/framework-scheduling-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/go/current/sdk_library/public/framework-scheduling-stubs.jar b/go/current/sdk_library/public/framework-scheduling-stubs.jar
new file mode 100644
index 0000000..b62b671
--- /dev/null
+++ b/go/current/sdk_library/public/framework-scheduling-stubs.jar
Binary files differ
diff --git a/go/current/sdk_library/public/framework-scheduling.srcjar b/go/current/sdk_library/public/framework-scheduling.srcjar
new file mode 100644
index 0000000..b62b671
--- /dev/null
+++ b/go/current/sdk_library/public/framework-scheduling.srcjar
Binary files differ
diff --git a/go/current/sdk_library/public/framework-scheduling.txt b/go/current/sdk_library/public/framework-scheduling.txt
new file mode 100644
index 0000000..d802177
--- /dev/null
+++ b/go/current/sdk_library/public/framework-scheduling.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/go/current/sdk_library/public/framework-scheduling_annotations.zip b/go/current/sdk_library/public/framework-scheduling_annotations.zip
new file mode 100644
index 0000000..15cb0ec
--- /dev/null
+++ b/go/current/sdk_library/public/framework-scheduling_annotations.zip
Binary files differ
diff --git a/go/current/sdk_library/system/framework-scheduling-removed.txt b/go/current/sdk_library/system/framework-scheduling-removed.txt
new file mode 100644
index 0000000..d802177
--- /dev/null
+++ b/go/current/sdk_library/system/framework-scheduling-removed.txt
@@ -0,0 +1 @@
+// Signature format: 2.0
diff --git a/go/current/sdk_library/system/framework-scheduling-stubs.jar b/go/current/sdk_library/system/framework-scheduling-stubs.jar
new file mode 100644
index 0000000..10947b2
--- /dev/null
+++ b/go/current/sdk_library/system/framework-scheduling-stubs.jar
Binary files differ
diff --git a/go/current/sdk_library/system/framework-scheduling.srcjar b/go/current/sdk_library/system/framework-scheduling.srcjar
new file mode 100644
index 0000000..28b9085
--- /dev/null
+++ b/go/current/sdk_library/system/framework-scheduling.srcjar
Binary files differ
diff --git a/go/current/sdk_library/system/framework-scheduling.txt b/go/current/sdk_library/system/framework-scheduling.txt
new file mode 100644
index 0000000..5b76cd4
--- /dev/null
+++ b/go/current/sdk_library/system/framework-scheduling.txt
@@ -0,0 +1,26 @@
+// Signature format: 2.0
+package android.scheduling {
+
+  public final class RebootReadinessManager {
+    method @RequiresPermission(android.Manifest.permission.SIGNAL_REBOOT_READINESS) public void addRequestRebootReadinessStatusListener(@NonNull java.util.concurrent.Executor, @NonNull android.scheduling.RebootReadinessManager.RequestRebootReadinessStatusListener);
+    method @RequiresPermission(android.Manifest.permission.REBOOT) public void cancelPendingReboot();
+    method @RequiresPermission(android.Manifest.permission.REBOOT) public boolean isReadyToReboot();
+    method @RequiresPermission(android.Manifest.permission.REBOOT) public void markRebootPending();
+    method @RequiresPermission(android.Manifest.permission.SIGNAL_REBOOT_READINESS) public void removeRequestRebootReadinessStatusListener(@NonNull android.scheduling.RebootReadinessManager.RequestRebootReadinessStatusListener);
+    field public static final String ACTION_REBOOT_READY = "android.scheduling.action.REBOOT_READY";
+    field public static final String EXTRA_IS_READY_TO_REBOOT = "android.scheduling.extra.IS_READY_TO_REBOOT";
+  }
+
+  public static final class RebootReadinessManager.RebootReadinessStatus {
+    ctor public RebootReadinessManager.RebootReadinessStatus(boolean, long, @NonNull String);
+    method public long getEstimatedFinishTime();
+    method @NonNull public String getLogSubsystemName();
+    method public boolean isReadyToReboot();
+  }
+
+  public static interface RebootReadinessManager.RequestRebootReadinessStatusListener {
+    method @NonNull public android.scheduling.RebootReadinessManager.RebootReadinessStatus onRequestRebootReadinessStatus();
+  }
+
+}
+
diff --git a/go/current/sdk_library/system/framework-scheduling_annotations.zip b/go/current/sdk_library/system/framework-scheduling_annotations.zip
new file mode 100644
index 0000000..ff6b9b8
--- /dev/null
+++ b/go/current/sdk_library/system/framework-scheduling_annotations.zip
Binary files differ
diff --git a/go/current/snapshot-creation-build-number.txt b/go/current/snapshot-creation-build-number.txt
new file mode 100644
index 0000000..f9eedbc
--- /dev/null
+++ b/go/current/snapshot-creation-build-number.txt
@@ -0,0 +1 @@
+10414058
\ No newline at end of file
