Desugared library: test create methods in Files

- Document differences to fix
- Fix Conversion of FileAttribute<Set<PosixPermission>>

Change-Id: I157ee87f459e32bea04ea2d420f751c47f8c0e3c
diff --git a/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriteDescription.java b/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriteDescription.java
index 089a293..b02dc00 100644
--- a/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriteDescription.java
+++ b/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriteDescription.java
@@ -28,24 +28,23 @@
           "j$/nio/file/spi/FileTypeDetector",
           "j$/nio/file/Path",
           "j$/nio/file/WatchEvent",
-          "j$/nio/file/OpenOption");
+          "j$/nio/file/OpenOption",
+          "j$/nio/file/attribute/FileAttribute");
 
-  static Map<String, String> getJavaWrapConvertOwnerMap() {
-    return computeConvertOwnerMap("$Wrapper");
-  }
-
-  static Map<String, String> getJ$WrapConvertOwnerMap() {
-    return computeConvertOwnerMap("$VivifiedWrapper");
-  }
-
-  private static HashMap<String, String> computeConvertOwnerMap(String suffix) {
+  static Map<String, String> getWrapConvertOwnerMap() {
     HashMap<String, String> map = new HashMap<>();
     for (String theEnum : ENUM_WRAP_CONVERT_OWNER) {
       map.put(theEnum, theEnum + "$EnumConversion");
+      map.put(withJavaPrefix(theEnum), theEnum + "$EnumConversion");
     }
     for (String owner : WRAP_CONVERT_OWNER) {
-      map.put(owner, owner + suffix);
+      map.put(withJavaPrefix(owner), owner + "$Wrapper");
+      map.put(owner, owner + "$VivifiedWrapper");
     }
     return map;
   }
+
+  private static String withJavaPrefix(String descriptor) {
+    return "java" + descriptor.substring(2);
+  }
 }
diff --git a/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriter.java b/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriter.java
index 0848c09..95a5ecc 100644
--- a/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriter.java
+++ b/buildSrc/src/main/java/desugaredlibrary/CustomConversionAsmRewriter.java
@@ -39,10 +39,8 @@
   }
 
   private final CustomConversionVersion legacy;
-  private final Map<String, String> javaWrapConvertOwnerMap =
-      CustomConversionAsmRewriteDescription.getJavaWrapConvertOwnerMap();
-  private final Map<String, String> j$WrapConvertOwnerMap =
-      CustomConversionAsmRewriteDescription.getJ$WrapConvertOwnerMap();
+  private final Map<String, String> wrapConvertOwnerMap =
+      CustomConversionAsmRewriteDescription.getWrapConvertOwnerMap();
 
   public static void generateJars(Path jar, Path outputDirectory) throws IOException {
     for (CustomConversionVersion version : CustomConversionVersion.values()) {
@@ -148,30 +146,14 @@
 
     private void convertInvoke(int opcode, String owner, String descriptor, boolean isInterface) {
       String firstArg = extractFirstArg(descriptor);
-      assert sameBaseName(firstArg, owner);
-      if (!javaWrapConvertOwnerMap.containsKey(owner)
-          || !j$WrapConvertOwnerMap.containsKey(owner)
+      if (!wrapConvertOwnerMap.containsKey(firstArg)
           || !(firstArg.startsWith("java") || firstArg.startsWith("j$"))) {
         throw new RuntimeException(
             "Cannot transform wrap_convert method for " + firstArg + " (owner: " + owner + ")");
       }
-      if (firstArg.startsWith("java")) {
-        String newOwner = javaWrapConvertOwnerMap.get(owner);
-        super.visitMethodInsn(opcode, newOwner, CONVERT, descriptor, isInterface);
-        return;
-      }
-      assert firstArg.startsWith("j$");
-      String newOwner = j$WrapConvertOwnerMap.get(owner);
+      String newOwner = wrapConvertOwnerMap.get(firstArg);
       super.visitMethodInsn(opcode, newOwner, CONVERT, descriptor, isInterface);
     }
 
-    private boolean sameBaseName(String firstArg, String owner) {
-      assert owner.startsWith("j$");
-      if (firstArg.equals(owner)) {
-        return true;
-      }
-      String javaName = owner.replace("j$", "java");
-      return firstArg.equals(javaName);
-    }
   }
 }