Move `DesugarUnsafe` to `sun/misc/` package

#desugar_jdk_libs #java11

- Keep `Desugar<X>` classes in the same package as its origin `<X>`. This is to easy track desugar-specific `Desugar<X>` classes, as well as keeping `Desugar<X>` with the same class and member visibility as its origin `<X>`, and maintaining package-level dependency graph the same as the OpenJDK version.

- Starter-example CL as including non `java/`-prefixed classes in `desugar_jdk_libs`

PiperOrigin-RevId: 359904867
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java
index 577aa3c..ebdc1a9 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/CoreLibrarySupport.java
@@ -93,7 +93,11 @@
     this.retargetConfig = retargetConfig;
     checkArgument(
         renamedPrefixes.stream()
-            .allMatch(prefix -> prefix.startsWith("java/") || prefix.startsWith("javadesugar/")),
+            .allMatch(
+                prefix ->
+                    prefix.startsWith("java/")
+                        || prefix.startsWith("sun/")
+                        || prefix.startsWith("javadesugar/")),
         "Unexpected renamedPrefixes: Actual (%s).",
         renamedPrefixes);
     this.renamedPrefixes = ImmutableSet.copyOf(renamedPrefixes);
@@ -111,7 +115,9 @@
 
   public boolean isRenamedCoreLibrary(String internalName) {
     String unprefixedName = rewriter.unprefix(internalName);
-    if (!(unprefixedName.startsWith("java/") || unprefixedName.startsWith("javadesugar/"))
+    if (!(unprefixedName.startsWith("java/")
+            || unprefixedName.startsWith("sun/")
+            || unprefixedName.startsWith("javadesugar/"))
         || renamedPrefixes.isEmpty()) {
       return false; // shortcut
     }
@@ -126,6 +132,9 @@
     if (internalName.startsWith("java/")) {
       return "j$/" + internalName.substring(/* cut away "java/" prefix */ 5);
     }
+    if (internalName.startsWith("sun/")) {
+      return "j$/" + internalName;
+    }
     if (internalName.startsWith("javadesugar/")) {
       return "jd$/" + internalName.substring(/* cut away "javadesugar/" prefix */ 12);
     }
diff --git a/src/tools/android/java/com/google/devtools/build/android/desugar/langmodel/ClassName.java b/src/tools/android/java/com/google/devtools/build/android/desugar/langmodel/ClassName.java
index 8aec995..3df1e51 100644
--- a/src/tools/android/java/com/google/devtools/build/android/desugar/langmodel/ClassName.java
+++ b/src/tools/android/java/com/google/devtools/build/android/desugar/langmodel/ClassName.java
@@ -107,6 +107,7 @@
               "java/util/concurrent/atomic/DesugarAtomic",
               "j$/util/concurrent/atomic/DesugarAtomic")
           .put("javadesugar/testing/", "jd$/testing/")
+          .put("sun/misc/Desugar", "j$/sun/misc/Desugar")
           .build();
 
   public static final TypeMapper SHADOWED_TO_MIRRORED_TYPE_MAPPER =