class jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder
  super_class: java.lang.Object
{
  private final boolean includeDebug;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String debugExt;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder cmdBuilder;
    descriptor: Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String strip;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private void <init>(boolean, java.lang.String, jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder, java.lang.String);
    descriptor: (ZLjava/lang/String;Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
        start local 1 // boolean includeDebug
        start local 2 // java.lang.String debugExt
        start local 3 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder cmdBuilder
        start local 4 // java.lang.String strip
         0: .line 296
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 300
            aload 0 /* this */
            iload 1 /* includeDebug */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.includeDebug:Z
         2: .line 301
            aload 0 /* this */
            aload 2 /* debugExt */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.debugExt:Ljava/lang/String;
         3: .line 302
            aload 0 /* this */
            aload 3 /* cmdBuilder */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.cmdBuilder:Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;
         4: .line 303
            aload 0 /* this */
            aload 4 /* strip */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.strip:Ljava/lang/String;
         5: .line 304
            return
        end local 4 // java.lang.String strip
        end local 3 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder cmdBuilder
        end local 2 // java.lang.String debugExt
        end local 1 // boolean includeDebug
        end local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0    6     1  includeDebug  Z
            0    6     2      debugExt  Ljava/lang/String;
            0    6     3    cmdBuilder  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;
            0    6     4         strip  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      includeDebug  
      debugExt      
      cmdBuilder    
      strip         

  private java.util.Optional<jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinary> build(jdk.tools.jlink.plugin.ResourcePoolEntry);
    descriptor: (Ljdk/tools/jlink/plugin/ResourcePoolEntry;)Ljava/util/Optional;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=14, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
        start local 1 // jdk.tools.jlink.plugin.ResourcePoolEntry resource
         0: .line 307
            aconst_null
            astore 2 /* tempDir */
        start local 2 // java.nio.file.Path tempDir
         1: .line 308
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            astore 3 /* debugInfo */
        start local 3 // java.util.Optional debugInfo
         2: .line 310
            aload 1 /* resource */
            invokeinterface jdk.tools.jlink.plugin.ResourcePoolEntry.path:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            astore 4 /* resPath */
        start local 4 // java.nio.file.Path resPath
         3: .line 311
            aload 4 /* resPath */
            invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 5 /* relativeFileName */
        start local 5 // java.lang.String relativeFileName
         4: .line 312
            new java.lang.StringBuilder
            dup
            ldc "strip-native-debug-symbols"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* relativeFileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.nio.file.attribute.FileAttribute
            invokestatic java.nio.file.Files.createTempDirectory:(Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;
            astore 2 /* tempDir */
         5: .line 313
            aload 2 /* tempDir */
            aload 5 /* relativeFileName */
            invokeinterface java.nio.file.Path.resolve:(Ljava/lang/String;)Ljava/nio/file/Path;
            astore 6 /* resourceFileBinary */
        start local 6 // java.nio.file.Path resourceFileBinary
         6: .line 314
            new java.lang.StringBuilder
            dup
            aload 5 /* relativeFileName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.debugExt:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 7 /* relativeDbgFileName */
        start local 7 // java.lang.String relativeDbgFileName
         7: .line 316
            aload 6 /* resourceFileBinary */
            aload 1 /* resource */
            invokeinterface jdk.tools.jlink.plugin.ResourcePoolEntry.contentBytes:()[B
            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
         8: .line 318
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.includeDebug:Z
            ifeq 21
         9: .line 319
            aload 2 /* tempDir */
            aload 7 /* relativeDbgFileName */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.resolve:(Ljava/nio/file/Path;)Ljava/nio/file/Path;
            astore 8 /* resourceFileDebugSymbols */
        start local 8 // java.nio.file.Path resourceFileDebugSymbols
        10: .line 320
            new java.lang.StringBuilder
            dup
            aload 1 /* resource */
            invokeinterface jdk.tools.jlink.plugin.ResourcePoolEntry.path:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.debugExt:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 9 /* debugEntryPath */
        start local 9 // java.lang.String debugEntryPath
        11: .line 321
            aload 0 /* this */
            aload 6 /* resourceFileBinary */
        12: .line 322
            aload 8 /* resourceFileDebugSymbols */
        13: .line 323
            aload 7 /* relativeDbgFileName */
        14: .line 321
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.createDebugSymbolsFile:(Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/lang/String;)[B
            astore 10 /* debugInfoBytes */
        start local 10 // byte[] debugInfoBytes
        15: .line 324
            aload 10 /* debugInfoBytes */
            ifnull 21
        16: .line 326
            aload 9 /* debugEntryPath */
        17: .line 327
            aload 1 /* resource */
            invokeinterface jdk.tools.jlink.plugin.ResourcePoolEntry.type:()Ljdk/tools/jlink/plugin/ResourcePoolEntry$Type;
        18: .line 328
            aload 10 /* debugInfoBytes */
        19: .line 325
            invokestatic jdk.tools.jlink.plugin.ResourcePoolEntry.create:(Ljava/lang/String;Ljdk/tools/jlink/plugin/ResourcePoolEntry$Type;[B)Ljdk/tools/jlink/plugin/ResourcePoolEntry;
            astore 11 /* debugEntry */
        start local 11 // jdk.tools.jlink.plugin.ResourcePoolEntry debugEntry
        20: .line 329
            aload 11 /* debugEntry */
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            astore 3 /* debugInfo */
        end local 11 // jdk.tools.jlink.plugin.ResourcePoolEntry debugEntry
        end local 10 // byte[] debugInfoBytes
        end local 9 // java.lang.String debugEntryPath
        end local 8 // java.nio.file.Path resourceFileDebugSymbols
        21: .line 332
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional java.nio.file.Path java.lang.String java.nio.file.Path java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 6 /* resourceFileBinary */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.stripBinary:(Ljava/nio/file/Path;)Z
            ifne 28
        22: .line 333
            getstatic jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin.DEBUG:Z
            ifeq 24
        23: .line 334
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "DEBUG: Stripping debug info failed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        24: .line 336
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            astore 13
        25: .line 352
            aload 2 /* tempDir */
            ifnull 27
        26: .line 353
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        27: .line 336
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional java.nio.file.Path java.lang.String java.nio.file.Path java.lang.String top top top top top java.util.Optional
      StackMap stack:
            aload 13
            areturn
        28: .line 338
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional java.nio.file.Path java.lang.String java.nio.file.Path java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.includeDebug:Z
            ifeq 39
            aload 0 /* this */
            aload 2 /* tempDir */
        29: .line 339
            aload 5 /* relativeFileName */
        30: .line 340
            aload 7 /* relativeDbgFileName */
        31: .line 338
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.addGnuDebugLink:(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;)Z
        32: .line 340
            ifne 39
        33: .line 341
            getstatic jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin.DEBUG:Z
            ifeq 35
        34: .line 342
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "DEBUG: Creating debug link failed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 344
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            astore 13
        36: .line 352
            aload 2 /* tempDir */
            ifnull 38
        37: .line 353
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        38: .line 344
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional java.nio.file.Path java.lang.String java.nio.file.Path java.lang.String top top top top top java.util.Optional
      StackMap stack:
            aload 13
            areturn
        39: .line 346
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional java.nio.file.Path java.lang.String java.nio.file.Path java.lang.String
      StackMap stack:
            aload 6 /* resourceFileBinary */
            invokestatic java.nio.file.Files.readAllBytes:(Ljava/nio/file/Path;)[B
            astore 9 /* strippedBytes */
        start local 9 // byte[] strippedBytes
        40: .line 347
            aload 1 /* resource */
            aload 9 /* strippedBytes */
            invokeinterface jdk.tools.jlink.plugin.ResourcePoolEntry.copyWithContent:([B)Ljdk/tools/jlink/plugin/ResourcePoolEntry;
            astore 10 /* strippedResource */
        start local 10 // jdk.tools.jlink.plugin.ResourcePoolEntry strippedResource
        41: .line 348
            new jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinary
            dup
            aload 10 /* strippedResource */
            aload 3 /* debugInfo */
            invokespecial jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinary.<init>:(Ljdk/tools/jlink/plugin/ResourcePoolEntry;Ljava/util/Optional;)V
            invokestatic java.util.Optional.of:(Ljava/lang/Object;)Ljava/util/Optional;
            astore 13
        42: .line 352
            aload 2 /* tempDir */
            ifnull 44
        43: .line 353
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        44: .line 348
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional java.nio.file.Path java.lang.String java.nio.file.Path java.lang.String top byte[] jdk.tools.jlink.plugin.ResourcePoolEntry top top java.util.Optional
      StackMap stack:
            aload 13
            areturn
        end local 10 // jdk.tools.jlink.plugin.ResourcePoolEntry strippedResource
        end local 9 // byte[] strippedBytes
        end local 7 // java.lang.String relativeDbgFileName
        end local 6 // java.nio.file.Path resourceFileBinary
        end local 5 // java.lang.String relativeFileName
        end local 4 // java.nio.file.Path resPath
        45: .line 349
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional
      StackMap stack: java.lang.Exception
            astore 4 /* e */
        start local 4 // java.lang.Exception e
        46: .line 350
            new jdk.tools.jlink.plugin.PluginException
            dup
            aload 4 /* e */
            invokespecial jdk.tools.jlink.plugin.PluginException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.lang.Exception e
        47: .line 351
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 12
        48: .line 352
            aload 2 /* tempDir */
            ifnull 50
        49: .line 353
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        50: .line 355
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder jdk.tools.jlink.plugin.ResourcePoolEntry java.nio.file.Path java.util.Optional top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 12
            athrow
        end local 3 // java.util.Optional debugInfo
        end local 2 // java.nio.file.Path tempDir
        end local 1 // jdk.tools.jlink.plugin.ResourcePoolEntry resource
        end local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   51     0                      this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0   51     1                  resource  Ljdk/tools/jlink/plugin/ResourcePoolEntry;
            1   51     2                   tempDir  Ljava/nio/file/Path;
            2   51     3                 debugInfo  Ljava/util/Optional<Ljdk/tools/jlink/plugin/ResourcePoolEntry;>;
            3   45     4                   resPath  Ljava/nio/file/Path;
            4   45     5          relativeFileName  Ljava/lang/String;
            6   45     6        resourceFileBinary  Ljava/nio/file/Path;
            7   45     7       relativeDbgFileName  Ljava/lang/String;
           10   21     8  resourceFileDebugSymbols  Ljava/nio/file/Path;
           11   21     9            debugEntryPath  Ljava/lang/String;
           15   21    10            debugInfoBytes  [B
           20   21    11                debugEntry  Ljdk/tools/jlink/plugin/ResourcePoolEntry;
           40   45     9             strippedBytes  [B
           41   45    10          strippedResource  Ljdk/tools/jlink/plugin/ResourcePoolEntry;
           46   47     4                         e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2    25      45  Class java.io.IOException
          28    36      45  Class java.io.IOException
          39    42      45  Class java.io.IOException
           2    25      45  Class java.lang.InterruptedException
          28    36      45  Class java.lang.InterruptedException
          39    42      45  Class java.lang.InterruptedException
           2    25      47  any
          28    36      47  any
          39    42      47  any
          45    47      47  any
    Signature: (Ljdk/tools/jlink/plugin/ResourcePoolEntry;)Ljava/util/Optional<Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinary;>;
    MethodParameters:
          Name  Flags
      resource  

  private boolean stripBinary(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
        start local 1 // java.nio.file.Path binFile
         0: .line 364
            aload 1 /* binFile */
            invokeinterface java.nio.file.Path.toAbsolutePath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 2 /* filePath */
        start local 2 // java.lang.String filePath
         1: .line 365
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.cmdBuilder:Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.strip:Ljava/lang/String;
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            ldc "-g"
            aastore
            dup
            iconst_1
         2: .line 366
            aload 2 /* filePath */
            aastore
         3: .line 365
            invokeinterface jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder.build:(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List;
            astore 3 /* stripCmdLine */
        start local 3 // java.util.List stripCmdLine
         4: .line 367
            aload 0 /* this */
            aload 3 /* stripCmdLine */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.createProcessBuilder:(Ljava/util/List;)Ljava/lang/ProcessBuilder;
            astore 4 /* builder */
        start local 4 // java.lang.ProcessBuilder builder
         5: .line 368
            aload 4 /* builder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 5 /* stripProc */
        start local 5 // java.lang.Process stripProc
         6: .line 369
            aload 5 /* stripProc */
            invokevirtual java.lang.Process.waitFor:()I
            istore 6 /* retval */
        start local 6 // int retval
         7: .line 370
            iload 6 /* retval */
            ifne 8
            iconst_1
            ireturn
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder java.nio.file.Path java.lang.String java.util.List java.lang.ProcessBuilder java.lang.Process int
      StackMap stack:
         8: iconst_0
            ireturn
        end local 6 // int retval
        end local 5 // java.lang.Process stripProc
        end local 4 // java.lang.ProcessBuilder builder
        end local 3 // java.util.List stripCmdLine
        end local 2 // java.lang.String filePath
        end local 1 // java.nio.file.Path binFile
        end local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0    9     1       binFile  Ljava/nio/file/Path;
            1    9     2      filePath  Ljava/lang/String;
            4    9     3  stripCmdLine  Ljava/util/List<Ljava/lang/String;>;
            5    9     4       builder  Ljava/lang/ProcessBuilder;
            6    9     5     stripProc  Ljava/lang/Process;
            7    9     6        retval  I
    Exceptions:
      throws java.lang.InterruptedException, java.io.IOException
    MethodParameters:
         Name  Flags
      binFile  

  private boolean addGnuDebugLink(java.nio.file.Path, java.lang.String, java.lang.String);
    descriptor: (Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=8, args_size=4
        start local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
        start local 1 // java.nio.file.Path currDir
        start local 2 // java.lang.String binFile
        start local 3 // java.lang.String relativeDbgFileName
         0: .line 381
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.cmdBuilder:Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.strip:Ljava/lang/String;
            iconst_2
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            ldc "--add-gnu-debuglink="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         1: .line 382
            aload 3 /* relativeDbgFileName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
         2: .line 383
            aload 2 /* binFile */
            aastore
         3: .line 381
            invokeinterface jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder.build:(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List;
            astore 4 /* addDbgLinkCmdLine */
        start local 4 // java.util.List addDbgLinkCmdLine
         4: .line 384
            aload 0 /* this */
            aload 4 /* addDbgLinkCmdLine */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.createProcessBuilder:(Ljava/util/List;)Ljava/lang/ProcessBuilder;
            astore 5 /* builder */
        start local 5 // java.lang.ProcessBuilder builder
         5: .line 385
            aload 5 /* builder */
            aload 1 /* currDir */
            invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
            invokevirtual java.lang.ProcessBuilder.directory:(Ljava/io/File;)Ljava/lang/ProcessBuilder;
            pop
         6: .line 386
            aload 5 /* builder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 6 /* stripProc */
        start local 6 // java.lang.Process stripProc
         7: .line 387
            aload 6 /* stripProc */
            invokevirtual java.lang.Process.waitFor:()I
            istore 7 /* retval */
        start local 7 // int retval
         8: .line 388
            iload 7 /* retval */
            ifne 9
            iconst_1
            ireturn
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder java.nio.file.Path java.lang.String java.lang.String java.util.List java.lang.ProcessBuilder java.lang.Process int
      StackMap stack:
         9: iconst_0
            ireturn
        end local 7 // int retval
        end local 6 // java.lang.Process stripProc
        end local 5 // java.lang.ProcessBuilder builder
        end local 4 // java.util.List addDbgLinkCmdLine
        end local 3 // java.lang.String relativeDbgFileName
        end local 2 // java.lang.String binFile
        end local 1 // java.nio.file.Path currDir
        end local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0                 this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0   10     1              currDir  Ljava/nio/file/Path;
            0   10     2              binFile  Ljava/lang/String;
            0   10     3  relativeDbgFileName  Ljava/lang/String;
            4   10     4    addDbgLinkCmdLine  Ljava/util/List<Ljava/lang/String;>;
            5   10     5              builder  Ljava/lang/ProcessBuilder;
            7   10     6            stripProc  Ljava/lang/Process;
            8   10     7               retval  I
    Exceptions:
      throws java.lang.InterruptedException, java.io.IOException
    MethodParameters:
                     Name  Flags
      currDir              
      binFile              
      relativeDbgFileName  

  private byte[] createDebugSymbolsFile(java.nio.file.Path, java.nio.file.Path, java.lang.String);
    descriptor: (Ljava/nio/file/Path;Ljava/nio/file/Path;Ljava/lang/String;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=10, args_size=4
        start local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
        start local 1 // java.nio.file.Path binPath
        start local 2 // java.nio.file.Path debugPath
        start local 3 // java.lang.String dbgFileName
         0: .line 400
            aload 1 /* binPath */
            invokeinterface java.nio.file.Path.toAbsolutePath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 4 /* filePath */
        start local 4 // java.lang.String filePath
         1: .line 401
            aload 2 /* debugPath */
            invokeinterface java.nio.file.Path.toAbsolutePath:()Ljava/nio/file/Path;
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 5 /* dbgPath */
        start local 5 // java.lang.String dbgPath
         2: .line 402
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.cmdBuilder:Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.strip:Ljava/lang/String;
            iconst_3
            anewarray java.lang.String
            dup
            iconst_0
         3: .line 403
            ldc "--only-keep-debug"
            aastore
            dup
            iconst_1
         4: .line 404
            aload 4 /* filePath */
            aastore
            dup
            iconst_2
         5: .line 405
            aload 5 /* dbgPath */
            aastore
         6: .line 402
            invokeinterface jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder.build:(Ljava/lang/String;[Ljava/lang/String;)Ljava/util/List;
            astore 6 /* createLinkCmdLine */
        start local 6 // java.util.List createLinkCmdLine
         7: .line 406
            aload 0 /* this */
            aload 6 /* createLinkCmdLine */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.createProcessBuilder:(Ljava/util/List;)Ljava/lang/ProcessBuilder;
            astore 7 /* builder */
        start local 7 // java.lang.ProcessBuilder builder
         8: .line 407
            aload 7 /* builder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 8 /* stripProc */
        start local 8 // java.lang.Process stripProc
         9: .line 408
            aload 8 /* stripProc */
            invokevirtual java.lang.Process.waitFor:()I
            istore 9 /* retval */
        start local 9 // int retval
        10: .line 409
            iload 9 /* retval */
            ifeq 14
        11: .line 410
            getstatic jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin.DEBUG:Z
            ifeq 13
        12: .line 411
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "DEBUG: Creating debuginfo file failed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        13: .line 413
      StackMap locals: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder java.nio.file.Path java.nio.file.Path java.lang.String java.lang.String java.lang.String java.util.List java.lang.ProcessBuilder java.lang.Process int
      StackMap stack:
            aconst_null
            areturn
        14: .line 415
      StackMap locals:
      StackMap stack:
            aload 2 /* debugPath */
            invokestatic java.nio.file.Files.readAllBytes:(Ljava/nio/file/Path;)[B
            areturn
        end local 9 // int retval
        end local 8 // java.lang.Process stripProc
        end local 7 // java.lang.ProcessBuilder builder
        end local 6 // java.util.List createLinkCmdLine
        end local 5 // java.lang.String dbgPath
        end local 4 // java.lang.String filePath
        end local 3 // java.lang.String dbgFileName
        end local 2 // java.nio.file.Path debugPath
        end local 1 // java.nio.file.Path binPath
        end local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   15     0               this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0   15     1            binPath  Ljava/nio/file/Path;
            0   15     2          debugPath  Ljava/nio/file/Path;
            0   15     3        dbgFileName  Ljava/lang/String;
            1   15     4           filePath  Ljava/lang/String;
            2   15     5            dbgPath  Ljava/lang/String;
            7   15     6  createLinkCmdLine  Ljava/util/List<Ljava/lang/String;>;
            8   15     7            builder  Ljava/lang/ProcessBuilder;
            9   15     8          stripProc  Ljava/lang/Process;
           10   15     9             retval  I
    Exceptions:
      throws java.lang.InterruptedException, java.io.IOException
    MethodParameters:
             Name  Flags
      binPath      
      debugPath    
      dbgFileName  

  private java.lang.ProcessBuilder createProcessBuilder(java.util.List<java.lang.String>);
    descriptor: (Ljava/util/List;)Ljava/lang/ProcessBuilder;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
        start local 1 // java.util.List cmd
         0: .line 420
            new java.lang.ProcessBuilder
            dup
            aload 1 /* cmd */
            invokespecial java.lang.ProcessBuilder.<init>:(Ljava/util/List;)V
            astore 2 /* builder */
        start local 2 // java.lang.ProcessBuilder builder
         1: .line 421
            aload 2 /* builder */
            getstatic java.lang.ProcessBuilder$Redirect.INHERIT:Ljava/lang/ProcessBuilder$Redirect;
            invokevirtual java.lang.ProcessBuilder.redirectError:(Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;
            pop
         2: .line 422
            aload 2 /* builder */
            getstatic java.lang.ProcessBuilder$Redirect.INHERIT:Ljava/lang/ProcessBuilder$Redirect;
            invokevirtual java.lang.ProcessBuilder.redirectOutput:(Ljava/lang/ProcessBuilder$Redirect;)Ljava/lang/ProcessBuilder;
            pop
         3: .line 423
            aload 2 /* builder */
            areturn
        end local 2 // java.lang.ProcessBuilder builder
        end local 1 // java.util.List cmd
        end local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0    4     1      cmd  Ljava/util/List<Ljava/lang/String;>;
            1    4     2  builder  Ljava/lang/ProcessBuilder;
    Signature: (Ljava/util/List<Ljava/lang/String;>;)Ljava/lang/ProcessBuilder;
    MethodParameters:
      Name  Flags
      cmd   

  private void deleteDirRecursivelyIgnoreResult(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
        start local 1 // java.nio.file.Path tempDir
         0: .line 428
            aload 1 /* tempDir */
            new jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder$1
            dup
            aload 0 /* this */
            invokespecial jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder$1.<init>:(Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;)V
            invokestatic java.nio.file.Files.walkFileTree:(Ljava/nio/file/Path;Ljava/nio/file/FileVisitor;)Ljava/nio/file/Path;
            pop
         1: .line 443
            goto 3
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 446
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.file.Path tempDir
        end local 0 // jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0    4     1  tempDir  Ljava/nio/file/Path;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
    MethodParameters:
         Name  Flags
      tempDir  
}
SourceFile: "StripNativeDebugSymbolsPlugin.java"
NestHost: jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin
InnerClasses:
  public abstract Redirect = java.lang.ProcessBuilder$Redirect of java.lang.ProcessBuilder
  public abstract ObjCopyCmdBuilder = jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder of jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin
  private StrippedDebugInfoBinary = jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinary of jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin
  private StrippedDebugInfoBinaryBuilder = jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder of jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin
  jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder$1
  public final Type = jdk.tools.jlink.plugin.ResourcePoolEntry$Type of jdk.tools.jlink.plugin.ResourcePoolEntry