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 46
            bipush 16
            newarray 5
            dup
            iconst_0
         1: .line 47
            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 48
            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 46
            putstatic java.lang.invoke.ProxyClassesDumper.HEX:[C
         4: .line 50
            bipush 8
            newarray 5
            dup
            iconst_0
         5: .line 51
            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 50
            putstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
         7: .line 53
            bipush 8
            anewarray java.lang.String
            dup
            iconst_0
         8: .line 54
            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 53
            putstatic java.lang.invoke.ProxyClassesDumper.REPLACEMENT:[Ljava/lang/String;
        10: .line 55
            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 60
            aload 0 /* path */
            ifnonnull 2
         1: .line 61
            aconst_null
            areturn
         2: .line 64
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 0 /* path */
         3: .line 65
            aload 0 /* path */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 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.Path.of:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            astore 1 /* dir */
        start local 1 // java.nio.file.Path dir
         6: .line 66
            new java.lang.invoke.ProxyClassesDumper$1
            dup
            aload 1 /* dir */
            invokespecial java.lang.invoke.ProxyClassesDumper$1.<init>:(Ljava/nio/file/Path;)V
         7: .line 72
            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 66
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;Ljava/security/AccessControlContext;[Ljava/security/Permission;)Ljava/lang/Object;
            pop
         9: .line 73
            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 74
      StackMap locals:
      StackMap stack: java.nio.file.InvalidPathException
            astore 1 /* ex */
        start local 1 // java.nio.file.InvalidPathException ex
        12: .line 75
            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 76
            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 77
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
            astore 1 /* iae */
        start local 1 // java.lang.IllegalArgumentException iae
        16: .line 78
            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 79
            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 81
      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 84
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 85
            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 86
            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 89
            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 90
            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 91
      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 92
            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 93
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            invokestatic java.nio.file.Files.isWritable:(Ljava/nio/file/Path;)Z
            ifne 6
         5: .line 94
            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 96
      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 99
            aload 0 /* className */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         1: .line 100
            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 102
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 20
         4: .line 103
      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 105
            iload 4 /* c */
            bipush 31
            if_icmpgt 10
         6: .line 106
            aload 2 /* sb */
            bipush 37
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         7: .line 107
            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 108
            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 109
            goto 19
        10: .line 110
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 5 /* j */
        start local 5 // int j
        11: .line 111
            goto 16
        12: .line 112
      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 113
            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 114
            goto 17
        15: .line 111
      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 117
      StackMap locals:
      StackMap stack:
            iload 5 /* j */
            getstatic java.lang.invoke.ProxyClassesDumper.BAD_CHARS:[C
            arraylength
            if_icmplt 19
        18: .line 118
            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 102
      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 123
            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 129
            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 130
            goto 6
        end local 3 // java.nio.file.Path file
      StackMap locals:
      StackMap stack: java.nio.file.InvalidPathException
         2: pop
         3: .line 131
            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 132
            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 133
            return
        start local 3 // java.nio.file.Path file
         6: .line 137
      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 138
            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 139
            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 140
            goto 13
      StackMap locals:
      StackMap stack: java.lang.Exception
        10: pop
        11: .line 141
            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 142
            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 145
      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