final class java.lang.invoke.ProxyClassesDumper
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: java.lang.invoke.ProxyClassesDumper
  super_class: java.lang.Object
{
  private static final char[] HEX;
    descriptor: [C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final char[] BAD_CHARS;
    descriptor: [C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] REPLACEMENT;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.nio.file.Path dumpDir;
    descriptor: Ljava/nio/file/Path;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 47
            bipush 16
            newarray 5
            dup
            iconst_0
         1: .line 48
            bipush 48
            castore
            dup
            iconst_1
            bipush 49
            castore
            dup
            iconst_2
            bipush 50
            castore
            dup
            iconst_3
            bipush 51
            castore
            dup
            iconst_4
            bipush 52
            castore
            dup
            iconst_5
            bipush 53
            castore
            dup
            bipush 6
            bipush 54
            castore
            dup
            bipush 7
            bipush 55
            castore
            dup
            bipush 8
         2: .line 49
            bipush 56
            castore
            dup
            bipush 9
            bipush 57
            castore
            dup
            bipush 10
            bipush 65
            castore
            dup
            bipush 11
            bipush 66
            castore
            dup
            bipush 12
            bipush 67
            castore
            dup
            bipush 13
            bipush 68
            castore
            dup
            bipush 14
            bipush 69
            castore
            dup
            bipush 15
            bipush 70
            castore
         3: .line 47
            putstatic java.lang.invoke.ProxyClassesDumper.HEX:[C
         4: .line 51
            bipush 8
            newarray 5
            dup
            iconst_0
         5: .line 52
            bipush 92
            castore
            dup
            iconst_1
            bipush 58
            castore
            dup
            iconst_2
            bipush 42
            castore
            dup
            iconst_3
            bipush 63
            castore
            dup
            iconst_4
            bipush 34
            castore
            dup
            iconst_5
            bipush 60
            castore
            dup
            bipush 6
            bipush 62
            castore
            dup
            bipush 7
            bipush 124
            castore
         6: .line 51
            putstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
         7: .line 54
            bipush 8
            anewarray java.lang.String
            dup
            iconst_0
         8: .line 55
            ldc "%5C"
            aastore
            dup
            iconst_1
            ldc "%3A"
            aastore
            dup
            iconst_2
            ldc "%2A"
            aastore
            dup
            iconst_3
            ldc "%3F"
            aastore
            dup
            iconst_4
            ldc "%22"
            aastore
            dup
            iconst_5
            ldc "%3C"
            aastore
            dup
            bipush 6
            ldc "%3E"
            aastore
            dup
            bipush 7
            ldc "%7C"
            aastore
         9: .line 54
            putstatic java.lang.invoke.ProxyClassesDumper.REPLACEMENT:[Ljava/lang/String;
        10: .line 56
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.lang.invoke.ProxyClassesDumper getInstance(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/invoke/ProxyClassesDumper;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=9, locals=2, args_size=1
        start local 0 // java.lang.String path
         0: .line 61
            aload 0 /* path */
            ifnonnull 2
         1: .line 62
            aconst_null
            areturn
         2: .line 65
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 0 /* path */
         3: .line 66
            aload 0 /* path */
            invokevirtual java.lang.String.length:()I
            ifne 4
            ldc "."
            goto 5
      StackMap locals:
      StackMap stack:
         4: aload 0 /* path */
      StackMap locals:
      StackMap stack: java.lang.String
         5: iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* dir */
        start local 1 // java.nio.file.Path dir
         6: .line 67
            new java.lang.invoke.ProxyClassesDumper$1
            dup
            aload 1 /* dir */
            invokespecial java.lang.invoke.ProxyClassesDumper$1.<init>:(Ljava/nio/file/Path;)V
         7: .line 73
            aconst_null
            iconst_1
            anewarray java.security.Permission
            dup
            iconst_0
            new java.io.FilePermission
            dup
            ldc "<<ALL FILES>>"
            ldc "read, write"
            invokespecial java.io.FilePermission.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            aastore
         8: .line 67
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
            pop
         9: .line 74
            new java.lang.invoke.ProxyClassesDumper
            dup
            aload 1 /* dir */
            invokespecial java.lang.invoke.ProxyClassesDumper.<init>:(Ljava/nio/file/Path;)V
        10: areturn
        end local 1 // java.nio.file.Path dir
        11: .line 75
      StackMap locals:
      StackMap stack: java.nio.file.InvalidPathException
            astore 1 /* ex */
        start local 1 // java.nio.file.InvalidPathException ex
        12: .line 76
            ldc Ljava/lang/invoke/ProxyClassesDumper;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
        13: .line 77
            new java.lang.StringBuilder
            dup
            ldc "Path "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " is not valid - dumping disabled"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* ex */
            invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.nio.file.InvalidPathException ex
        14: goto 18
        15: .line 78
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 1 /* iae */
        start local 1 // java.lang.IllegalArgumentException iae
        16: .line 79
            ldc Ljava/lang/invoke/ProxyClassesDumper;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
        17: .line 80
            new java.lang.StringBuilder
            dup
            aload 1 /* iae */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " - dumping disabled"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;)V
        end local 1 // java.lang.IllegalArgumentException iae
        18: .line 82
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  path  Ljava/lang/String;
            6   11     1   dir  Ljava/nio/file/Path;
           12   14     1    ex  Ljava/nio/file/InvalidPathException;
           16   18     1   iae  Ljava/lang/IllegalArgumentException;
      Exception table:
        from    to  target  type
           2    10      11  Class java.nio.file.InvalidPathException
           2    10      15  Class java.lang.IllegalArgumentException
    MethodParameters:
      Name  Flags
      path  

  private void <init>(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.invoke.ProxyClassesDumper this
        start local 1 // java.nio.file.Path path
         0: .line 85
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 86
            aload 0 /* this */
            aload 1 /* path */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.nio.file.Path
            putfield java.lang.invoke.ProxyClassesDumper.dumpDir:Ljava/nio/file/Path;
         2: .line 87
            return
        end local 1 // java.nio.file.Path path
        end local 0 // java.lang.invoke.ProxyClassesDumper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/lang/invoke/ProxyClassesDumper;
            0    3     1  path  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      path  

  private static void validateDumpDir(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.nio.file.Path path
         0: .line 90
            aload 0 /* path */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 2
         1: .line 91
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Directory "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " does not exist"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifne 4
         3: .line 93
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Path "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is not a directory"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            invokestatic java.nio.file.Files.isWritable:(Ljava/nio/file/Path;)Z
            ifne 6
         5: .line 95
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Directory "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is not writable"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 97
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.nio.file.Path path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  path  Ljava/nio/file/Path;
    MethodParameters:
      Name  Flags
      path  

  public static java.lang.String encodeForFilename(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.lang.String className
         0: .line 100
            aload 0 /* className */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         1: .line 101
            new java.lang.StringBuilder
            dup
            iload 1 /* len */
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 2 /* sb */
        start local 2 // java.lang.StringBuilder sb
         2: .line 103
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 20
         4: .line 104
      StackMap locals: int java.lang.StringBuilder int
      StackMap stack:
            aload 0 /* className */
            iload 3 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 4 /* c */
        start local 4 // char c
         5: .line 106
            iload 4 /* c */
            bipush 31
            if_icmpgt 10
         6: .line 107
            aload 2 /* sb */
            bipush 37
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         7: .line 108
            aload 2 /* sb */
            getstatic java.lang.invoke.ProxyClassesDumper.HEX:[C
            iload 4 /* c */
            iconst_4
            ishr
            bipush 15
            iand
            caload
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         8: .line 109
            aload 2 /* sb */
            getstatic java.lang.invoke.ProxyClassesDumper.HEX:[C
            iload 4 /* c */
            bipush 15
            iand
            caload
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         9: .line 110
            goto 19
        10: .line 111
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 5 /* j */
        start local 5 // int j
        11: .line 112
            goto 16
        12: .line 113
      StackMap locals: int
      StackMap stack:
            iload 4 /* c */
            getstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
            iload 5 /* j */
            caload
            if_icmpne 15
        13: .line 114
            aload 2 /* sb */
            getstatic java.lang.invoke.ProxyClassesDumper.REPLACEMENT:[Ljava/lang/String;
            iload 5 /* j */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 115
            goto 17
        15: .line 112
      StackMap locals:
      StackMap stack:
            iinc 5 /* j */ 1
      StackMap locals:
      StackMap stack:
        16: iload 5 /* j */
            getstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
            arraylength
            if_icmplt 12
        17: .line 118
      StackMap locals:
      StackMap stack:
            iload 5 /* j */
            getstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
            arraylength
            if_icmplt 19
        18: .line 119
            aload 2 /* sb */
            iload 4 /* c */
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        end local 5 // int j
        end local 4 // char c
        19: .line 103
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 3 /* i */
            iload 1 /* len */
            if_icmplt 4
        end local 3 // int i
        21: .line 124
            aload 2 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder sb
        end local 1 // int len
        end local 0 // java.lang.String className
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   22     0  className  Ljava/lang/String;
            1   22     1        len  I
            2   22     2         sb  Ljava/lang/StringBuilder;
            3   21     3          i  I
            5   19     4          c  C
           11   19     5          j  I
    MethodParameters:
           Name  Flags
      className  

  public void dumpClass(java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;[B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // java.lang.invoke.ProxyClassesDumper this
        start local 1 // java.lang.String className
        start local 2 // byte[] classBytes
         0: .line 130
            aload 0 /* this */
            getfield java.lang.invoke.ProxyClassesDumper.dumpDir:Ljava/nio/file/Path;
            new java.lang.StringBuilder
            dup
            aload 1 /* className */
            invokestatic java.lang.invoke.ProxyClassesDumper.encodeForFilename:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 3 /* file */
        start local 3 // java.nio.file.Path file
         1: .line 131
            goto 6
        end local 3 // java.nio.file.Path file
      StackMap locals:
      StackMap stack: java.nio.file.InvalidPathException
         2: pop
         3: .line 132
            ldc Ljava/lang/invoke/ProxyClassesDumper;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
         4: .line 133
            new java.lang.StringBuilder
            dup
            ldc "Invalid path for class "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* className */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;)V
         5: .line 134
            return
        start local 3 // java.nio.file.Path file
         6: .line 138
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 3 /* file */
            invokeinterface java.nio.file.Path.getParent:()Ljava/nio/file/Path;
            astore 4 /* dir */
        start local 4 // java.nio.file.Path dir
         7: .line 139
            aload 4 /* dir */
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createDirectories:(Ljava/nio/file/Path;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            pop
         8: .line 140
            aload 3 /* file */
            aload 2 /* classBytes */
            iconst_0
            anewarray java.nio.file.OpenOption
            invokestatic java.nio.file.Files.write:(Ljava/nio/file/Path;[B[Ljava/nio/file/OpenOption;)Ljava/nio/file/Path;
            pop
        end local 4 // java.nio.file.Path dir
         9: .line 141
            goto 13
      StackMap locals:
      StackMap stack: java.lang.Exception
        10: pop
        11: .line 142
            ldc Ljava/lang/invoke/ProxyClassesDumper;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic sun.util.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lsun/util/logging/PlatformLogger;
        12: .line 143
            new java.lang.StringBuilder
            dup
            ldc "Exception writing to path at "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* file */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual sun.util.logging.PlatformLogger.warning:(Ljava/lang/String;)V
        13: .line 146
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.nio.file.Path file
        end local 2 // byte[] classBytes
        end local 1 // java.lang.String className
        end local 0 // java.lang.invoke.ProxyClassesDumper this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        this  Ljava/lang/invoke/ProxyClassesDumper;
            0   14     1   className  Ljava/lang/String;
            0   14     2  classBytes  [B
            1    2     3        file  Ljava/nio/file/Path;
            6   14     3        file  Ljava/nio/file/Path;
            7    9     4         dir  Ljava/nio/file/Path;
      Exception table:
        from    to  target  type
           0     1       2  Class java.nio.file.InvalidPathException
           6     9      10  Class java.lang.Exception
    MethodParameters:
            Name  Flags
      className   
      classBytes  final
}
SourceFile: "ProxyClassesDumper.java"
NestMembers:
  java.lang.invoke.ProxyClassesDumper$1
InnerClasses:
  java.lang.invoke.ProxyClassesDumper$1