Merge remote-tracking branch 'aosp/upstream-master' into master am: 9e1602fcb0 am: a715adced4
am: e481f8e66f

Change-Id: I829b963e2150538b432e32951e5c4242780e56eb
diff --git a/java/com/google/devtools/build/android/desugar/BitFlags.java b/java/com/google/devtools/build/android/desugar/BitFlags.java
index bb32c45..8be2288 100644
--- a/java/com/google/devtools/build/android/desugar/BitFlags.java
+++ b/java/com/google/devtools/build/android/desugar/BitFlags.java
@@ -15,14 +15,12 @@
 
 import org.objectweb.asm.Opcodes;
 
-/**
- * Convenience method for working with {@code int} bitwise flags.
- */
+/** Convenience method for working with {@code int} bitwise flags. */
 class BitFlags {
 
   /**
-   * Returns {@code true} iff <b>all</b> bits in {@code bitmask} are set in {@code flags}.
-   * Trivially returns {@code true} if {@code bitmask} is 0.
+   * Returns {@code true} iff <b>all</b> bits in {@code bitmask} are set in {@code flags}. Trivially
+   * returns {@code true} if {@code bitmask} is 0.
    */
   public static boolean isSet(int flags, int bitmask) {
     return (flags & bitmask) == bitmask;
diff --git a/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java b/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java
index cbb3271..7f1591b 100644
--- a/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java
+++ b/java/com/google/devtools/build/android/desugar/CoreLibraryRewriter.java
@@ -116,6 +116,26 @@
       super.accept(cv, attrs, flags);
     }
 
+    @Override
+    public String getClassName() {
+      return prefix(super.getClassName());
+    }
+
+    @Override
+    public String getSuperName() {
+      String result = super.getSuperName();
+      return result != null ? prefix(result) : null;
+    }
+
+    @Override
+    public String[] getInterfaces() {
+      String[] result = super.getInterfaces();
+      for (int i = 0, len = result.length; i < len; ++i) {
+        result[i] = prefix(result[i]);
+      }
+      return result;
+    }
+
     /** Prefixes core library class names with prefix. */
     private String prefix(String typeName) {
       if (shouldPrefix(typeName)) {
diff --git a/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java b/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java
index 1f240ef..72f039a 100644
--- a/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java
+++ b/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java
@@ -27,6 +27,7 @@
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Stream;
 
 class LambdaClassMaker {
 
@@ -80,11 +81,12 @@
     if (!Files.exists(rootPathPrefix.getParent())) {
       return ImmutableList.of();
     }
-    return Files.list(rootPathPrefix.getParent())
-        .filter(
-            path ->
-                path.toString().startsWith(rootPathPrefixStr)
-                    && !existingPaths.contains(path))
-        .collect(ImmutableList.toImmutableList());
+    try (Stream<Path> paths =
+        Files.list(rootPathPrefix.getParent())
+            .filter(
+                path -> path.toString().startsWith(rootPathPrefixStr)
+                    && !existingPaths.contains(path))) {
+      return paths.collect(ImmutableList.toImmutableList());
+    }
   }
 }