public class sun.tools.ProcessHelper implements sun.tools.common.ProcessHelper
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.tools.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:"

  private static final sun.tools.ProcessHelper INSTANCE;
    descriptor: Lsun/tools/ProcessHelper;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 44
            new sun.tools.ProcessHelper
            dup
            invokespecial sun.tools.ProcessHelper.<init>:()V
            putstatic sun.tools.ProcessHelper.INSTANCE:Lsun/tools/ProcessHelper;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

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

  public static sun.tools.ProcessHelper getInstance();
    descriptor: ()Lsun/tools/ProcessHelper;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 47
            getstatic sun.tools.ProcessHelper.INSTANCE:Lsun/tools/ProcessHelper;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.String getMainClass(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // sun.tools.ProcessHelper this
        start local 1 // java.lang.String pid
         0: .line 62
            aload 1 /* pid */
            invokestatic sun.tools.ProcessHelper.getCommandLine:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* cmdLine */
        start local 2 // java.lang.String cmdLine
         1: .line 63
            aload 2 /* cmdLine */
            ifnonnull 3
         2: .line 64
            aconst_null
            areturn
         3: .line 66
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* cmdLine */
            ldc "cmd:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 67
            aload 2 /* cmdLine */
            ldc "cmd:"
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 2 /* cmdLine */
         5: .line 69
      StackMap locals:
      StackMap stack:
            aload 2 /* cmdLine */
            ldc "\u0000"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* parts */
        start local 3 // java.lang.String[] parts
         6: .line 70
            aconst_null
            astore 4 /* mainClass */
        start local 4 // java.lang.String mainClass
         7: .line 72
            aload 3 /* parts */
            arraylength
            ifne 9
         8: .line 73
            aconst_null
            areturn
         9: .line 77
      StackMap locals: java.lang.String[] java.lang.String
      StackMap stack:
            aload 3 /* parts */
            iconst_0
            aaload
            ldc "/"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 5 /* executablePath */
        start local 5 // java.lang.String[] executablePath
        10: .line 78
            aload 5 /* executablePath */
            arraylength
            ifle 14
        11: .line 79
            aload 5 /* executablePath */
            aload 5 /* executablePath */
            arraylength
            iconst_1
            isub
            aaload
            astore 6 /* binaryName */
        start local 6 // java.lang.String binaryName
        12: .line 80
            ldc "java"
            aload 6 /* binaryName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 14
        13: .line 82
            aconst_null
            areturn
        end local 6 // java.lang.String binaryName
        14: .line 92
      StackMap locals: java.lang.String[]
      StackMap stack:
            iconst_1
            istore 6 /* i */
        start local 6 // int i
        15: goto 31
        16: .line 93
      StackMap locals: int
      StackMap stack:
            iload 6 /* i */
            aload 3 /* parts */
            arraylength
            iconst_1
            isub
            if_icmpge 19
        17: .line 94
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "-m"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "--module"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 18
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "-jar"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        18: .line 95
      StackMap locals:
      StackMap stack:
            aload 3 /* parts */
            iload 6 /* i */
            iconst_1
            iadd
            aaload
            areturn
        19: .line 99
      StackMap locals:
      StackMap stack:
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "--module="
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 21
        20: .line 100
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "--module="
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            areturn
        21: .line 105
      StackMap locals:
      StackMap stack:
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "-cp"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "-classpath"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "--class-path"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 23
        22: .line 106
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            invokestatic sun.tools.ProcessHelper.isModuleWhiteSpaceOption:(Ljava/lang/String;)Z
            ifeq 25
        23: .line 107
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
        24: .line 108
            goto 30
        25: .line 111
      StackMap locals:
      StackMap stack:
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc "-"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 27
        26: .line 112
            goto 30
        27: .line 116
      StackMap locals:
      StackMap stack:
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            ldc ".java"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 29
        28: .line 117
            aconst_null
            areturn
        29: .line 120
      StackMap locals:
      StackMap stack:
            aload 3 /* parts */
            iload 6 /* i */
            aaload
            astore 4 /* mainClass */
        30: .line 92
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        31: iload 6 /* i */
            aload 3 /* parts */
            arraylength
            if_icmpge 32
            aload 4 /* mainClass */
            ifnull 16
        end local 6 // int i
        32: .line 122
      StackMap locals:
      StackMap stack:
            aload 4 /* mainClass */
            areturn
        end local 5 // java.lang.String[] executablePath
        end local 4 // java.lang.String mainClass
        end local 3 // java.lang.String[] parts
        end local 2 // java.lang.String cmdLine
        end local 1 // java.lang.String pid
        end local 0 // sun.tools.ProcessHelper this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   33     0            this  Lsun/tools/ProcessHelper;
            0   33     1             pid  Ljava/lang/String;
            1   33     2         cmdLine  Ljava/lang/String;
            6   33     3           parts  [Ljava/lang/String;
            7   33     4       mainClass  Ljava/lang/String;
           10   33     5  executablePath  [Ljava/lang/String;
           12   14     6      binaryName  Ljava/lang/String;
           15   32     6               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 127
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: .line 128
            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 127
            astore 3 /* lines */
        start local 3 // java.util.stream.Stream lines
         3: .line 129
            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 130
            aload 3 /* lines */
            ifnull 5
            aload 3 /* lines */
            invokeinterface java.util.stream.Stream.close:()V
         5: .line 129
      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 130
            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 131
            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 136
            aload 0 /* option */
            ldc "-p"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         1: .line 137
            aload 0 /* option */
            ldc "--module-path"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         2: .line 138
            aload 0 /* option */
            ldc "--upgrade-module-path"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         3: .line 139
            aload 0 /* option */
            ldc "--add-modules"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         4: .line 140
            aload 0 /* option */
            ldc "--limit-modules"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         5: .line 141
            aload 0 /* option */
            ldc "--add-exports"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         6: .line 142
            aload 0 /* option */
            ldc "--add-opens"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         7: .line 143
            aload 0 /* option */
            ldc "--add-reads"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         8: .line 144
            aload 0 /* option */
            ldc "--patch-module"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 10
         9: .line 136
            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"