Relands "Remove JDK8 alternative 3 file"

This reverts commit c8f6f0f5e6616500cdcda962d3189b573fa0d3c6.

Change-Id: Ie1f12504c219711ce103a55420a1e9175b93e14a
diff --git a/src/library_desugar/desugar_jdk_libs_alternative_3.json b/src/library_desugar/desugar_jdk_libs_alternative_3.json
deleted file mode 100644
index 2b0ffd9..0000000
--- a/src/library_desugar/desugar_jdk_libs_alternative_3.json
+++ /dev/null
@@ -1,254 +0,0 @@
-{
-  "configuration_format_version": 3,
-  "group_id" : "com.tools.android",
-  "artifact_id" : "desugar_jdk_libs_alternative_3",
-  "version": "1.2.1",
-  "required_compilation_api_level": 26,
-  "synthesized_library_classes_package_prefix": "j$.",
-  "support_all_callbacks_from_library": false,
-  "common_flags": [
-    {
-      "api_level_below_or_equal": 25,
-      "wrapper_conversion": [
-        "java.time.Clock"
-      ]
-    },
-    {
-      "api_level_below_or_equal": 23,
-      "wrapper_conversion": [
-        "java.util.PrimitiveIterator$OfDouble",
-        "java.util.PrimitiveIterator$OfInt",
-        "java.util.PrimitiveIterator$OfLong",
-        "java.util.Spliterator",
-        "java.util.Spliterator$OfDouble",
-        "java.util.Spliterator$OfInt",
-        "java.util.Spliterator$OfLong",
-        "java.util.Spliterator$OfPrimitive",
-        "java.util.function.BiConsumer",
-        "java.util.function.BiFunction",
-        "java.util.function.BiPredicate",
-        "java.util.function.BinaryOperator",
-        "java.util.function.Consumer",
-        "java.util.function.DoubleBinaryOperator",
-        "java.util.function.DoubleConsumer",
-        "java.util.function.DoubleFunction",
-        "java.util.function.DoublePredicate",
-        "java.util.function.DoubleToIntFunction",
-        "java.util.function.DoubleToLongFunction",
-        "java.util.function.DoubleUnaryOperator",
-        "java.util.function.Function",
-        "java.util.function.IntBinaryOperator",
-        "java.util.function.IntConsumer",
-        "java.util.function.IntFunction",
-        "java.util.function.IntPredicate",
-        "java.util.function.IntToDoubleFunction",
-        "java.util.function.IntToLongFunction",
-        "java.util.function.IntUnaryOperator",
-        "java.util.function.LongBinaryOperator",
-        "java.util.function.LongConsumer",
-        "java.util.function.LongFunction",
-        "java.util.function.LongPredicate",
-        "java.util.function.LongToDoubleFunction",
-        "java.util.function.LongToIntFunction",
-        "java.util.function.LongUnaryOperator",
-        "java.util.function.ObjDoubleConsumer",
-        "java.util.function.ObjIntConsumer",
-        "java.util.function.ObjLongConsumer",
-        "java.util.function.Predicate",
-        "java.util.function.Supplier",
-        "java.util.function.ToDoubleFunction",
-        "java.util.function.ToIntFunction",
-        "java.util.function.ToLongFunction",
-        "java.util.function.UnaryOperator",
-        "java.util.stream.BaseStream",
-        "java.util.stream.Collector",
-        "java.util.stream.DoubleStream",
-        "java.util.stream.IntStream",
-        "java.util.stream.LongStream",
-        "java.util.stream.Stream"
-      ]
-    }
-  ],
-  "library_flags": [
-    {
-      "api_level_below_or_equal": 25,
-      "rewrite_prefix": {
-        "j$.time.": "java.time.",
-        "java.time.": "j$.time.",
-        "java.util.Desugar": "j$.util.Desugar"
-      },
-      "retarget_lib_member": {
-        "java.util.Date#toInstant": "java.util.DesugarDate",
-        "java.util.GregorianCalendar#toZonedDateTime": "java.util.DesugarGregorianCalendar",
-        "java.util.TimeZone#toZoneId": "java.util.DesugarTimeZone"
-      },
-      "custom_conversion": {
-        "java.time.ZonedDateTime": "java.time.TimeConversions",
-        "java.time.LocalDate": "java.time.TimeConversions",
-        "java.time.Duration": "java.time.TimeConversions",
-        "java.time.ZoneId": "java.time.TimeConversions",
-        "java.time.MonthDay": "java.time.TimeConversions",
-        "java.time.Instant": "java.time.TimeConversions"
-      }
-    },
-    {
-      "api_level_below_or_equal": 23,
-      "rewrite_prefix": {
-        "j$.util.Optional": "java.util.Optional",
-        "j$.util.LongSummaryStatistics": "java.util.LongSummaryStatistics",
-        "j$.util.IntSummaryStatistics": "java.util.IntSummaryStatistics",
-        "j$.util.DoubleSummaryStatistics": "java.util.DoubleSummaryStatistics",
-        "java.util.stream.": "j$.util.stream.",
-        "java.util.function.": "j$.util.function.",
-        "java.util.Comparators": "j$.util.Comparators",
-        "java.util.DoubleSummaryStatistics": "j$.util.DoubleSummaryStatistics",
-        "java.util.IntSummaryStatistics": "j$.util.IntSummaryStatistics",
-        "java.util.LongSummaryStatistics": "j$.util.LongSummaryStatistics",
-        "java.util.Objects": "j$.util.Objects",
-        "java.util.Optional": "j$.util.Optional",
-        "java.util.PrimitiveIterator": "j$.util.PrimitiveIterator",
-        "java.util.SortedSet$1": "j$.util.SortedSet$1",
-        "java.util.Spliterator": "j$.util.Spliterator",
-        "java.util.StringJoiner": "j$.util.StringJoiner",
-        "java.util.Tripwire": "j$.util.Tripwire",
-        "java.util.concurrent.DesugarUnsafe": "j$.util.concurrent.DesugarUnsafe",
-        "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
-        "java.util.concurrent.atomic.DesugarAtomic": "j$.util.concurrent.atomic.DesugarAtomic",
-        "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
-        "java.io.DesugarBufferedReader": "j$.io.DesugarBufferedReader",
-        "java.io.UncheckedIOException": "j$.io.UncheckedIOException"
-      },
-      "retarget_lib_member": {
-        "java.util.Arrays#stream": "java.util.DesugarArrays",
-        "java.util.Arrays#spliterator": "java.util.DesugarArrays",
-        "java.util.LinkedHashSet#spliterator": "java.util.DesugarLinkedHashSet",
-        "java.io.BufferedReader#lines": "java.io.DesugarBufferedReader"
-      },
-      "dont_rewrite": [
-        "java.util.Iterator#remove"
-      ],
-      "emulate_interface": {
-        "java.util.Map$Entry": "j$.util.Map$Entry",
-        "java.util.Collection": "j$.util.Collection",
-        "java.util.Map": "j$.util.Map",
-        "java.util.Iterator": "j$.util.Iterator",
-        "java.util.Comparator": "j$.util.Comparator",
-        "java.util.List": "j$.util.List",
-        "java.util.SortedSet": "j$.util.SortedSet",
-        "java.util.Set": "j$.util.Set",
-        "java.util.concurrent.ConcurrentMap": "j$.util.concurrent.ConcurrentMap"
-      },
-      "custom_conversion": {
-        "java.util.Optional": "java.util.OptionalConversions",
-        "java.util.OptionalDouble": "java.util.OptionalConversions",
-        "java.util.OptionalInt": "java.util.OptionalConversions",
-        "java.util.OptionalLong": "java.util.OptionalConversions",
-        "java.util.LongSummaryStatistics": "java.util.LongSummaryStatisticsConversions",
-        "java.util.IntSummaryStatistics": "java.util.IntSummaryStatisticsConversions",
-        "java.util.DoubleSummaryStatistics": "java.util.DoubleSummaryStatisticsConversions"
-      }
-    }
-  ],
-  "program_flags": [
-    {
-      "api_level_below_or_equal": 25,
-      "rewrite_prefix": {
-        "java.time.": "j$.time.",
-        "java.util.Desugar": "j$.util.Desugar"
-      },
-      "retarget_lib_member": {
-        "java.util.Calendar#toInstant": "java.util.DesugarCalendar",
-        "java.util.Date#from": "java.util.DesugarDate",
-        "java.util.Date#toInstant": "java.util.DesugarDate",
-        "java.util.GregorianCalendar#from": "java.util.DesugarGregorianCalendar",
-        "java.util.GregorianCalendar#toZonedDateTime": "java.util.DesugarGregorianCalendar",
-        "java.util.TimeZone#getTimeZone": "java.util.DesugarTimeZone",
-        "java.util.TimeZone#toZoneId": "java.util.DesugarTimeZone"
-      },
-      "custom_conversion": {
-        "java.time.ZonedDateTime": "java.time.TimeConversions",
-        "java.time.LocalDate": "java.time.TimeConversions",
-        "java.time.Duration": "java.time.TimeConversions",
-        "java.time.ZoneId": "java.time.TimeConversions",
-        "java.time.MonthDay": "java.time.TimeConversions",
-        "java.time.Instant": "java.time.TimeConversions"
-      }
-    },
-    {
-      "api_level_below_or_equal": 23,
-      "rewrite_prefix": {
-        "java.util.stream.": "j$.util.stream.",
-        "java.util.function.": "j$.util.function.",
-        "java.util.DoubleSummaryStatistics": "j$.util.DoubleSummaryStatistics",
-        "java.util.IntSummaryStatistics": "j$.util.IntSummaryStatistics",
-        "java.util.LongSummaryStatistics": "j$.util.LongSummaryStatistics",
-        "java.util.Objects": "j$.util.Objects",
-        "java.util.Optional": "j$.util.Optional",
-        "java.util.PrimitiveIterator": "j$.util.PrimitiveIterator",
-        "java.util.Spliterator": "j$.util.Spliterator",
-        "java.util.StringJoiner": "j$.util.StringJoiner",
-        "java.util.concurrent.ThreadLocalRandom": "j$.util.concurrent.ThreadLocalRandom",
-        "java.util.concurrent.atomic.DesugarAtomic": "j$.util.concurrent.atomic.DesugarAtomic",
-        "java.util.concurrent.ConcurrentHashMap": "j$.util.concurrent.ConcurrentHashMap",
-        "java.io.UncheckedIOException": "j$.io.UncheckedIOException"
-      },
-      "retarget_lib_member": {
-        "java.util.Arrays#stream": "java.util.DesugarArrays",
-        "java.util.Arrays#spliterator": "java.util.DesugarArrays",
-        "java.util.LinkedHashSet#spliterator": "java.util.DesugarLinkedHashSet",
-        "java.util.concurrent.atomic.AtomicInteger#getAndUpdate": "java.util.concurrent.atomic.DesugarAtomicInteger",
-        "java.util.concurrent.atomic.AtomicInteger#updateAndGet": "java.util.concurrent.atomic.DesugarAtomicInteger",
-        "java.util.concurrent.atomic.AtomicInteger#getAndAccumulate": "java.util.concurrent.atomic.DesugarAtomicInteger",
-        "java.util.concurrent.atomic.AtomicInteger#accumulateAndGet": "java.util.concurrent.atomic.DesugarAtomicInteger",
-        "java.util.concurrent.atomic.AtomicLong#getAndUpdate": "java.util.concurrent.atomic.DesugarAtomicLong",
-        "java.util.concurrent.atomic.AtomicLong#updateAndGet": "java.util.concurrent.atomic.DesugarAtomicLong",
-        "java.util.concurrent.atomic.AtomicLong#getAndAccumulate": "java.util.concurrent.atomic.DesugarAtomicLong",
-        "java.util.concurrent.atomic.AtomicLong#accumulateAndGet": "java.util.concurrent.atomic.DesugarAtomicLong",
-        "java.util.concurrent.atomic.AtomicReference#getAndUpdate": "java.util.concurrent.atomic.DesugarAtomicReference",
-        "java.util.concurrent.atomic.AtomicReference#updateAndGet": "java.util.concurrent.atomic.DesugarAtomicReference",
-        "java.util.concurrent.atomic.AtomicReference#getAndAccumulate": "java.util.concurrent.atomic.DesugarAtomicReference",
-        "java.util.concurrent.atomic.AtomicReference#accumulateAndGet": "java.util.concurrent.atomic.DesugarAtomicReference",
-        "java.util.Collections#synchronizedMap": "java.util.DesugarCollections",
-        "java.util.Collections#synchronizedSortedMap": "java.util.DesugarCollections",
-        "java.io.BufferedReader#lines": "java.io.DesugarBufferedReader"
-      },
-      "dont_rewrite": [
-        "java.util.Iterator#remove"
-      ],
-      "emulate_interface": {
-        "java.util.Map$Entry": "j$.util.Map$Entry",
-        "java.util.Collection": "j$.util.Collection",
-        "java.util.Map": "j$.util.Map",
-        "java.util.Iterator": "j$.util.Iterator",
-        "java.util.Comparator": "j$.util.Comparator",
-        "java.util.List": "j$.util.List",
-        "java.util.SortedSet": "j$.util.SortedSet",
-        "java.util.Set": "j$.util.Set",
-        "java.util.concurrent.ConcurrentMap": "j$.util.concurrent.ConcurrentMap"
-      },
-      "custom_conversion": {
-        "java.util.Optional": "java.util.OptionalConversions",
-        "java.util.OptionalDouble": "java.util.OptionalConversions",
-        "java.util.OptionalInt": "java.util.OptionalConversions",
-        "java.util.OptionalLong": "java.util.OptionalConversions",
-        "java.util.LongSummaryStatistics": "java.util.LongSummaryStatisticsConversions",
-        "java.util.IntSummaryStatistics": "java.util.IntSummaryStatisticsConversions",
-        "java.util.DoubleSummaryStatistics": "java.util.DoubleSummaryStatisticsConversions"
-      }
-    }
-  ],
-  "shrinker_config": [
-    "-keepclassmembers class j$.util.concurrent.ConcurrentHashMap$TreeBin { int lockState; }",
-    "-keepclassmembers class j$.util.concurrent.ConcurrentHashMap { int sizeCtl; int transferIndex; long baseCount; int cellsBusy; }",
-    "-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 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; }",
-    "-keepclassmembers class j$.util.DoubleSummaryStatistics { long count; double sum; double min; double max; }",
-    "-keepattributes Signature",
-    "-keepattributes EnclosingMethod",
-    "-keepattributes InnerClasses",
-    "-dontwarn sun.misc.Unsafe"
-  ]
-}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java
index 6d3a0d3..f79b585 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/BufferedReaderTest.java
@@ -84,6 +84,9 @@
 
   @Test
   public void testBufferedReaderD8Cf() throws Exception {
+    Assume.assumeTrue(
+        "The alternative 3 configuration is available only in JDK 11 desugared library.",
+        isJDK11DesugaredLibrary());
     KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
     // Use D8 to desugar with Java classfile output.
     Path jar =
@@ -140,6 +143,9 @@
   @Test
   public void testBufferedReaderD8() throws Exception {
     Assume.assumeTrue(parameters.getRuntime().isDex());
+    Assume.assumeTrue(
+        "The alternative 3 configuration is available only in JDK 11 desugared library.",
+        isJDK11DesugaredLibrary());
     KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
     testForD8()
         .addLibraryFiles(getLibraryFile())
@@ -166,6 +172,9 @@
   @Test
   public void testBufferedReaderR8() throws Exception {
     Assume.assumeTrue(parameters.getRuntime().isDex());
+    Assume.assumeTrue(
+        "The alternative 3 configuration is available only in JDK 11 desugared library.",
+        isJDK11DesugaredLibrary());
     KeepRuleConsumer keepRuleConsumer = createKeepRuleConsumer(parameters);
     testForR8(parameters.getBackend())
         .addLibraryFiles(getLibraryFile())
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
index c21b7ea..3209290 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/ObjectsTest.java
@@ -78,6 +78,11 @@
 
   public ObjectsTest(TestParameters parameters, boolean libraryDesugarJavaUtilObjects) {
     this.parameters = parameters;
+    if (libraryDesugarJavaUtilObjects) {
+      Assume.assumeTrue(
+          "The alternative 3 configuration is available only in JDK 11 desugared library.",
+          isJDK11DesugaredLibrary());
+    }
     this.libraryDesugarJavaUtilObjects = libraryDesugarJavaUtilObjects;
     this.androidJar =
         ToolHelper.getAndroidJar(