final class java.lang.ProcessImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: java.lang.ProcessImpl
  super_class: java.lang.Object
{
  private static final sun.misc.JavaIOFileDescriptorAccess fdAccess;
    descriptor: Lsun/misc/JavaIOFileDescriptorAccess;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 41
            ldc Ljava/lang/ProcessImpl;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic java.lang.ProcessImpl.$assertionsDisabled:Z
         3: .line 43
            invokestatic sun.misc.SharedSecrets.getJavaIOFileDescriptorAccess:()Lsun/misc/JavaIOFileDescriptorAccess;
         4: .line 42
            putstatic java.lang.ProcessImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
         5: .line 43
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.ProcessImpl this
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // java.lang.ProcessImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/lang/ProcessImpl;

  private static byte[] toCString(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.lang.String s
         0: .line 48
            aload 0 /* s */
            ifnonnull 2
         1: .line 49
            aconst_null
            areturn
         2: .line 50
      StackMap locals:
      StackMap stack:
            aload 0 /* s */
            invokevirtual java.lang.String.getBytes:()[B
            astore 1 /* bytes */
        start local 1 // byte[] bytes
         3: .line 51
            aload 1 /* bytes */
            arraylength
            iconst_1
            iadd
            newarray 8
            astore 2 /* result */
        start local 2 // byte[] result
         4: .line 52
            aload 1 /* bytes */
            iconst_0
         5: .line 53
            aload 2 /* result */
            iconst_0
         6: .line 54
            aload 1 /* bytes */
            arraylength
         7: .line 52
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         8: .line 55
            aload 2 /* result */
            aload 2 /* result */
            arraylength
            iconst_1
            isub
            iconst_0
            bastore
         9: .line 56
            aload 2 /* result */
            areturn
        end local 2 // byte[] result
        end local 1 // byte[] bytes
        end local 0 // java.lang.String s
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   10     0       s  Ljava/lang/String;
            3   10     1   bytes  [B
            4   10     2  result  [B
    MethodParameters:
      Name  Flags
      s     

  static java.lang.Process start(java.lang.String[], java.util.Map<java.lang.String, java.lang.String>, java.lang.String, java.lang.ProcessBuilder$Redirect[], boolean);
    descriptor: ([Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;[Ljava/lang/ProcessBuilder$Redirect;Z)Ljava/lang/Process;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=10, locals=19, args_size=5
        start local 0 // java.lang.String[] cmdarray
        start local 1 // java.util.Map environment
        start local 2 // java.lang.String dir
        start local 3 // java.lang.ProcessBuilder$Redirect[] redirects
        start local 4 // boolean redirectErrorStream
         0: .line 67
            getstatic java.lang.ProcessImpl.$assertionsDisabled:Z
            ifne 2
            aload 0 /* cmdarray */
            ifnull 1
            aload 0 /* cmdarray */
            arraylength
            ifgt 2
      StackMap locals:
      StackMap stack:
         1: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 71
      StackMap locals:
      StackMap stack:
            aload 0 /* cmdarray */
            arraylength
            iconst_1
            isub
            anewarray byte[]
            astore 5 /* args */
        start local 5 // byte[][] args
         3: .line 72
            aload 5 /* args */
            arraylength
            istore 6 /* size */
        start local 6 // int size
         4: .line 73
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         5: goto 9
         6: .line 74
      StackMap locals: byte[][] int int
      StackMap stack:
            aload 5 /* args */
            iload 7 /* i */
            aload 0 /* cmdarray */
            iload 7 /* i */
            iconst_1
            iadd
            aaload
            invokevirtual java.lang.String.getBytes:()[B
            aastore
         7: .line 75
            iload 6 /* size */
            aload 5 /* args */
            iload 7 /* i */
            aaload
            arraylength
            iadd
            istore 6 /* size */
         8: .line 73
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
         9: iload 7 /* i */
            aload 5 /* args */
            arraylength
            if_icmplt 6
        end local 7 // int i
        10: .line 77
            iload 6 /* size */
            newarray 8
            astore 7 /* argBlock */
        start local 7 // byte[] argBlock
        11: .line 78
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        12: .line 79
            aload 5 /* args */
            dup
            astore 12
            arraylength
            istore 11
            iconst_0
            istore 10
            goto 17
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int top int int byte[][]
      StackMap stack:
        13: aload 12
            iload 10
            aaload
            astore 9 /* arg */
        start local 9 // byte[] arg
        14: .line 80
            aload 9 /* arg */
            iconst_0
            aload 7 /* argBlock */
            iload 8 /* i */
            aload 9 /* arg */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        15: .line 81
            iload 8 /* i */
            aload 9 /* arg */
            arraylength
            iconst_1
            iadd
            iadd
            istore 8 /* i */
        end local 9 // byte[] arg
        16: .line 79
            iinc 10 1
      StackMap locals:
      StackMap stack:
        17: iload 10
            iload 11
            if_icmplt 13
        18: .line 85
            iconst_1
            newarray 10
            astore 9 /* envc */
        start local 9 // int[] envc
        19: .line 86
            aload 1 /* environment */
            aload 9 /* envc */
            invokestatic java.lang.ProcessEnvironment.toEnvironmentBlock:(Ljava/util/Map;[I)[B
            astore 10 /* envBlock */
        start local 10 // byte[] envBlock
        20: .line 90
            aconst_null
            astore 12 /* f0 */
        start local 12 // java.io.FileInputStream f0
        21: .line 91
            aconst_null
            astore 13 /* f1 */
        start local 13 // java.io.FileOutputStream f1
        22: .line 92
            aconst_null
            astore 14 /* f2 */
        start local 14 // java.io.FileOutputStream f2
        23: .line 95
            aload 3 /* redirects */
            ifnonnull 26
        24: .line 96
            iconst_3
            newarray 10
            dup
            iconst_0
            iconst_m1
            iastore
            dup
            iconst_1
            iconst_m1
            iastore
            dup
            iconst_2
            iconst_m1
            iastore
            astore 11 /* std_fds */
        start local 11 // int[] std_fds
        25: .line 97
            goto 49
        end local 11 // int[] std_fds
        26: .line 98
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] top java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream
      StackMap stack:
            iconst_3
            newarray 10
            astore 11 /* std_fds */
        start local 11 // int[] std_fds
        27: .line 100
            aload 3 /* redirects */
            iconst_0
            aaload
            getstatic java.lang.ProcessBuilder$Redirect.PIPE:Ljava/lang/ProcessBuilder$Redirect;
            if_acmpne 29
        28: .line 101
            aload 11 /* std_fds */
            iconst_0
            iconst_m1
            iastore
            goto 33
        29: .line 102
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] int[] java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream
      StackMap stack:
            aload 3 /* redirects */
            iconst_0
            aaload
            getstatic java.lang.ProcessBuilder$Redirect.INHERIT:Ljava/lang/ProcessBuilder$Redirect;
            if_acmpne 31
        30: .line 103
            aload 11 /* std_fds */
            iconst_0
            iconst_0
            iastore
            goto 33
        31: .line 105
      StackMap locals:
      StackMap stack:
            new java.io.FileInputStream
            dup
            aload 3 /* redirects */
            iconst_0
            aaload
            invokevirtual java.lang.ProcessBuilder$Redirect.file:()Ljava/io/File;
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            astore 12 /* f0 */
        32: .line 106
            aload 11 /* std_fds */
            iconst_0
            getstatic java.lang.ProcessImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 12 /* f0 */
            invokevirtual java.io.FileInputStream.getFD:()Ljava/io/FileDescriptor;
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.get:(Ljava/io/FileDescriptor;)I
            iastore
        33: .line 109
      StackMap locals:
      StackMap stack:
            aload 3 /* redirects */
            iconst_1
            aaload
            getstatic java.lang.ProcessBuilder$Redirect.PIPE:Ljava/lang/ProcessBuilder$Redirect;
            if_acmpne 35
        34: .line 110
            aload 11 /* std_fds */
            iconst_1
            iconst_m1
            iastore
            goto 41
        35: .line 111
      StackMap locals:
      StackMap stack:
            aload 3 /* redirects */
            iconst_1
            aaload
            getstatic java.lang.ProcessBuilder$Redirect.INHERIT:Ljava/lang/ProcessBuilder$Redirect;
            if_acmpne 37
        36: .line 112
            aload 11 /* std_fds */
            iconst_1
            iconst_1
            iastore
            goto 41
        37: .line 114
      StackMap locals:
      StackMap stack:
            new java.io.FileOutputStream
            dup
            aload 3 /* redirects */
            iconst_1
            aaload
            invokevirtual java.lang.ProcessBuilder$Redirect.file:()Ljava/io/File;
        38: .line 115
            aload 3 /* redirects */
            iconst_1
            aaload
            invokevirtual java.lang.ProcessBuilder$Redirect.append:()Z
        39: .line 114
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;Z)V
            astore 13 /* f1 */
        40: .line 116
            aload 11 /* std_fds */
            iconst_1
            getstatic java.lang.ProcessImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 13 /* f1 */
            invokevirtual java.io.FileOutputStream.getFD:()Ljava/io/FileDescriptor;
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.get:(Ljava/io/FileDescriptor;)I
            iastore
        41: .line 119
      StackMap locals:
      StackMap stack:
            aload 3 /* redirects */
            iconst_2
            aaload
            getstatic java.lang.ProcessBuilder$Redirect.PIPE:Ljava/lang/ProcessBuilder$Redirect;
            if_acmpne 43
        42: .line 120
            aload 11 /* std_fds */
            iconst_2
            iconst_m1
            iastore
            goto 49
        43: .line 121
      StackMap locals:
      StackMap stack:
            aload 3 /* redirects */
            iconst_2
            aaload
            getstatic java.lang.ProcessBuilder$Redirect.INHERIT:Ljava/lang/ProcessBuilder$Redirect;
            if_acmpne 45
        44: .line 122
            aload 11 /* std_fds */
            iconst_2
            iconst_2
            iastore
            goto 49
        45: .line 124
      StackMap locals:
      StackMap stack:
            new java.io.FileOutputStream
            dup
            aload 3 /* redirects */
            iconst_2
            aaload
            invokevirtual java.lang.ProcessBuilder$Redirect.file:()Ljava/io/File;
        46: .line 125
            aload 3 /* redirects */
            iconst_2
            aaload
            invokevirtual java.lang.ProcessBuilder$Redirect.append:()Z
        47: .line 124
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;Z)V
            astore 14 /* f2 */
        48: .line 126
            aload 11 /* std_fds */
            iconst_2
            getstatic java.lang.ProcessImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.getFD:()Ljava/io/FileDescriptor;
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.get:(Ljava/io/FileDescriptor;)I
            iastore
        49: .line 130
      StackMap locals:
      StackMap stack:
            new java.lang.UNIXProcess
            dup
        50: .line 131
            aload 0 /* cmdarray */
            iconst_0
            aaload
            invokestatic java.lang.ProcessImpl.toCString:(Ljava/lang/String;)[B
        51: .line 132
            aload 7 /* argBlock */
            aload 5 /* args */
            arraylength
        52: .line 133
            aload 10 /* envBlock */
            aload 9 /* envc */
            iconst_0
            iaload
        53: .line 134
            aload 2 /* dir */
            invokestatic java.lang.ProcessImpl.toCString:(Ljava/lang/String;)[B
        54: .line 135
            aload 11 /* std_fds */
        55: .line 136
            iload 4 /* redirectErrorStream */
        56: .line 130
            invokespecial java.lang.UNIXProcess.<init>:([B[BI[BI[B[IZ)V
            astore 16
        57: .line 140
            aload 12 /* f0 */
            ifnull 64
            aload 12 /* f0 */
            invokevirtual java.io.FileInputStream.close:()V
            goto 64
        58: .line 141
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] int[] java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream top java.lang.Process
      StackMap stack: java.lang.Throwable
            astore 17
        59: .line 142
            aload 13 /* f1 */
            ifnull 62
            aload 13 /* f1 */
            invokevirtual java.io.FileOutputStream.close:()V
            goto 62
        60: .line 143
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] int[] java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream top java.lang.Process java.lang.Throwable
      StackMap stack: java.lang.Throwable
            astore 18
            aload 14 /* f2 */
            ifnull 61
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
      StackMap locals: java.lang.Throwable
      StackMap stack:
        61: aload 18
            athrow
      StackMap locals:
      StackMap stack:
        62: aload 14 /* f2 */
            ifnull 63
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
        63: .line 144
      StackMap locals:
      StackMap stack:
            aload 17
            athrow
        64: .line 142
      StackMap locals:
      StackMap stack:
            aload 13 /* f1 */
            ifnull 67
            aload 13 /* f1 */
            invokevirtual java.io.FileOutputStream.close:()V
            goto 67
        65: .line 143
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 18
            aload 14 /* f2 */
            ifnull 66
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] int[] java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream top java.lang.Process top java.lang.Throwable
      StackMap stack:
        66: aload 18
            athrow
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] int[] java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream top java.lang.Process
      StackMap stack:
        67: aload 14 /* f2 */
            ifnull 68
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
        68: .line 130
      StackMap locals:
      StackMap stack:
            aload 16
            areturn
        end local 11 // int[] std_fds
        69: .line 137
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] top java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream
      StackMap stack: java.lang.Throwable
            astore 15
        70: .line 140
            aload 12 /* f0 */
            ifnull 77
            aload 12 /* f0 */
            invokevirtual java.io.FileInputStream.close:()V
            goto 77
        71: .line 141
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] top java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream java.lang.Throwable
      StackMap stack: java.lang.Throwable
            astore 17
        72: .line 142
            aload 13 /* f1 */
            ifnull 75
            aload 13 /* f1 */
            invokevirtual java.io.FileOutputStream.close:()V
            goto 75
        73: .line 143
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] top java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream java.lang.Throwable top java.lang.Throwable
      StackMap stack: java.lang.Throwable
            astore 18
            aload 14 /* f2 */
            ifnull 74
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
      StackMap locals: java.lang.Throwable
      StackMap stack:
        74: aload 18
            athrow
      StackMap locals:
      StackMap stack:
        75: aload 14 /* f2 */
            ifnull 76
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
        76: .line 144
      StackMap locals:
      StackMap stack:
            aload 17
            athrow
        77: .line 142
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] top java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream java.lang.Throwable
      StackMap stack:
            aload 13 /* f1 */
            ifnull 80
            aload 13 /* f1 */
            invokevirtual java.io.FileOutputStream.close:()V
            goto 80
        78: .line 143
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 18
            aload 14 /* f2 */
            ifnull 79
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] top java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream java.lang.Throwable top top java.lang.Throwable
      StackMap stack:
        79: aload 18
            athrow
      StackMap locals: java.lang.String[] java.util.Map java.lang.String java.lang.ProcessBuilder$Redirect[] int byte[][] int byte[] int int[] byte[] top java.io.FileInputStream java.io.FileOutputStream java.io.FileOutputStream java.lang.Throwable
      StackMap stack:
        80: aload 14 /* f2 */
            ifnull 81
            aload 14 /* f2 */
            invokevirtual java.io.FileOutputStream.close:()V
        81: .line 145
      StackMap locals:
      StackMap stack:
            aload 15
            athrow
        end local 14 // java.io.FileOutputStream f2
        end local 13 // java.io.FileOutputStream f1
        end local 12 // java.io.FileInputStream f0
        end local 10 // byte[] envBlock
        end local 9 // int[] envc
        end local 8 // int i
        end local 7 // byte[] argBlock
        end local 6 // int size
        end local 5 // byte[][] args
        end local 4 // boolean redirectErrorStream
        end local 3 // java.lang.ProcessBuilder$Redirect[] redirects
        end local 2 // java.lang.String dir
        end local 1 // java.util.Map environment
        end local 0 // java.lang.String[] cmdarray
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   82     0             cmdarray  [Ljava/lang/String;
            0   82     1          environment  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            0   82     2                  dir  Ljava/lang/String;
            0   82     3            redirects  [Ljava/lang/ProcessBuilder$Redirect;
            0   82     4  redirectErrorStream  Z
            3   82     5                 args  [[B
            4   82     6                 size  I
            5   10     7                    i  I
           11   82     7             argBlock  [B
           12   82     8                    i  I
           14   16     9                  arg  [B
           19   82     9                 envc  [I
           20   82    10             envBlock  [B
           25   26    11              std_fds  [I
           27   69    11              std_fds  [I
           21   82    12                   f0  Ljava/io/FileInputStream;
           22   82    13                   f1  Ljava/io/FileOutputStream;
           23   82    14                   f2  Ljava/io/FileOutputStream;
      Exception table:
        from    to  target  type
          57    58      58  any
          59    60      60  any
          64    65      65  any
          23    57      69  any
          70    71      71  any
          72    73      73  any
          77    78      78  any
    Exceptions:
      throws java.io.IOException
    Signature: ([Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;Ljava/lang/String;[Ljava/lang/ProcessBuilder$Redirect;Z)Ljava/lang/Process;
    MethodParameters:
                     Name  Flags
      cmdarray             
      environment          
      dir                  
      redirects            
      redirectErrorStream  
}
SourceFile: "ProcessImpl.java"
InnerClasses:
  public abstract Redirect = java.lang.ProcessBuilder$Redirect of java.lang.ProcessBuilder