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 272
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 276
            aload 0 /* this */
            iload 1 /* includeDebug */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.includeDebug:Z
         2: .line 277
            aload 0 /* this */
            aload 2 /* debugExt */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.debugExt:Ljava/lang/String;
         3: .line 278
            aload 0 /* this */
            aload 3 /* cmdBuilder */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.cmdBuilder:Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$ObjCopyCmdBuilder;
         4: .line 279
            aload 0 /* this */
            aload 4 /* strip */
            putfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.strip:Ljava/lang/String;
         5: .line 280
            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 283
            aconst_null
            astore 2 /* tempDir */
        start local 2 // java.nio.file.Path tempDir
         1: .line 284
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            astore 3 /* debugInfo */
        start local 3 // java.util.Optional debugInfo
         2: .line 286
            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 287
            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 288
            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 289
            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 290
            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 292
            aconst_null
            astore 8
            aconst_null
            astore 9
         8: aload 1 /* resource */
            invokeinterface jdk.tools.jlink.plugin.ResourcePoolEntry.content:()Ljava/io/InputStream;
            astore 10 /* in */
        start local 10 // java.io.InputStream in
         9: .line 293
            aload 10 /* in */
            aload 6 /* resourceFileBinary */
            iconst_0
            anewarray java.nio.file.CopyOption
            invokestatic java.nio.file.Files.copy:(Ljava/io/InputStream;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)J
            pop2
        10: .line 294
            aload 10 /* in */
            ifnull 16
            aload 10 /* in */
            invokevirtual java.io.InputStream.close:()V
            goto 16
      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 java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        11: astore 8
            aload 10 /* in */
            ifnull 12
            aload 10 /* in */
            invokevirtual java.io.InputStream.close:()V
        end local 10 // java.io.InputStream in
      StackMap locals:
      StackMap stack:
        12: aload 8
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 9
            aload 8
            ifnonnull 14
            aload 9
            astore 8
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 8
            aload 9
            if_acmpeq 15
            aload 8
            aload 9
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 8
            athrow
        16: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.includeDebug:Z
            ifeq 29
        17: .line 298
            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
        18: .line 299
            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
        19: .line 300
            aload 0 /* this */
            aload 6 /* resourceFileBinary */
        20: .line 301
            aload 8 /* resourceFileDebugSymbols */
        21: .line 302
            aload 7 /* relativeDbgFileName */
        22: .line 300
            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
        23: .line 303
            aload 10 /* debugInfoBytes */
            ifnull 29
        24: .line 305
            aload 9 /* debugEntryPath */
        25: .line 306
            aload 1 /* resource */
            invokeinterface jdk.tools.jlink.plugin.ResourcePoolEntry.type:()Ljdk/tools/jlink/plugin/ResourcePoolEntry$Type;
        26: .line 307
            aload 10 /* debugInfoBytes */
        27: .line 304
            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
        28: .line 308
            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
        29: .line 311
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 6 /* resourceFileBinary */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.stripBinary:(Ljava/nio/file/Path;)Z
            ifne 36
        30: .line 312
            getstatic jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin.DEBUG:Z
            ifeq 32
        31: .line 313
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "DEBUG: Stripping debug info failed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        32: .line 315
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            astore 13
        33: .line 331
            aload 2 /* tempDir */
            ifnull 35
        34: .line 332
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        35: .line 315
      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
        36: .line 317
      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 47
            aload 0 /* this */
            aload 2 /* tempDir */
        37: .line 318
            aload 5 /* relativeFileName */
        38: .line 319
            aload 7 /* relativeDbgFileName */
        39: .line 317
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.addGnuDebugLink:(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;)Z
        40: .line 319
            ifne 47
        41: .line 320
            getstatic jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin.DEBUG:Z
            ifeq 43
        42: .line 321
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "DEBUG: Creating debug link failed."
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        43: .line 323
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Optional.empty:()Ljava/util/Optional;
            astore 13
        44: .line 331
            aload 2 /* tempDir */
            ifnull 46
        45: .line 332
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        46: .line 323
      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
        47: .line 325
      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
        48: .line 326
            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
        49: .line 327
            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
        50: .line 331
            aload 2 /* tempDir */
            ifnull 52
        51: .line 332
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        52: .line 327
      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
        53: .line 328
      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
        54: .line 329
            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
        55: .line 330
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 12
        56: .line 331
            aload 2 /* tempDir */
            ifnull 58
        57: .line 332
            aload 0 /* this */
            aload 2 /* tempDir */
            invokevirtual jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder.deleteDirRecursivelyIgnoreResult:(Ljava/nio/file/Path;)V
        58: .line 334
      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   59     0                      this  Ljdk/tools/jlink/internal/plugins/StripNativeDebugSymbolsPlugin$StrippedDebugInfoBinaryBuilder;
            0   59     1                  resource  Ljdk/tools/jlink/plugin/ResourcePoolEntry;
            1   59     2                   tempDir  Ljava/nio/file/Path;
            2   59     3                 debugInfo  Ljava/util/Optional<Ljdk/tools/jlink/plugin/ResourcePoolEntry;>;
            3   53     4                   resPath  Ljava/nio/file/Path;
            4   53     5          relativeFileName  Ljava/lang/String;
            6   53     6        resourceFileBinary  Ljava/nio/file/Path;
            7   53     7       relativeDbgFileName  Ljava/lang/String;
            9   12    10                        in  Ljava/io/InputStream;
           18   29     8  resourceFileDebugSymbols  Ljava/nio/file/Path;
           19   29     9            debugEntryPath  Ljava/lang/String;
           23   29    10            debugInfoBytes  [B
           28   29    11                debugEntry  Ljdk/tools/jlink/plugin/ResourcePoolEntry;
           48   53     9             strippedBytes  [B
           49   53    10          strippedResource  Ljdk/tools/jlink/plugin/ResourcePoolEntry;
           54   55     4                         e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           9    10      11  any
           8    13      13  any
           2    33      53  Class java.io.IOException
          36    44      53  Class java.io.IOException
          47    50      53  Class java.io.IOException
           2    33      53  Class java.lang.InterruptedException
          36    44      53  Class java.lang.InterruptedException
          47    50      53  Class java.lang.InterruptedException
           2    33      55  any
          36    44      55  any
          47    50      55  any
          53    55      55  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 343
            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 344
            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 345
            aload 2 /* filePath */
            aastore
         3: .line 344
            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 346
            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 347
            aload 4 /* builder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 5 /* stripProc */
        start local 5 // java.lang.Process stripProc
         6: .line 348
            aload 5 /* stripProc */
            invokevirtual java.lang.Process.waitFor:()I
            istore 6 /* retval */
        start local 6 // int retval
         7: .line 349
            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 360
            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 361
            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 362
            aload 2 /* binFile */
            aastore
         3: .line 360
            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 363
            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 364
            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 365
            aload 5 /* builder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 6 /* stripProc */
        start local 6 // java.lang.Process stripProc
         7: .line 366
            aload 6 /* stripProc */
            invokevirtual java.lang.Process.waitFor:()I
            istore 7 /* retval */
        start local 7 // int retval
         8: .line 367
            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 379
            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 380
            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 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_3
            anewarray java.lang.String
            dup
            iconst_0
         3: .line 382
            ldc "--only-keep-debug"
            aastore
            dup
            iconst_1
         4: .line 383
            aload 4 /* filePath */
            aastore
            dup
            iconst_2
         5: .line 384
            aload 5 /* dbgPath */
            aastore
         6: .line 381
            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 385
            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 386
            aload 7 /* builder */
            invokevirtual java.lang.ProcessBuilder.start:()Ljava/lang/Process;
            astore 8 /* stripProc */
        start local 8 // java.lang.Process stripProc
         9: .line 387
            aload 8 /* stripProc */
            invokevirtual java.lang.Process.waitFor:()I
            istore 9 /* retval */
        start local 9 // int retval
        10: .line 388
            iload 9 /* retval */
            ifeq 14
        11: .line 389
            getstatic jdk.tools.jlink.internal.plugins.StripNativeDebugSymbolsPlugin.DEBUG:Z
            ifeq 13
        12: .line 390
            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 392
      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 394
      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 399
            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 400
            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 401
            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 402
            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 407
            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 422
            goto 3
      StackMap locals:
      StackMap stack: java.io.IOException
         2: pop
         3: .line 425
      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