final class sun.tools.common.ProcessHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.tools.common.ProcessHelper
  super_class: java.lang.Object
{
  private static final java.lang.String CMD_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "cmd:"

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.tools.common.ProcessHelper this
         0: .line 38
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.tools.common.ProcessHelper this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/tools/common/ProcessHelper;

  static java.lang.String getMainClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.lang.String pid
         0: .line 53
            aload 0 /* pid */
            invokestatic sun.tools.common.ProcessHelper.getCommandLine:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* cmdLine */
        start local 1 // java.lang.String cmdLine
         1: .line 54
            aload 1 /* cmdLine */
            ifnonnull 3
         2: .line 55
            aconst_null
            areturn
         3: .line 57
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* cmdLine */
            ldc "cmd:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 58
            aload 1 /* cmdLine */
            ldc "cmd:"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 1 /* cmdLine */
         5: .line 60
      StackMap locals:
      StackMap stack:
            aload 1 /* cmdLine */
            ldc "\u0000"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* parts */
        start local 2 // java.lang.String[] parts
         6: .line 61
            aconst_null
            astore 3 /* mainClass */
        start local 3 // java.lang.String mainClass
         7: .line 63
            aload 2 /* parts */
            arraylength
            ifne 9
         8: .line 64
            aconst_null
            areturn
         9: .line 68
      StackMap locals: java.lang.String[] java.lang.String
      StackMap stack:
            aload 2 /* parts */
            iconst_0
            aaload
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 4 /* executablePath */
        start local 4 // java.lang.String[] executablePath
        10: .line 69
            aload 4 /* executablePath */
            arraylength
            ifle 14
        11: .line 70
            aload 4 /* executablePath */
            aload 4 /* executablePath */
            arraylength
            iconst_1
            isub
            aaload
            astore 5 /* binaryName */
        start local 5 // java.lang.String binaryName
        12: .line 71
            ldc "java"
            aload 5 /* binaryName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 14
        13: .line 73
            aconst_null
            areturn
        end local 5 // java.lang.String binaryName
        14: .line 83
      StackMap locals: java.lang.String[]
      StackMap stack:
            iconst_1
            istore 5 /* i */
        start local 5 // int i
        15: goto 31
        16: .line 84
      StackMap locals: int
      StackMap stack:
            iload 5 /* i */
            aload 2 /* parts */
            arraylength
            iconst_1
            isub
            if_icmpge 19
        17: .line 85
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "-m"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "--module"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "-jar"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        18: .line 86
      StackMap locals:
      StackMap stack:
            aload 2 /* parts */
            iload 5 /* i */
            iconst_1
            iadd
            aaload
            areturn
        19: .line 90
      StackMap locals:
      StackMap stack:
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "--module="
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 21
        20: .line 91
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "--module="
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            areturn
        21: .line 96
      StackMap locals:
      StackMap stack:
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "-cp"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "-classpath"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "--class-path"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
        22: .line 97
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            invokestatic sun.tools.common.ProcessHelper.isModuleWhiteSpaceOption:(Ljava/lang/String;)Z
            ifeq 25
        23: .line 98
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
        24: .line 99
            goto 30
        25: .line 102
      StackMap locals:
      StackMap stack:
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 27
        26: .line 103
            goto 30
        27: .line 107
      StackMap locals:
      StackMap stack:
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            ldc ".java"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 29
        28: .line 108
            aconst_null
            areturn
        29: .line 111
      StackMap locals:
      StackMap stack:
            aload 2 /* parts */
            iload 5 /* i */
            aaload
            astore 3 /* mainClass */
        30: .line 83
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        31: iload 5 /* i */
            aload 2 /* parts */
            arraylength
            if_icmpge 32
            aload 3 /* mainClass */
            ifnull 16
        end local 5 // int i
        32: .line 113
      StackMap locals:
      StackMap stack:
            aload 3 /* mainClass */
            areturn
        end local 4 // java.lang.String[] executablePath
        end local 3 // java.lang.String mainClass
        end local 2 // java.lang.String[] parts
        end local 1 // java.lang.String cmdLine
        end local 0 // java.lang.String pid
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   33     0             pid  Ljava/lang/String;
            1   33     1         cmdLine  Ljava/lang/String;
            6   33     2           parts  [Ljava/lang/String;
            7   33     3       mainClass  Ljava/lang/String;
           10   33     4  executablePath  [Ljava/lang/String;
           12   14     5      binaryName  Ljava/lang/String;
           15   32     5               i  I
    MethodParameters:
      Name  Flags
      pid   

  private static java.lang.String getCommandLine(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.lang.String pid
         0: .line 117
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: .line 118
            new java.lang.StringBuilder
            dup
            ldc "/proc/"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* pid */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "/cmdline"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()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;
            invokestatic java.nio.file.Files.lines:(Ljava/nio/file/Path;)Ljava/util/stream/Stream;
         2: .line 117
            astore 3 /* lines */
        start local 3 // java.util.stream.Stream lines
         3: .line 119
            aload 3 /* lines */
            invokeinterface java.util.stream.Stream.findFirst:()Ljava/util/Optional;
            aconst_null
            invokevirtual java.util.Optional.orElse:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
         4: .line 120
            aload 3 /* lines */
            ifnull 5
            aload 3 /* lines */
            invokeinterface java.util.stream.Stream.close:()V
         5: .line 119
      StackMap locals: java.lang.String java.lang.Throwable java.lang.Throwable java.util.stream.Stream
      StackMap stack: java.lang.String
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: astore 1
         7: .line 120
            aload 3 /* lines */
            ifnull 8
            aload 3 /* lines */
            invokeinterface java.util.stream.Stream.close:()V
        end local 3 // java.util.stream.Stream lines
      StackMap locals:
      StackMap stack:
         8: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: astore 2
            aload 1
            ifnonnull 10
            aload 2
            astore 1
            goto 11
      StackMap locals:
      StackMap stack:
        10: aload 1
            aload 2
            if_acmpeq 11
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        11: aload 1
            athrow
      StackMap locals: java.lang.String
      StackMap stack: java.lang.Exception
        12: pop
        13: .line 121
            aconst_null
            areturn
        end local 0 // java.lang.String pid
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   14     0    pid  Ljava/lang/String;
            3    8     3  lines  Ljava/util/stream/Stream<Ljava/lang/String;>;
      Exception table:
        from    to  target  type
           3     4       6  any
           1     5       9  any
           6     9       9  any
           0     5      12  Class java.io.IOException
           6    12      12  Class java.io.IOException
           0     5      12  Class java.io.UncheckedIOException
           6    12      12  Class java.io.UncheckedIOException
    MethodParameters:
      Name  Flags
      pid   

  private static boolean isModuleWhiteSpaceOption(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String option
         0: .line 126
            aload 0 /* option */
            ldc "-p"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         1: .line 127
            aload 0 /* option */
            ldc "--module-path"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         2: .line 128
            aload 0 /* option */
            ldc "--upgrade-module-path"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         3: .line 129
            aload 0 /* option */
            ldc "--add-modules"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         4: .line 130
            aload 0 /* option */
            ldc "--limit-modules"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         5: .line 131
            aload 0 /* option */
            ldc "--add-exports"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         6: .line 132
            aload 0 /* option */
            ldc "--add-opens"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         7: .line 133
            aload 0 /* option */
            ldc "--add-reads"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         8: .line 134
            aload 0 /* option */
            ldc "--patch-module"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         9: .line 126
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        10: iconst_1
            ireturn
        end local 0 // java.lang.String option
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0  option  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      option  
}
SourceFile: "ProcessHelper.java"