Reland "Enable maintain_prefix for function"

This reverts commit cf1e8d417680278fae15d4c66dc03e2031871f22.

Reland "Move desugared lib test method"

This reverts commit 06f3809eac0750754bf5d4a86b710417f406d107.

Change-Id: I8d2422029b1d1a6ea3beafedb500e66c7553cb0b
diff --git a/src/library_desugar/jdk11/desugar_jdk_libs.json b/src/library_desugar/jdk11/desugar_jdk_libs.json
index 238f3ee..ef9b604 100644
--- a/src/library_desugar/jdk11/desugar_jdk_libs.json
+++ b/src/library_desugar/jdk11/desugar_jdk_libs.json
@@ -52,10 +52,10 @@
         "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
         "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
         "java.util.concurrent.atomic.DesugarAtomic": "j$.util.concurrent.atomic.DesugarAtomic",
-        "java.util.function.": "j$.util.function.",
         "java.util.stream.": "j$.util.stream."
       },
       "maintain_prefix": [
+        "java.util.function.",
         "java.io.UncheckedIOException"
       ],
       "emulate_interface": {
@@ -266,6 +266,7 @@
     "-keepclassmembers class j$.util.concurrent.ConcurrentHashMap { private void readObject(java.io.ObjectInputStream); private void writeObject(java.io.ObjectOutputStream); private void readObjectNoData(); private static final java.io.ObjectStreamField[] serialPersistentFields; private static final long serialVersionUID;}",
     "-keepclassmembers class j$.util.concurrent.ConcurrentHashMap$CounterCell { long value; }",
     "-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); public static final !synthetic <fields>; }",
+    "-keeppackagenames java.**",
     "-keeppackagenames j$.**",
     "-keepclassmembers class j$.util.IntSummaryStatistics { long count; long sum; int min; int max; }",
     "-keepclassmembers class j$.util.LongSummaryStatistics { long count; long sum; long min; long max; }",
diff --git a/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json b/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json
index 73fa330..8064ed0 100644
--- a/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json
+++ b/src/library_desugar/jdk11/desugar_jdk_libs_minimal.json
@@ -17,6 +17,7 @@
   "library_flags": [],
   "shrinker_config": [
     "-keeppackagenames java.**",
+    "-keeppackagenames j$.**",
     "-keepattributes Signature",
     "-keepattributes EnclosingMethod",
     "-keepattributes InnerClasses"
diff --git a/src/library_desugar/jdk11/desugar_jdk_libs_path.json b/src/library_desugar/jdk11/desugar_jdk_libs_path.json
index 03ca930..4f0ec65 100644
--- a/src/library_desugar/jdk11/desugar_jdk_libs_path.json
+++ b/src/library_desugar/jdk11/desugar_jdk_libs_path.json
@@ -60,6 +60,48 @@
         "java.nio.channels.CompletionHandler": "j$.nio.channels.CompletionHandler",
         "java.nio.file.": "j$.nio.file."
       },
+      "dont_rewrite_prefix": [
+        "java.nio.file.AccessDeniedException",
+        "java.nio.file.AtomicMoveNotSupportedException",
+        "java.nio.file.ClosedDirectoryStreamException",
+        "java.nio.file.ClosedFileSystemException",
+        "java.nio.file.ClosedWatchServiceException",
+        "java.nio.file.DirectoryIteratorException",
+        "java.nio.file.DirectoryNotEmptyException",
+        "java.nio.file.FileAlreadyExistsException",
+        "java.nio.file.FileSystemAlreadyExistsException",
+        "java.nio.file.FileSystemException",
+        "java.nio.file.FileSystemLoopException",
+        "java.nio.file.FileSystemNotFoundException",
+        "java.nio.file.InvalidPathException",
+        "java.nio.file.NoSuchFileException",
+        "java.nio.file.NotDirectoryException",
+        "java.nio.file.NotLinkException",
+        "java.nio.file.ProviderMismatchException",
+        "java.nio.file.ProviderNotFoundException",
+        "java.nio.file.ReadOnlyFileSystemException"
+      ],
+      "maintain_prefix": [
+        "java.nio.file.AccessDeniedException",
+        "java.nio.file.AtomicMoveNotSupportedException",
+        "java.nio.file.ClosedDirectoryStreamException",
+        "java.nio.file.ClosedFileSystemException",
+        "java.nio.file.ClosedWatchServiceException",
+        "java.nio.file.DirectoryIteratorException",
+        "java.nio.file.DirectoryNotEmptyException",
+        "java.nio.file.FileAlreadyExistsException",
+        "java.nio.file.FileSystemAlreadyExistsException",
+        "java.nio.file.FileSystemException",
+        "java.nio.file.FileSystemLoopException",
+        "java.nio.file.FileSystemNotFoundException",
+        "java.nio.file.InvalidPathException",
+        "java.nio.file.NoSuchFileException",
+        "java.nio.file.NotDirectoryException",
+        "java.nio.file.NotLinkException",
+        "java.nio.file.ProviderMismatchException",
+        "java.nio.file.ProviderNotFoundException",
+        "java.nio.file.ReadOnlyFileSystemException"
+      ],
       "retarget_method_with_emulated_dispatch": {
         "java.nio.file.Path java.io.File#toPath()": "java.io.DesugarFile"
       },
@@ -131,13 +173,13 @@
         "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
         "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
         "java.util.concurrent.atomic.DesugarAtomic": "j$.util.concurrent.atomic.DesugarAtomic",
-        "java.util.function.": "j$.util.function.",
         "java.util.stream.": "j$.util.stream."
       },
       "dont_rewrite_prefix": [
         "java.nio.channels.FileChannel$MapMode"
       ],
       "maintain_prefix": [
+        "java.util.function.",
         "java.io.UncheckedIOException"
       ],
       "emulate_interface": {
@@ -411,6 +453,7 @@
     "-keepclassmembers class j$.util.concurrent.ConcurrentHashMap { private void readObject(java.io.ObjectInputStream); private void writeObject(java.io.ObjectOutputStream); private void readObjectNoData(); private static final java.io.ObjectStreamField[] serialPersistentFields; private static final long serialVersionUID;}",
     "-keepclassmembers class j$.util.concurrent.ConcurrentHashMap$CounterCell { long value; }",
     "-keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); public static final !synthetic <fields>; }",
+    "-keeppackagenames java.**",
     "-keeppackagenames j$.**",
     "-keepclassmembers class j$.util.IntSummaryStatistics { long count; long sum; int min; int max; }",
     "-keepclassmembers class j$.util.LongSummaryStatistics { long count; long sum; long min; long max; }",