public class org.jruby.util.ShellLauncher
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.util.ShellLauncher
  super_class: java.lang.Object
{
  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final java.lang.String PATH_ENV;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "PATH"

  private static final java.lang.String[] DEFAULT_PATH;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] WINDOWS_EXE_SUFFIXES;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] WINDOWS_INTERNAL_CMDS;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.regex.Pattern SHELL_METACHARACTER_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.regex.Pattern WIN_ENVVAR_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.Class UNIXProcess;
    descriptor: Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.reflect.Field UNIXProcess_pid;
    descriptor: Ljava/lang/reflect/Field;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.Class ProcessImpl;
    descriptor: Ljava/lang/Class;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.reflect.Field ProcessImpl_handle;
    descriptor: Ljava/lang/reflect/Field;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final org.jruby.util.ShellLauncher$PidGetter PID_GETTER;
    descriptor: Lorg/jruby/util/ShellLauncher$PidGetter;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=0
         0: .line 89
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc "/usr/local/bin"
            aastore
            dup
            iconst_1
            ldc "/usr/ucb"
            aastore
            dup
            iconst_2
            ldc "/usr/bin"
            aastore
            dup
            iconst_3
            ldc "/bin"
            aastore
         1: .line 88
            putstatic org.jruby.util.ShellLauncher.DEFAULT_PATH:[Ljava/lang/String;
         2: .line 92
            iconst_4
            anewarray java.lang.String
            dup
            iconst_0
            ldc ".exe"
            aastore
            dup
            iconst_1
            ldc ".com"
            aastore
            dup
            iconst_2
            ldc ".bat"
            aastore
            dup
            iconst_3
            ldc ".cmd"
            aastore
         3: .line 91
            putstatic org.jruby.util.ShellLauncher.WINDOWS_EXE_SUFFIXES:[Ljava/lang/String;
         4: .line 94
            bipush 49
            anewarray java.lang.String
            dup
            iconst_0
         5: .line 95
            ldc "assoc"
            aastore
            dup
            iconst_1
            ldc "break"
            aastore
            dup
            iconst_2
            ldc "call"
            aastore
            dup
            iconst_3
            ldc "cd"
            aastore
            dup
            iconst_4
            ldc "chcp"
            aastore
            dup
            iconst_5
         6: .line 96
            ldc "chdir"
            aastore
            dup
            bipush 6
            ldc "cls"
            aastore
            dup
            bipush 7
            ldc "color"
            aastore
            dup
            bipush 8
            ldc "copy"
            aastore
            dup
            bipush 9
            ldc "ctty"
            aastore
            dup
            bipush 10
            ldc "date"
            aastore
            dup
            bipush 11
            ldc "del"
            aastore
            dup
            bipush 12
            ldc "dir"
            aastore
            dup
            bipush 13
            ldc "echo"
            aastore
            dup
            bipush 14
            ldc "endlocal"
            aastore
            dup
            bipush 15
         7: .line 97
            ldc "erase"
            aastore
            dup
            bipush 16
            ldc "exit"
            aastore
            dup
            bipush 17
            ldc "for"
            aastore
            dup
            bipush 18
            ldc "ftype"
            aastore
            dup
            bipush 19
            ldc "goto"
            aastore
            dup
            bipush 20
            ldc "if"
            aastore
            dup
            bipush 21
            ldc "lfnfor"
            aastore
            dup
            bipush 22
            ldc "lh"
            aastore
            dup
            bipush 23
            ldc "lock"
            aastore
            dup
            bipush 24
            ldc "md"
            aastore
            dup
            bipush 25
            ldc "mkdir"
            aastore
            dup
            bipush 26
         8: .line 98
            ldc "move"
            aastore
            dup
            bipush 27
            ldc "path"
            aastore
            dup
            bipush 28
            ldc "pause"
            aastore
            dup
            bipush 29
            ldc "popd"
            aastore
            dup
            bipush 30
            ldc "prompt"
            aastore
            dup
            bipush 31
            ldc "pushd"
            aastore
            dup
            bipush 32
            ldc "rd"
            aastore
            dup
            bipush 33
            ldc "rem"
            aastore
            dup
            bipush 34
            ldc "ren"
            aastore
            dup
            bipush 35
            ldc "rename"
            aastore
            dup
            bipush 36
         9: .line 99
            ldc "rmdir"
            aastore
            dup
            bipush 37
            ldc "set"
            aastore
            dup
            bipush 38
            ldc "setlocal"
            aastore
            dup
            bipush 39
            ldc "shift"
            aastore
            dup
            bipush 40
            ldc "start"
            aastore
            dup
            bipush 41
            ldc "time"
            aastore
            dup
            bipush 42
            ldc "title"
            aastore
            dup
            bipush 43
            ldc "truename"
            aastore
            dup
            bipush 44
            ldc "type"
            aastore
            dup
            bipush 45
        10: .line 100
            ldc "unlock"
            aastore
            dup
            bipush 46
            ldc "ver"
            aastore
            dup
            bipush 47
            ldc "verify"
            aastore
            dup
            bipush 48
            ldc "vol"
            aastore
        11: .line 94
            putstatic org.jruby.util.ShellLauncher.WINDOWS_INTERNAL_CMDS:[Ljava/lang/String;
        12: .line 104
            ldc "[*?{}\\[\\]<>()~&|$;'`\\\\\"\\n]"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
        13: .line 103
            putstatic org.jruby.util.ShellLauncher.SHELL_METACHARACTER_PATTERN:Ljava/util/regex/Pattern;
        14: .line 106
            ldc "%\\w+%"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.jruby.util.ShellLauncher.WIN_ENVVAR_PATTERN:Ljava/util/regex/Pattern;
        15: .line 660
            aconst_null
            astore 1 /* up */
        start local 1 // java.lang.Class up
        16: .line 661
            aconst_null
            astore 2 /* pid */
        start local 2 // java.lang.reflect.Field pid
        17: .line 663
            ldc "java.lang.UNIXProcess"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 1 /* up */
        18: .line 664
            aload 1 /* up */
            ldc "pid"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 2 /* pid */
        19: .line 665
            aload 2 /* pid */
            invokestatic org.jruby.javasupport.Java.trySetAccessible:(Ljava/lang/reflect/AccessibleObject;)Z
            pop
        20: .line 666
            goto 22
      StackMap locals: top java.lang.Class java.lang.reflect.Field
      StackMap stack: java.lang.Exception
        21: pop
        22: .line 669
      StackMap locals:
      StackMap stack:
            aload 1 /* up */
            putstatic org.jruby.util.ShellLauncher.UNIXProcess:Ljava/lang/Class;
        23: .line 670
            aload 2 /* pid */
            putstatic org.jruby.util.ShellLauncher.UNIXProcess_pid:Ljava/lang/reflect/Field;
        24: .line 672
            aconst_null
            astore 3 /* pi */
        start local 3 // java.lang.Class pi
        25: .line 673
            aconst_null
            astore 4 /* handle */
        start local 4 // java.lang.reflect.Field handle
        26: .line 675
            ldc "java.lang.ProcessImpl"
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 3 /* pi */
        27: .line 676
            aload 3 /* pi */
            ldc "handle"
            invokevirtual java.lang.Class.getDeclaredField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            astore 4 /* handle */
        28: .line 677
            aload 4 /* handle */
            invokestatic org.jruby.javasupport.Java.trySetAccessible:(Ljava/lang/reflect/AccessibleObject;)Z
            pop
        29: .line 678
            goto 31
      StackMap locals: top java.lang.Class java.lang.reflect.Field java.lang.Class java.lang.reflect.Field
      StackMap stack: java.lang.Exception
        30: pop
        31: .line 681
      StackMap locals:
      StackMap stack:
            aload 3 /* pi */
            putstatic org.jruby.util.ShellLauncher.ProcessImpl:Ljava/lang/Class;
        32: .line 682
            aload 4 /* handle */
            putstatic org.jruby.util.ShellLauncher.ProcessImpl_handle:Ljava/lang/reflect/Field;
        33: .line 684
            getstatic org.jruby.util.ShellLauncher.UNIXProcess_pid:Ljava/lang/reflect/Field;
            ifnull 39
        34: .line 685
            getstatic org.jruby.util.ShellLauncher.ProcessImpl_handle:Ljava/lang/reflect/Field;
            ifnull 37
        35: .line 687
            new org.jruby.util.ShellLauncher$1
            dup
            invokespecial org.jruby.util.ShellLauncher$1.<init>:()V
            astore 0 /* pidGetter */
        start local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
        36: .line 702
            goto 43
        end local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
        37: .line 704
      StackMap locals:
      StackMap stack:
            new org.jruby.util.ShellLauncher$2
            dup
            invokespecial org.jruby.util.ShellLauncher$2.<init>:()V
            astore 0 /* pidGetter */
        start local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
        38: .line 717
            goto 43
        end local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
      StackMap locals:
      StackMap stack:
        39: getstatic org.jruby.util.ShellLauncher.ProcessImpl_handle:Ljava/lang/reflect/Field;
            ifnull 42
        40: .line 719
            new org.jruby.util.ShellLauncher$3
            dup
            invokespecial org.jruby.util.ShellLauncher$3.<init>:()V
            astore 0 /* pidGetter */
        start local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
        41: .line 733
            goto 43
        end local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
        42: .line 735
      StackMap locals:
      StackMap stack:
            new org.jruby.util.ShellLauncher$4
            dup
            invokespecial org.jruby.util.ShellLauncher$4.<init>:()V
            astore 0 /* pidGetter */
        start local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
        43: .line 741
      StackMap locals: org.jruby.util.ShellLauncher$PidGetter java.lang.Class java.lang.reflect.Field java.lang.Class java.lang.reflect.Field
      StackMap stack:
            aload 0 /* pidGetter */
            putstatic org.jruby.util.ShellLauncher.PID_GETTER:Lorg/jruby/util/ShellLauncher$PidGetter;
        end local 4 // java.lang.reflect.Field handle
        end local 3 // java.lang.Class pi
        end local 2 // java.lang.reflect.Field pid
        end local 1 // java.lang.Class up
        end local 0 // org.jruby.util.ShellLauncher$PidGetter pidGetter
        44: .line 742
            return
      LocalVariableTable:
        Start  End  Slot       Name  Signature
           36   37     0  pidGetter  Lorg/jruby/util/ShellLauncher$PidGetter;
           38   39     0  pidGetter  Lorg/jruby/util/ShellLauncher$PidGetter;
           41   42     0  pidGetter  Lorg/jruby/util/ShellLauncher$PidGetter;
           43   44     0  pidGetter  Lorg/jruby/util/ShellLauncher$PidGetter;
           16   44     1         up  Ljava/lang/Class;
           17   44     2        pid  Ljava/lang/reflect/Field;
           25   44     3         pi  Ljava/lang/Class;
           26   44     4     handle  Ljava/lang/reflect/Field;
      Exception table:
        from    to  target  type
          17    20      21  Class java.lang.Exception
          26    29      30  Class java.lang.Exception

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.util.ShellLauncher this
         0: .line 82
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.jruby.util.ShellLauncher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/util/ShellLauncher;

  public static java.lang.String[] getCurrentEnv(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)[Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 220
            aload 0 /* runtime */
            getstatic java.util.Collections.EMPTY_LIST:Ljava/util/List;
            iconst_0
            invokestatic org.jruby.util.ShellLauncher.getModifiedEnv:(Lorg/jruby/Ruby;Ljava/util/Collection;Z)[Ljava/lang/String;
            areturn
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
    MethodParameters:
         Name  Flags
      runtime  

  private static java.lang.String[] getCurrentEnv(org.jruby.Ruby, java.util.Map);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Map mergeEnv
         0: .line 225
            aload 0 /* runtime */
            aload 1 /* mergeEnv */
            ifnonnull 1
            getstatic java.util.Collections.EMPTY_LIST:Ljava/util/List;
            goto 2
      StackMap locals:
      StackMap stack: org.jruby.Ruby
         1: aload 1 /* mergeEnv */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
      StackMap locals: org.jruby.Ruby java.util.Map
      StackMap stack: org.jruby.Ruby java.util.Collection
         2: iconst_0
            invokestatic org.jruby.util.ShellLauncher.getModifiedEnv:(Lorg/jruby/Ruby;Ljava/util/Collection;Z)[Ljava/lang/String;
            areturn
        end local 1 // java.util.Map mergeEnv
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0   runtime  Lorg/jruby/Ruby;
            0    3     1  mergeEnv  Ljava/util/Map;
    MethodParameters:
          Name  Flags
      runtime   
      mergeEnv  

  public static java.lang.String[] getModifiedEnv(org.jruby.Ruby, java.util.Collection, boolean);
    descriptor: (Lorg/jruby/Ruby;Ljava/util/Collection;Z)[Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=12, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.util.Collection mergeEnv
        start local 2 // boolean clearEnv
         0: .line 229
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            astore 3 /* context */
        start local 3 // org.jruby.runtime.ThreadContext context
         1: .line 232
            aload 3 /* context */
            invokevirtual org.jruby.runtime.ThreadContext.isEventHooksEnabled:()Z
            istore 4 /* traceEnabled */
        start local 4 // boolean traceEnabled
         2: .line 233
            aload 3 /* context */
            iconst_0
            invokevirtual org.jruby.runtime.ThreadContext.setEventHooksEnabled:(Z)V
         3: .line 237
            aconst_null
            astore 5 /* hash */
        start local 5 // org.jruby.RubyHash hash
         4: .line 238
            iload 2 /* clearEnv */
            ifeq 7
         5: .line 239
            aload 0 /* runtime */
            invokestatic org.jruby.RubyHash.newHash:(Lorg/jruby/Ruby;)Lorg/jruby/RubyHash;
            astore 5 /* hash */
         6: .line 240
            goto 8
         7: .line 241
      StackMap locals: org.jruby.runtime.ThreadContext int org.jruby.RubyHash
      StackMap stack:
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
            ldc "ENV"
            invokevirtual org.jruby.RubyClass.getConstant:(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            invokeinterface org.jruby.runtime.builtin.IRubyObject.dup:()Lorg/jruby/runtime/builtin/IRubyObject;
            checkcast org.jruby.RubyHash
            astore 5 /* hash */
         8: .line 244
      StackMap locals:
      StackMap stack:
            aload 1 /* mergeEnv */
            ifnull 34
         9: .line 245
            aload 1 /* mergeEnv */
            instanceof java.util.Set
            ifeq 20
        10: .line 246
            aload 1 /* mergeEnv */
            checkcast java.util.Set
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 18
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int org.jruby.RubyHash top java.util.Iterator
      StackMap stack:
        11: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 6 /* e */
        start local 6 // java.util.Map$Entry e
        12: .line 248
            aload 6 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            ifnonnull 14
        13: .line 249
            aload 0 /* runtime */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getStructClass:()Lorg/jruby/RubyClass;
            invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
            athrow
        14: .line 252
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int org.jruby.RubyHash java.util.Map$Entry java.util.Iterator
      StackMap stack:
            aload 6 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            ifnonnull 17
        15: .line 253
            aload 5 /* hash */
            aload 6 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual org.jruby.RubyHash.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        16: .line 254
            goto 18
        17: .line 256
      StackMap locals:
      StackMap stack:
            aload 5 /* hash */
            aload 6 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual org.jruby.RubyHash.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.util.Map$Entry e
        18: .line 246
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int org.jruby.RubyHash top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 11
        19: .line 258
            goto 34
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int org.jruby.RubyHash
      StackMap stack:
        20: aload 1 /* mergeEnv */
            instanceof org.jruby.RubyArray
            ifeq 34
        21: .line 259
            iconst_0
            istore 6 /* j */
        start local 6 // int j
        22: goto 33
        23: .line 260
      StackMap locals: int
      StackMap stack:
            aload 1 /* mergeEnv */
            checkcast org.jruby.RubyArray
            iload 6 /* j */
            i2l
            invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToArray:()Lorg/jruby/RubyArray;
            astore 7 /* e */
        start local 7 // org.jruby.RubyArray e
        24: .line 262
            aload 7 /* e */
            invokevirtual org.jruby.RubyArray.size:()I
            iconst_2
            if_icmpeq 26
        25: .line 263
            aload 0 /* runtime */
            ldc "env assignments must come in pairs"
            invokevirtual org.jruby.Ruby.newArgumentError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        26: .line 266
      StackMap locals: org.jruby.RubyArray
      StackMap stack:
            aload 7 /* e */
            lconst_0
            invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
            ifnonnull 28
        27: .line 267
            aload 0 /* runtime */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getStructClass:()Lorg/jruby/RubyClass;
            invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
            athrow
        28: .line 270
      StackMap locals:
      StackMap stack:
            aload 7 /* e */
            lconst_1
            invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
            ifnonnull 31
        29: .line 271
            aload 5 /* hash */
            aload 7 /* e */
            lconst_0
            invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual org.jruby.RubyHash.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        30: .line 272
            goto 32
        31: .line 274
      StackMap locals:
      StackMap stack:
            aload 5 /* hash */
            aload 7 /* e */
            lconst_0
            invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            aload 7 /* e */
            lconst_1
            invokevirtual org.jruby.RubyArray.eltOk:(J)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual org.jruby.RubyHash.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // org.jruby.RubyArray e
        32: .line 259
      StackMap locals:
      StackMap stack:
            iinc 6 /* j */ 1
      StackMap locals:
      StackMap stack:
        33: iload 6 /* j */
            aload 1 /* mergeEnv */
            invokeinterface java.util.Collection.size:()I
            if_icmplt 23
        end local 6 // int j
        34: .line 279
      StackMap locals:
      StackMap stack:
            aload 5 /* hash */
            invokevirtual org.jruby.RubyHash.size:()I
            anewarray java.lang.String
            astore 6 /* ret */
        start local 6 // java.lang.String[] ret
        35: .line 281
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        36: .line 282
            aload 5 /* hash */
            invokevirtual org.jruby.RubyHash.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 44
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int org.jruby.RubyHash java.lang.String[] int top java.util.Iterator
      StackMap stack:
        37: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 8 /* e */
        start local 8 // java.util.Map$Entry e
        38: .line 284
            aload 8 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            ifnonnull 40
        39: .line 285
            aload 0 /* runtime */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getStructClass:()Lorg/jruby/RubyClass;
            invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
            athrow
        40: .line 288
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int org.jruby.RubyHash java.lang.String[] int java.util.Map$Entry java.util.Iterator
      StackMap stack:
            aload 8 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            ifnonnull 42
        41: .line 289
            goto 44
        42: .line 291
      StackMap locals:
      StackMap stack:
            aload 6 /* ret */
            iload 7 /* i */
            new java.lang.StringBuilder
            dup
            aload 8 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 61
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 8 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        43: .line 292
            iinc 7 /* i */ 1
        end local 8 // java.util.Map$Entry e
        44: .line 282
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int org.jruby.RubyHash java.lang.String[] int top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 37
        45: .line 295
            aload 6 /* ret */
            iload 7 /* i */
            invokestatic org.jruby.util.ShellLauncher.arrayOfLength:([Ljava/lang/String;I)[Ljava/lang/String;
            astore 11
        46: .line 298
            aload 3 /* context */
            iload 4 /* traceEnabled */
            invokevirtual org.jruby.runtime.ThreadContext.setEventHooksEnabled:(Z)V
        47: .line 295
            aload 11
            areturn
        end local 7 // int i
        end local 6 // java.lang.String[] ret
        end local 5 // org.jruby.RubyHash hash
        48: .line 297
      StackMap locals: org.jruby.Ruby java.util.Collection int org.jruby.runtime.ThreadContext int
      StackMap stack: java.lang.Throwable
            astore 10
        49: .line 298
            aload 3 /* context */
            iload 4 /* traceEnabled */
            invokevirtual org.jruby.runtime.ThreadContext.setEventHooksEnabled:(Z)V
        50: .line 299
            aload 10
            athrow
        end local 4 // boolean traceEnabled
        end local 3 // org.jruby.runtime.ThreadContext context
        end local 2 // boolean clearEnv
        end local 1 // java.util.Collection mergeEnv
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   51     0       runtime  Lorg/jruby/Ruby;
            0   51     1      mergeEnv  Ljava/util/Collection;
            0   51     2      clearEnv  Z
            1   51     3       context  Lorg/jruby/runtime/ThreadContext;
            2   51     4  traceEnabled  Z
            4   48     5          hash  Lorg/jruby/RubyHash;
           12   18     6             e  Ljava/util/Map$Entry;
           22   34     6             j  I
           24   32     7             e  Lorg/jruby/RubyArray;
           35   48     6           ret  [Ljava/lang/String;
           36   48     7             i  I
           38   44     8             e  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/String;>;
      Exception table:
        from    to  target  type
           3    46      48  any
    MethodParameters:
          Name  Flags
      runtime   
      mergeEnv  
      clearEnv  

  private static java.lang.String[] arrayOfLength(java.lang.String[], int);
    descriptor: ([Ljava/lang/String;I)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.String[] ary
        start local 1 // int len
         0: .line 303
            iload 1 /* len */
            aload 0 /* ary */
            arraylength
            if_icmpne 1
            aload 0 /* ary */
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* ary */
            iload 1 /* len */
            invokestatic java.util.Arrays.copyOf:([Ljava/lang/Object;I)[Ljava/lang/Object;
            checkcast java.lang.String[]
      StackMap locals:
      StackMap stack: java.lang.String[]
         2: areturn
        end local 1 // int len
        end local 0 // java.lang.String[] ary
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0   ary  [Ljava/lang/String;
            0    3     1   len  I
    MethodParameters:
      Name  Flags
      ary   final
      len   final

  private static boolean filenameIsPathSearchable(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.lang.String fname
        start local 1 // boolean forExec
         0: .line 307
            aload 0 /* fname */
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 4
         1: .line 308
            aload 0 /* fname */
            ldc "./"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 4
         2: .line 309
            aload 0 /* fname */
            ldc "../"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 4
         3: .line 310
            iload 1 /* forExec */
            ifeq 5
            aload 0 /* fname */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpeq 5
         4: .line 311
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         5: .line 313
      StackMap locals:
      StackMap stack:
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 12
         6: .line 314
            aload 0 /* fname */
            ldc "\\"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 11
         7: .line 315
            aload 0 /* fname */
            ldc ".\\"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 11
         8: .line 316
            aload 0 /* fname */
            ldc "..\\"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 11
         9: .line 317
            aload 0 /* fname */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmple 10
            aload 0 /* fname */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 58
            if_icmpeq 11
        10: .line 318
      StackMap locals:
      StackMap stack:
            iload 1 /* forExec */
            ifeq 12
            aload 0 /* fname */
            bipush 92
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpeq 12
        11: .line 319
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        12: .line 322
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // boolean forExec
        end local 0 // java.lang.String fname
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0    fname  Ljava/lang/String;
            0   13     1  forExec  Z
    MethodParameters:
         Name  Flags
      fname    
      forExec  

  private static java.io.File tryFile(org.jruby.Ruby, java.lang.String, java.lang.String);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String fdir
        start local 2 // java.lang.String fname
         0: .line 327
            aload 1 /* fdir */
            ifnonnull 3
         1: .line 328
            new java.io.File
            dup
            aload 2 /* fname */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* pathFile */
        start local 3 // java.io.File pathFile
         2: .line 329
            goto 4
        end local 3 // java.io.File pathFile
         3: .line 330
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 1 /* fdir */
            aload 2 /* fname */
            invokespecial java.io.File.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 3 /* pathFile */
        start local 3 // java.io.File pathFile
         4: .line 333
      StackMap locals: java.io.File
      StackMap stack:
            aload 3 /* pathFile */
            invokevirtual java.io.File.isAbsolute:()Z
            ifne 6
         5: .line 334
            new java.io.File
            dup
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            aload 3 /* pathFile */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            astore 3 /* pathFile */
         6: .line 337
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            new java.lang.StringBuilder
            dup
            ldc "Trying file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* pathFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
         7: .line 338
            aload 3 /* pathFile */
            invokevirtual java.io.File.exists:()Z
            ifeq 8
            aload 3 /* pathFile */
            areturn
         8: .line 340
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 3 // java.io.File pathFile
        end local 2 // java.lang.String fname
        end local 1 // java.lang.String fdir
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0   runtime  Lorg/jruby/Ruby;
            0    9     1      fdir  Ljava/lang/String;
            0    9     2     fname  Ljava/lang/String;
            2    3     3  pathFile  Ljava/io/File;
            4    9     3  pathFile  Ljava/io/File;
    MethodParameters:
         Name  Flags
      runtime  
      fdir     
      fname    

  private static boolean withExeSuffix(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // java.lang.String fname
         0: .line 344
            aload 0 /* fname */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            astore 1 /* lowerCaseFname */
        start local 1 // java.lang.String lowerCaseFname
         1: .line 345
            getstatic org.jruby.util.ShellLauncher.WINDOWS_EXE_SUFFIXES:[Ljava/lang/String;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 6
      StackMap locals: java.lang.String java.lang.String top int int java.lang.String[]
      StackMap stack:
         2: aload 5
            iload 3
            aaload
            astore 2 /* suffix */
        start local 2 // java.lang.String suffix
         3: .line 346
            aload 1 /* lowerCaseFname */
            aload 2 /* suffix */
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 347
            iconst_1
            ireturn
        end local 2 // java.lang.String suffix
         5: .line 345
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         6: iload 3
            iload 4
            if_icmplt 2
         7: .line 350
            iconst_0
            ireturn
        end local 1 // java.lang.String lowerCaseFname
        end local 0 // java.lang.String fname
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0           fname  Ljava/lang/String;
            1    8     1  lowerCaseFname  Ljava/lang/String;
            3    5     2          suffix  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      fname  

  private static java.io.File isValidFile(org.jruby.Ruby, java.lang.String, java.lang.String, boolean);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;Z)Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String fdir
        start local 2 // java.lang.String fname
        start local 3 // boolean isExec
         0: .line 354
            aconst_null
            astore 4 /* validFile */
        start local 4 // java.io.File validFile
         1: .line 355
            iload 3 /* isExec */
            ifeq 13
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 13
         2: .line 356
            aload 2 /* fname */
            invokestatic org.jruby.util.ShellLauncher.withExeSuffix:(Ljava/lang/String;)Z
            ifeq 5
         3: .line 357
            aload 0 /* runtime */
            aload 1 /* fdir */
            aload 2 /* fname */
            invokestatic org.jruby.util.ShellLauncher.tryFile:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 4 /* validFile */
         4: .line 358
            goto 19
         5: .line 359
      StackMap locals: java.io.File
      StackMap stack:
            getstatic org.jruby.util.ShellLauncher.WINDOWS_EXE_SUFFIXES:[Ljava/lang/String;
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 11
      StackMap locals: org.jruby.Ruby java.lang.String java.lang.String int java.io.File top int int java.lang.String[]
      StackMap stack:
         6: aload 8
            iload 6
            aaload
            astore 5 /* suffix */
        start local 5 // java.lang.String suffix
         7: .line 360
            aload 0 /* runtime */
            aload 1 /* fdir */
            new java.lang.StringBuilder
            dup
            aload 2 /* fname */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* suffix */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.jruby.util.ShellLauncher.tryFile:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 4 /* validFile */
         8: .line 361
            aload 4 /* validFile */
            ifnull 10
         9: .line 363
            goto 19
        end local 5 // java.lang.String suffix
        10: .line 359
      StackMap locals:
      StackMap stack:
            iinc 6 1
      StackMap locals:
      StackMap stack:
        11: iload 6
            iload 7
            if_icmplt 6
        12: .line 367
            goto 19
        13: .line 368
      StackMap locals: org.jruby.Ruby java.lang.String java.lang.String int java.io.File
      StackMap stack:
            aload 0 /* runtime */
            aload 1 /* fdir */
            aload 2 /* fname */
            invokestatic org.jruby.util.ShellLauncher.tryFile:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            astore 4 /* validFile */
        14: .line 369
            aload 4 /* validFile */
            ifnull 19
        15: .line 370
            aload 4 /* validFile */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 17
        16: .line 371
            aconst_null
            areturn
        17: .line 373
      StackMap locals:
      StackMap stack:
            iload 3 /* isExec */
            ifeq 19
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getPosix:()Ljnr/posix/POSIX;
            aload 4 /* validFile */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokeinterface jnr.posix.POSIX.stat:(Ljava/lang/String;)Ljnr/posix/FileStat;
            invokeinterface jnr.posix.FileStat.isExecutable:()Z
            ifne 19
        18: .line 374
            aload 0 /* runtime */
            aload 4 /* validFile */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newErrnoEACCESError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        19: .line 378
      StackMap locals:
      StackMap stack:
            aload 4 /* validFile */
            areturn
        end local 4 // java.io.File validFile
        end local 3 // boolean isExec
        end local 2 // java.lang.String fname
        end local 1 // java.lang.String fdir
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0    runtime  Lorg/jruby/Ruby;
            0   20     1       fdir  Ljava/lang/String;
            0   20     2      fname  Ljava/lang/String;
            0   20     3     isExec  Z
            1   20     4  validFile  Ljava/io/File;
            7   10     5     suffix  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      runtime  
      fdir     
      fname    
      isExec   

  private static java.io.File isValidFile(org.jruby.Ruby, java.lang.String, boolean);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Z)Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String fname
        start local 2 // boolean isExec
         0: .line 382
            aconst_null
            astore 3 /* fdir */
        start local 3 // java.lang.String fdir
         1: .line 383
            aload 0 /* runtime */
            aload 3 /* fdir */
            aload 1 /* fname */
            iload 2 /* isExec */
            invokestatic org.jruby.util.ShellLauncher.isValidFile:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;Z)Ljava/io/File;
            areturn
        end local 3 // java.lang.String fdir
        end local 2 // boolean isExec
        end local 1 // java.lang.String fname
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  runtime  Lorg/jruby/Ruby;
            0    2     1    fname  Ljava/lang/String;
            0    2     2   isExec  Z
            1    2     3     fdir  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      runtime  
      fname    
      isExec   

  private static java.io.File findPathFile(org.jruby.Ruby, java.lang.String, java.lang.String[], boolean);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;[Ljava/lang/String;Z)Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String fname
        start local 2 // java.lang.String[] path
        start local 3 // boolean isExec
         0: .line 387
            aconst_null
            astore 4 /* pathFile */
        start local 4 // java.io.File pathFile
         1: .line 388
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 3
            aload 1 /* fname */
            ldc "\""
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
            aload 1 /* fname */
            ldc "\""
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 389
            aload 1 /* fname */
            iconst_1
            aload 1 /* fname */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 1 /* fname */
         3: .line 391
      StackMap locals: java.io.File
      StackMap stack:
            aload 1 /* fname */
            iload 3 /* isExec */
            invokestatic org.jruby.util.ShellLauncher.filenameIsPathSearchable:(Ljava/lang/String;Z)Z
            istore 5 /* doPathSearch */
        start local 5 // boolean doPathSearch
         4: .line 392
            iload 5 /* doPathSearch */
            ifeq 14
         5: .line 393
            aload 2 /* path */
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 12
      StackMap locals: org.jruby.Ruby java.lang.String java.lang.String[] int java.io.File int top int int java.lang.String[]
      StackMap stack:
         6: aload 9
            iload 7
            aaload
            astore 6 /* fdir */
        start local 6 // java.lang.String fdir
         7: .line 398
            aload 0 /* runtime */
            aload 6 /* fdir */
            aload 1 /* fname */
            iload 3 /* isExec */
            invokestatic org.jruby.util.ShellLauncher.isValidFile:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;Z)Ljava/io/File;
            astore 4 /* pathFile */
         8: .line 399
            aload 4 /* pathFile */
            ifnull 11
         9: .line 400
            goto 15
        10: .line 402
      StackMap locals: org.jruby.Ruby java.lang.String java.lang.String[] int java.io.File int java.lang.String int int java.lang.String[]
      StackMap stack: java.lang.SecurityException
            pop
        end local 6 // java.lang.String fdir
        11: .line 393
      StackMap locals: org.jruby.Ruby java.lang.String java.lang.String[] int java.io.File int top int int java.lang.String[]
      StackMap stack:
            iinc 7 1
      StackMap locals:
      StackMap stack:
        12: iload 7
            iload 8
            if_icmplt 6
        13: .line 407
            goto 15
        14: .line 408
      StackMap locals: org.jruby.Ruby java.lang.String java.lang.String[] int java.io.File int
      StackMap stack:
            aload 0 /* runtime */
            aload 1 /* fname */
            iload 3 /* isExec */
            invokestatic org.jruby.util.ShellLauncher.isValidFile:(Lorg/jruby/Ruby;Ljava/lang/String;Z)Ljava/io/File;
            astore 4 /* pathFile */
        15: .line 410
      StackMap locals:
      StackMap stack:
            aload 4 /* pathFile */
            areturn
        end local 5 // boolean doPathSearch
        end local 4 // java.io.File pathFile
        end local 3 // boolean isExec
        end local 2 // java.lang.String[] path
        end local 1 // java.lang.String fname
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   16     0       runtime  Lorg/jruby/Ruby;
            0   16     1         fname  Ljava/lang/String;
            0   16     2          path  [Ljava/lang/String;
            0   16     3        isExec  Z
            1   16     4      pathFile  Ljava/io/File;
            4   16     5  doPathSearch  Z
            7   11     6          fdir  Ljava/lang/String;
      Exception table:
        from    to  target  type
           7     9      10  Class java.lang.SecurityException
    MethodParameters:
         Name  Flags
      runtime  
      fname    
      path     
      isExec   

  public static java.io.File findPathExecutable(org.jruby.Ruby, java.lang.String);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;)Ljava/io/File;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String fname
         0: .line 414
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
            ldc "ENV"
            invokevirtual org.jruby.RubyClass.getConstant:(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            checkcast org.jruby.RubyHash
            astore 2 /* env */
        start local 2 // org.jruby.RubyHash env
         1: .line 415
            aload 2 /* env */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 0 /* runtime */
            ldc "PATH"
            invokestatic org.jruby.RubyString.newString:(Lorg/jruby/Ruby;Ljava/lang/String;)Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyHash.op_aref:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 3 /* pathObject */
        start local 3 // org.jruby.runtime.builtin.IRubyObject pathObject
         2: .line 416
            aload 0 /* runtime */
            aload 1 /* fname */
            aload 3 /* pathObject */
            invokestatic org.jruby.util.ShellLauncher.findPathExecutable:(Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/io/File;
            areturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject pathObject
        end local 2 // org.jruby.RubyHash env
        end local 1 // java.lang.String fname
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0     runtime  Lorg/jruby/Ruby;
            0    3     1       fname  Ljava/lang/String;
            1    3     2         env  Lorg/jruby/RubyHash;
            2    3     3  pathObject  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  
      fname    

  public static java.io.File findPathExecutable(org.jruby.Ruby, java.lang.String, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/io/File;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String fname
        start local 2 // org.jruby.runtime.builtin.IRubyObject pathObject
         0: .line 423
            aload 2 /* pathObject */
            ifnull 1
            aload 2 /* pathObject */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifeq 3
         1: .line 424
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
            ldc "ENV"
            invokevirtual org.jruby.RubyClass.getConstant:(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            checkcast org.jruby.RubyHash
            astore 4 /* env */
        start local 4 // org.jruby.RubyHash env
         2: .line 425
            aload 4 /* env */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 0 /* runtime */
            ldc "PATH"
            invokestatic org.jruby.RubyString.newString:(Lorg/jruby/Ruby;Ljava/lang/String;)Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyHash.op_aref:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 2 /* pathObject */
        end local 4 // org.jruby.RubyHash env
         3: .line 428
      StackMap locals:
      StackMap stack:
            aload 2 /* pathObject */
            ifnonnull 6
         4: .line 429
            getstatic org.jruby.util.ShellLauncher.DEFAULT_PATH:[Ljava/lang/String;
            astore 3 /* pathNodes */
        start local 3 // java.lang.String[] pathNodes
         5: .line 430
            goto 11
        end local 3 // java.lang.String[] pathNodes
         6: .line 433
      StackMap locals:
      StackMap stack:
            ldc "path.separator"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* pathSeparator */
        start local 4 // java.lang.String pathSeparator
         7: .line 434
            aload 2 /* pathObject */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 5 /* path */
        start local 5 // java.lang.String path
         8: .line 435
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 10
         9: .line 437
            new java.lang.StringBuilder
            dup
            ldc "."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* pathSeparator */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* path */
        10: .line 439
      StackMap locals: org.jruby.Ruby java.lang.String org.jruby.runtime.builtin.IRubyObject top java.lang.String java.lang.String
      StackMap stack:
            aload 5 /* path */
            aload 4 /* pathSeparator */
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* pathNodes */
        end local 5 // java.lang.String path
        end local 4 // java.lang.String pathSeparator
        start local 3 // java.lang.String[] pathNodes
        11: .line 441
      StackMap locals: org.jruby.Ruby java.lang.String org.jruby.runtime.builtin.IRubyObject java.lang.String[]
      StackMap stack:
            aload 0 /* runtime */
            aload 1 /* fname */
            aload 3 /* pathNodes */
            iconst_1
            invokestatic org.jruby.util.ShellLauncher.findPathFile:(Lorg/jruby/Ruby;Ljava/lang/String;[Ljava/lang/String;Z)Ljava/io/File;
            areturn
        end local 3 // java.lang.String[] pathNodes
        end local 2 // org.jruby.runtime.builtin.IRubyObject pathObject
        end local 1 // java.lang.String fname
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0        runtime  Lorg/jruby/Ruby;
            0   12     1          fname  Ljava/lang/String;
            0   12     2     pathObject  Lorg/jruby/runtime/builtin/IRubyObject;
            5    6     3      pathNodes  [Ljava/lang/String;
           11   12     3      pathNodes  [Ljava/lang/String;
            2    3     4            env  Lorg/jruby/RubyHash;
            7   11     4  pathSeparator  Ljava/lang/String;
            8   11     5           path  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      runtime     
      fname       
      pathObject  

  public static int runAndWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         0: .line 445
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getOutputStream:()Ljava/io/PrintStream;
            invokestatic org.jruby.util.ShellLauncher.runAndWait:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;)I
            ireturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  
      rawArgs  

  public static long[] runAndWaitPid(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)[J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         0: .line 449
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getOutputStream:()Ljava/io/PrintStream;
            iconst_1
            invokestatic org.jruby.util.ShellLauncher.runAndWaitPid:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;Z)[J
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  
      rawArgs  

  public static long runWithoutWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         0: .line 453
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getOutputStream:()Ljava/io/PrintStream;
            invokestatic org.jruby.util.ShellLauncher.runWithoutWait:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;)J
            lreturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  
      rawArgs  

  public static int runExternalAndWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.util.Map);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // java.util.Map mergeEnv
         0: .line 457
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getOutputStream:()Ljava/io/PrintStream;
            astore 3 /* output */
        start local 3 // java.io.OutputStream output
         1: .line 458
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getErrorStream:()Ljava/io/PrintStream;
            astore 4 /* error */
        start local 4 // java.io.OutputStream error
         2: .line 459
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getInputStream:()Ljava/io/InputStream;
            astore 5 /* input */
        start local 5 // java.io.InputStream input
         3: .line 461
            new java.io.File
            dup
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 6 /* pwd */
        start local 6 // java.io.File pwd
         4: .line 462
            new org.jruby.util.ShellLauncher$LaunchConfig
            dup
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            iconst_1
            invokespecial org.jruby.util.ShellLauncher$LaunchConfig.<init>:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)V
            astore 7 /* cfg */
        start local 7 // org.jruby.util.ShellLauncher$LaunchConfig cfg
         5: .line 467
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.shouldRunInShell:()Z
            ifeq 10
         6: .line 468
            aload 0 /* runtime */
            ldc "Launching with shell"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
         7: .line 470
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutableForShell:()V
         8: .line 471
            aload 0 /* runtime */
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.getExecArgs:()[Ljava/lang/String;
            aload 0 /* runtime */
            aload 2 /* mergeEnv */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 6 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 8 /* process */
        start local 8 // java.lang.Process process
         9: .line 472
            goto 12
        end local 8 // java.lang.Process process
        10: .line 473
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack:
            aload 0 /* runtime */
            ldc "Launching directly (no shell)"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
        11: .line 474
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutableForDirect:()V
        12: .line 477
      StackMap locals:
      StackMap stack:
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.getExecArgs:()[Ljava/lang/String;
            astore 9 /* execArgs */
        start local 9 // java.lang.String[] execArgs
        13: .line 478
            aload 0 /* runtime */
            aload 9 /* execArgs */
            invokestatic org.jruby.util.ShellLauncher.changeDirInsideJar:(Lorg/jruby/Ruby;[Ljava/lang/String;)Z
            ifeq 15
        14: .line 479
            new java.io.File
            dup
            ldc "user.dir"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 6 /* pwd */
        15: .line 481
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig top java.lang.String[]
      StackMap stack:
            aload 0 /* runtime */
            aload 9 /* execArgs */
            aload 0 /* runtime */
            aload 2 /* mergeEnv */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 6 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 8 /* process */
        end local 9 // java.lang.String[] execArgs
        start local 8 // java.lang.Process process
        16: .line 482
            goto 19
        end local 8 // java.lang.Process process
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack: java.lang.SecurityException
        17: astore 9 /* se */
        start local 9 // java.lang.SecurityException se
        18: .line 483
            aload 0 /* runtime */
            aload 9 /* se */
            invokevirtual java.lang.SecurityException.getLocalizedMessage:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newSecurityError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 9 // java.lang.SecurityException se
        start local 8 // java.lang.Process process
        19: .line 485
      StackMap locals: java.lang.Process
      StackMap stack:
            aload 0 /* runtime */
            aload 8 /* process */
            aload 5 /* input */
            aload 3 /* output */
            aload 4 /* error */
            invokestatic org.jruby.util.ShellLauncher.handleStreams:(Lorg/jruby/Ruby;Ljava/lang/Process;Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/io/OutputStream;)V
        20: .line 486
            aload 8 /* process */
            invokevirtual java.lang.Process.waitFor:()I
        21: ireturn
        end local 8 // java.lang.Process process
        22: .line 487
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack: java.io.IOException
            astore 8 /* e */
        start local 8 // java.io.IOException e
        23: .line 488
            aload 0 /* runtime */
            aload 8 /* e */
            invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 8 // java.io.IOException e
        24: .line 489
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
        25: .line 490
            aload 0 /* runtime */
            ldc "unexpected interrupt"
            invokevirtual org.jruby.Ruby.newThreadError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 7 // org.jruby.util.ShellLauncher$LaunchConfig cfg
        end local 6 // java.io.File pwd
        end local 5 // java.io.InputStream input
        end local 4 // java.io.OutputStream error
        end local 3 // java.io.OutputStream output
        end local 2 // java.util.Map mergeEnv
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   26     0   runtime  Lorg/jruby/Ruby;
            0   26     1   rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0   26     2  mergeEnv  Ljava/util/Map;
            1   26     3    output  Ljava/io/OutputStream;
            2   26     4     error  Ljava/io/OutputStream;
            3   26     5     input  Ljava/io/InputStream;
            4   26     6       pwd  Ljava/io/File;
            5   26     7       cfg  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            9   10     8   process  Ljava/lang/Process;
           16   17     8   process  Ljava/lang/Process;
           19   22     8   process  Ljava/lang/Process;
           13   16     9  execArgs  [Ljava/lang/String;
           18   19     9        se  Ljava/lang/SecurityException;
           23   24     8         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           5    16      17  Class java.lang.SecurityException
           5    21      22  Class java.io.IOException
           5    21      24  Class java.lang.InterruptedException
    MethodParameters:
          Name  Flags
      runtime   
      rawArgs   
      mergeEnv  

  public static long runExternalWithoutWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject env
        start local 2 // org.jruby.runtime.builtin.IRubyObject prog
        start local 3 // org.jruby.runtime.builtin.IRubyObject options
        start local 4 // org.jruby.runtime.builtin.IRubyObject args
         0: .line 495
            aload 0 /* runtime */
            aload 1 /* env */
            aload 2 /* prog */
            aload 3 /* options */
            aload 4 /* args */
            iconst_0
            invokestatic org.jruby.util.ShellLauncher.runExternal:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Z)J
            lreturn
        end local 4 // org.jruby.runtime.builtin.IRubyObject args
        end local 3 // org.jruby.runtime.builtin.IRubyObject options
        end local 2 // org.jruby.runtime.builtin.IRubyObject prog
        end local 1 // org.jruby.runtime.builtin.IRubyObject env
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1      env  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2     prog  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     3  options  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4     args  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  
      env      
      prog     
      options  
      args     

  public static long runExternal(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, boolean);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Z)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=14, args_size=6
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject env
        start local 2 // org.jruby.runtime.builtin.IRubyObject prog
        start local 3 // org.jruby.runtime.builtin.IRubyObject options
        start local 4 // org.jruby.runtime.builtin.IRubyObject args
        start local 5 // boolean wait
         0: .line 499
            aload 1 /* env */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifne 1
            aload 1 /* env */
            instanceof java.util.Map
            ifne 2
         1: .line 500
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 1 /* env */
         2: .line 503
      StackMap locals:
      StackMap stack:
            aload 4 /* args */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToArray:()Lorg/jruby/RubyArray;
            invokevirtual org.jruby.RubyArray.toJavaArray:()[Lorg/jruby/runtime/builtin/IRubyObject;
            astore 6 /* rawArgs */
        start local 6 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         3: .line 505
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getOutputStream:()Ljava/io/PrintStream;
            astore 7 /* output */
        start local 7 // java.io.OutputStream output
         4: .line 506
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getErrorStream:()Ljava/io/PrintStream;
            astore 8 /* error */
        start local 8 // java.io.OutputStream error
         5: .line 507
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getInputStream:()Ljava/io/InputStream;
            astore 9 /* input */
        start local 9 // java.io.InputStream input
         6: .line 509
            new java.io.File
            dup
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 10 /* pwd */
        start local 10 // java.io.File pwd
         7: .line 510
            new org.jruby.util.ShellLauncher$LaunchConfig
            dup
            aload 0 /* runtime */
            aload 6 /* rawArgs */
            iconst_1
            invokespecial org.jruby.util.ShellLauncher$LaunchConfig.<init>:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)V
            astore 11 /* cfg */
        start local 11 // org.jruby.util.ShellLauncher$LaunchConfig cfg
         8: .line 515
            aload 11 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.shouldRunInShell:()Z
            ifeq 12
         9: .line 516
            aload 0 /* runtime */
            ldc "Launching with shell"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
        10: .line 519
            aload 11 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutableForShell:()V
        11: .line 520
            goto 14
        12: .line 521
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int org.jruby.runtime.builtin.IRubyObject[] java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack:
            aload 0 /* runtime */
            ldc "Launching directly (no shell)"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
        13: .line 522
            aload 11 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutableForDirect:()V
        14: .line 525
      StackMap locals:
      StackMap stack:
            aload 11 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.getExecArgs:()[Ljava/lang/String;
            astore 13 /* execArgs */
        start local 13 // java.lang.String[] execArgs
        15: .line 526
            aload 0 /* runtime */
            aload 13 /* execArgs */
            invokestatic org.jruby.util.ShellLauncher.changeDirInsideJar:(Lorg/jruby/Ruby;[Ljava/lang/String;)Z
            ifeq 17
        16: .line 527
            new java.io.File
            dup
            ldc "."
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 10 /* pwd */
        17: .line 529
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int org.jruby.runtime.builtin.IRubyObject[] java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig top java.lang.String[]
      StackMap stack:
            aload 0 /* runtime */
            aload 13 /* execArgs */
            aload 0 /* runtime */
            aload 1 /* env */
            checkcast java.util.Map
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 10 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 12 /* process */
        end local 13 // java.lang.String[] execArgs
        start local 12 // java.lang.Process process
        18: .line 530
            goto 21
        end local 12 // java.lang.Process process
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int org.jruby.runtime.builtin.IRubyObject[] java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack: java.lang.SecurityException
        19: astore 13 /* se */
        start local 13 // java.lang.SecurityException se
        20: .line 531
            aload 0 /* runtime */
            aload 13 /* se */
            invokevirtual java.lang.SecurityException.getLocalizedMessage:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newSecurityError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 13 // java.lang.SecurityException se
        start local 12 // java.lang.Process process
        21: .line 534
      StackMap locals: java.lang.Process
      StackMap stack:
            iload 5 /* wait */
            ifeq 27
        22: .line 535
            aload 0 /* runtime */
            aload 12 /* process */
            aload 9 /* input */
            aload 7 /* output */
            aload 8 /* error */
            invokestatic org.jruby.util.ShellLauncher.handleStreams:(Lorg/jruby/Ruby;Ljava/lang/Process;Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/io/OutputStream;)V
        23: .line 537
            aload 12 /* process */
            invokevirtual java.lang.Process.waitFor:()I
            i2l
        24: lreturn
        25: .line 538
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
        26: .line 539
            aload 0 /* runtime */
            ldc "unexpected interrupt"
            invokevirtual org.jruby.Ruby.newThreadError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        27: .line 542
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            aload 12 /* process */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getOutputStream:()Ljava/io/PrintStream;
            aload 8 /* error */
            invokestatic org.jruby.util.ShellLauncher.handleStreamsNonblocking:(Lorg/jruby/Ruby;Ljava/lang/Process;Ljava/io/OutputStream;Ljava/io/OutputStream;)V
        28: .line 543
            aload 12 /* process */
            invokestatic org.jruby.util.ShellLauncher.getPidFromProcess:(Ljava/lang/Process;)J
        29: lreturn
        end local 12 // java.lang.Process process
        30: .line 545
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject int org.jruby.runtime.builtin.IRubyObject[] java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack: java.io.IOException
            astore 12 /* e */
        start local 12 // java.io.IOException e
        31: .line 546
            aload 0 /* runtime */
            aload 12 /* e */
            invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 12 // java.io.IOException e
        end local 11 // org.jruby.util.ShellLauncher$LaunchConfig cfg
        end local 10 // java.io.File pwd
        end local 9 // java.io.InputStream input
        end local 8 // java.io.OutputStream error
        end local 7 // java.io.OutputStream output
        end local 6 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 5 // boolean wait
        end local 4 // org.jruby.runtime.builtin.IRubyObject args
        end local 3 // org.jruby.runtime.builtin.IRubyObject options
        end local 2 // org.jruby.runtime.builtin.IRubyObject prog
        end local 1 // org.jruby.runtime.builtin.IRubyObject env
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   32     0   runtime  Lorg/jruby/Ruby;
            0   32     1       env  Lorg/jruby/runtime/builtin/IRubyObject;
            0   32     2      prog  Lorg/jruby/runtime/builtin/IRubyObject;
            0   32     3   options  Lorg/jruby/runtime/builtin/IRubyObject;
            0   32     4      args  Lorg/jruby/runtime/builtin/IRubyObject;
            0   32     5      wait  Z
            3   32     6   rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            4   32     7    output  Ljava/io/OutputStream;
            5   32     8     error  Ljava/io/OutputStream;
            6   32     9     input  Ljava/io/InputStream;
            7   32    10       pwd  Ljava/io/File;
            8   32    11       cfg  Lorg/jruby/util/ShellLauncher$LaunchConfig;
           18   19    12   process  Ljava/lang/Process;
           21   30    12   process  Ljava/lang/Process;
           15   18    13  execArgs  [Ljava/lang/String;
           20   21    13        se  Ljava/lang/SecurityException;
           31   32    12         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8    18      19  Class java.lang.SecurityException
          23    24      25  Class java.lang.InterruptedException
           8    24      30  Class java.io.IOException
          25    29      30  Class java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      env      
      prog     
      options  
      args     
      wait     

  private static boolean changeDirInsideJar(org.jruby.Ruby, java.lang.String[]);
    descriptor: (Lorg/jruby/Ruby;[Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String[] args
         0: .line 552
            aload 0 /* runtime */
            aload 1 /* args */
            aload 1 /* args */
            arraylength
            iconst_1
            isub
            aaload
            invokestatic org.jruby.util.ShellLauncher.changeDirInsideJar:(Lorg/jruby/Ruby;Ljava/lang/String;)Ljava/lang/String;
            dup
            astore 2 /* arg */
        start local 2 // java.lang.String arg
         1: ifnull 4
         2: .line 553
            aload 1 /* args */
            aload 1 /* args */
            arraylength
            iconst_1
            isub
            aload 2 /* arg */
            aastore
         3: .line 554
            iconst_1
            ireturn
         4: .line 556
      StackMap locals: java.lang.String
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // java.lang.String arg
        end local 1 // java.lang.String[] args
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  runtime  Lorg/jruby/Ruby;
            0    5     1     args  [Ljava/lang/String;
            1    5     2      arg  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      runtime  final
      args     final

  public static java.lang.String changeDirInsideJar(org.jruby.Ruby, java.lang.String);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String arg
         0: .line 561
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            ldc "uri:classloader:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 2
            aload 1 /* arg */
            ldc "org.jruby.Main"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 2
         1: .line 562
            aload 1 /* arg */
            ldc "org.jruby.Main"
            new java.lang.StringBuilder
            dup
            ldc "org.jruby.Main -C "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.jruby.util.StringSupport.replaceFirst:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/CharSequence;
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            areturn
         2: .line 564
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String arg
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  runtime  Lorg/jruby/Ruby;
            0    3     1      arg  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      runtime  final
      arg      final

  public static java.lang.Process buildProcess(org.jruby.Ruby, java.lang.String[], java.lang.String[], java.io.File);
    descriptor: (Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String[] args
        start local 2 // java.lang.String[] env
        start local 3 // java.io.File pwd
         0: .line 568
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getPosix:()Ljnr/posix/POSIX;
            aload 1 /* args */
            invokeinterface jnr.posix.POSIX.newProcessMaker:([Ljava/lang/String;)Ljnr/posix/util/ProcessMaker;
         1: .line 569
            aload 2 /* env */
            invokeinterface jnr.posix.util.ProcessMaker.environment:([Ljava/lang/String;)Ljnr/posix/util/ProcessMaker;
         2: .line 570
            aload 3 /* pwd */
            invokeinterface jnr.posix.util.ProcessMaker.directory:(Ljava/io/File;)Ljnr/posix/util/ProcessMaker;
         3: .line 571
            invokeinterface jnr.posix.util.ProcessMaker.start:()Ljava/lang/Process;
         4: .line 568
            areturn
        end local 3 // java.io.File pwd
        end local 2 // java.lang.String[] env
        end local 1 // java.lang.String[] args
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  runtime  Lorg/jruby/Ruby;
            0    5     1     args  [Ljava/lang/String;
            0    5     2      env  [Ljava/lang/String;
            0    5     3      pwd  Ljava/io/File;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      args     
      env      
      pwd      

  public static long runExternalWithoutWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         0: .line 575
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getOutputStream:()Ljava/io/PrintStream;
            invokestatic org.jruby.util.ShellLauncher.runWithoutWait:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;)J
            lreturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  
      rawArgs  

  public static int execAndWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         0: .line 579
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            getstatic java.util.Collections.EMPTY_MAP:Ljava/util/Map;
            invokestatic org.jruby.util.ShellLauncher.execAndWait:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)I
            ireturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      runtime  
      rawArgs  

  public static int execAndWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.util.Map);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=6, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // java.util.Map mergeEnv
         0: .line 583
            new java.io.File
            dup
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* pwd */
        start local 3 // java.io.File pwd
         1: .line 584
            new org.jruby.util.ShellLauncher$LaunchConfig
            dup
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            iconst_1
            invokespecial org.jruby.util.ShellLauncher$LaunchConfig.<init>:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)V
            astore 4 /* cfg */
        start local 4 // org.jruby.util.ShellLauncher$LaunchConfig cfg
         2: .line 586
            aload 4 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.shouldRunInProcess:()Z
            ifeq 14
         3: .line 587
            aload 0 /* runtime */
            ldc "ExecAndWait in-process"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
         4: .line 593
            new org.jruby.util.ShellLauncher$ScriptThreadProcess
            dup
         5: .line 594
            aload 0 /* runtime */
            aload 4 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.getExecArgs:()[Ljava/lang/String;
            aload 0 /* runtime */
            aload 2 /* mergeEnv */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 3 /* pwd */
            iconst_0
         6: .line 593
            invokespecial org.jruby.util.ShellLauncher$ScriptThreadProcess.<init>:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;Z)V
            astore 5 /* ipScript */
        start local 5 // org.jruby.util.ShellLauncher$ScriptThreadProcess ipScript
         7: .line 595
            aload 5 /* ipScript */
            invokevirtual org.jruby.util.ShellLauncher$ScriptThreadProcess.start:()V
         8: .line 596
            aload 5 /* ipScript */
            invokevirtual org.jruby.util.ShellLauncher$ScriptThreadProcess.waitFor:()I
         9: ireturn
        end local 5 // org.jruby.util.ShellLauncher$ScriptThreadProcess ipScript
        10: .line 597
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack: java.io.IOException
            astore 5 /* e */
        start local 5 // java.io.IOException e
        11: .line 598
            aload 0 /* runtime */
            aload 5 /* e */
            invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 5 // java.io.IOException e
        12: .line 599
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
        13: .line 600
            aload 0 /* runtime */
            ldc "unexpected interrupt"
            invokevirtual org.jruby.Ruby.newThreadError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        14: .line 603
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            aload 2 /* mergeEnv */
            invokestatic org.jruby.util.ShellLauncher.runExternalAndWait:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)I
            ireturn
        end local 4 // org.jruby.util.ShellLauncher$LaunchConfig cfg
        end local 3 // java.io.File pwd
        end local 2 // java.util.Map mergeEnv
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0   runtime  Lorg/jruby/Ruby;
            0   15     1   rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0   15     2  mergeEnv  Ljava/util/Map;
            1   15     3       pwd  Ljava/io/File;
            2   15     4       cfg  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            7   10     5  ipScript  Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
           11   12     5         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     9      10  Class java.io.IOException
           4     9      12  Class java.lang.InterruptedException
    MethodParameters:
          Name  Flags
      runtime   
      rawArgs   
      mergeEnv  

  public static int runAndWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.io.OutputStream);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // java.io.OutputStream output
         0: .line 608
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            aload 2 /* output */
            iconst_1
            invokestatic org.jruby.util.ShellLauncher.runAndWait:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;Z)I
            ireturn
        end local 2 // java.io.OutputStream output
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2   output  Ljava/io/OutputStream;
    MethodParameters:
         Name  Flags
      runtime  
      rawArgs  
      output   

  public static int runAndWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.io.OutputStream, boolean);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;Z)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // java.io.OutputStream output
        start local 3 // boolean doExecutableSearch
         0: .line 612
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            aload 2 /* output */
            iload 3 /* doExecutableSearch */
            invokestatic org.jruby.util.ShellLauncher.runAndWaitPid:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;Z)[J
            iconst_0
            laload
            l2i
            ireturn
        end local 3 // boolean doExecutableSearch
        end local 2 // java.io.OutputStream output
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0             runtime  Lorg/jruby/Ruby;
            0    1     1             rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2              output  Ljava/io/OutputStream;
            0    1     3  doExecutableSearch  Z
    MethodParameters:
                    Name  Flags
      runtime             
      rawArgs             
      output              
      doExecutableSearch  

  public static long[] runAndWaitPid(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.io.OutputStream, boolean);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;Z)[J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // java.io.OutputStream output
        start local 3 // boolean doExecutableSearch
         0: .line 616
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getErrorStream:()Ljava/io/PrintStream;
            astore 4 /* error */
        start local 4 // java.io.OutputStream error
         1: .line 617
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getInputStream:()Ljava/io/InputStream;
            astore 5 /* input */
        start local 5 // java.io.InputStream input
         2: .line 619
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            iload 3 /* doExecutableSearch */
            invokestatic org.jruby.util.ShellLauncher.run:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)Ljava/lang/Process;
            astore 6 /* aProcess */
        start local 6 // java.lang.Process aProcess
         3: .line 620
            aload 0 /* runtime */
            aload 6 /* aProcess */
            aload 5 /* input */
            aload 2 /* output */
            aload 4 /* error */
            invokestatic org.jruby.util.ShellLauncher.handleStreams:(Lorg/jruby/Ruby;Ljava/lang/Process;Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/io/OutputStream;)V
         4: .line 621
            iconst_2
            newarray 11
            dup
            iconst_0
            aload 6 /* aProcess */
            invokevirtual java.lang.Process.waitFor:()I
            i2l
            lastore
            dup
            iconst_1
            aload 6 /* aProcess */
            invokestatic org.jruby.util.ShellLauncher.getPidFromProcess:(Ljava/lang/Process;)J
            lastore
         5: areturn
        end local 6 // java.lang.Process aProcess
         6: .line 622
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.io.OutputStream int java.io.OutputStream java.io.InputStream
      StackMap stack: java.io.IOException
            astore 6 /* e */
        start local 6 // java.io.IOException e
         7: .line 623
            aload 0 /* runtime */
            aload 6 /* e */
            invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 6 // java.io.IOException e
         8: .line 624
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
         9: .line 625
            aload 0 /* runtime */
            ldc "unexpected interrupt"
            invokevirtual org.jruby.Ruby.newThreadError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 5 // java.io.InputStream input
        end local 4 // java.io.OutputStream error
        end local 3 // boolean doExecutableSearch
        end local 2 // java.io.OutputStream output
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   10     0             runtime  Lorg/jruby/Ruby;
            0   10     1             rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     2              output  Ljava/io/OutputStream;
            0   10     3  doExecutableSearch  Z
            1   10     4               error  Ljava/io/OutputStream;
            2   10     5               input  Ljava/io/InputStream;
            3    6     6            aProcess  Ljava/lang/Process;
            7    8     6                   e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     5       6  Class java.io.IOException
           2     5       8  Class java.lang.InterruptedException
    MethodParameters:
                    Name  Flags
      runtime             
      rawArgs             
      output              
      doExecutableSearch  

  private static long runWithoutWait(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.io.OutputStream);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/io/OutputStream;)J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // java.io.OutputStream output
         0: .line 630
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getErrorStream:()Ljava/io/PrintStream;
            astore 3 /* error */
        start local 3 // java.io.OutputStream error
         1: .line 632
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            iconst_1
            invokestatic org.jruby.util.ShellLauncher.run:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)Ljava/lang/Process;
            astore 4 /* aProcess */
        start local 4 // java.lang.Process aProcess
         2: .line 633
            aload 0 /* runtime */
            aload 4 /* aProcess */
            aload 2 /* output */
            aload 3 /* error */
            invokestatic org.jruby.util.ShellLauncher.handleStreamsNonblocking:(Lorg/jruby/Ruby;Ljava/lang/Process;Ljava/io/OutputStream;Ljava/io/OutputStream;)V
         3: .line 634
            aload 4 /* aProcess */
            invokestatic org.jruby.util.ShellLauncher.getPidFromProcess:(Ljava/lang/Process;)J
         4: lreturn
        end local 4 // java.lang.Process aProcess
         5: .line 635
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.io.OutputStream java.io.OutputStream
      StackMap stack: java.io.IOException
            astore 4 /* e */
        start local 4 // java.io.IOException e
         6: .line 636
            aload 0 /* runtime */
            aload 4 /* e */
            invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 4 // java.io.IOException e
        end local 3 // java.io.OutputStream error
        end local 2 // java.io.OutputStream output
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0   runtime  Lorg/jruby/Ruby;
            0    7     1   rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    7     2    output  Ljava/io/OutputStream;
            1    7     3     error  Ljava/io/OutputStream;
            2    5     4  aProcess  Ljava/lang/Process;
            6    7     4         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     4       5  Class java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      rawArgs  
      output   

  public static long getPidFromProcess(java.lang.Process);
    descriptor: (Ljava/lang/Process;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Process process
         0: .line 641
            aload 0 /* process */
            instanceof org.jruby.util.ShellLauncher$ScriptThreadProcess
            ifeq 2
         1: .line 642
            aload 0 /* process */
            invokevirtual java.lang.Object.hashCode:()I
            i2l
            lreturn
         2: .line 643
      StackMap locals:
      StackMap stack:
            aload 0 /* process */
            instanceof org.jruby.util.ShellLauncher$POpenProcess
            ifeq 4
         3: .line 644
            aload 0 /* process */
            checkcast org.jruby.util.ShellLauncher$POpenProcess
            invokevirtual org.jruby.util.ShellLauncher$POpenProcess.getChild:()Ljava/lang/Process;
            invokestatic org.jruby.util.ShellLauncher.reflectPidFromProcess:(Ljava/lang/Process;)J
            lreturn
         4: .line 646
      StackMap locals:
      StackMap stack:
            aload 0 /* process */
            invokestatic org.jruby.util.ShellLauncher.reflectPidFromProcess:(Ljava/lang/Process;)J
            lreturn
        end local 0 // java.lang.Process process
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  process  Ljava/lang/Process;
    MethodParameters:
         Name  Flags
      process  

  public static long reflectPidFromProcess(java.lang.Process);
    descriptor: (Ljava/lang/Process;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Process process
         0: .line 745
            getstatic org.jruby.util.ShellLauncher.PID_GETTER:Lorg/jruby/util/ShellLauncher$PidGetter;
            aload 0 /* process */
            invokeinterface org.jruby.util.ShellLauncher$PidGetter.getPid:(Ljava/lang/Process;)J
            lreturn
        end local 0 // java.lang.Process process
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  process  Ljava/lang/Process;
    MethodParameters:
         Name  Flags
      process  

  public static java.lang.Process run(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Process;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject string
         0: .line 749
            aload 0 /* runtime */
            iconst_1
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 1 /* string */
            aastore
            iconst_0
            invokestatic org.jruby.util.ShellLauncher.run:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)Ljava/lang/Process;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject string
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1   string  Lorg/jruby/runtime/builtin/IRubyObject;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      string   

  public static org.jruby.util.ShellLauncher$POpenProcess popen(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject, org.jruby.util.io.ModeFlags);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/util/io/ModeFlags;)Lorg/jruby/util/ShellLauncher$POpenProcess;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject string
        start local 2 // org.jruby.util.io.ModeFlags modes
         0: .line 753
            new org.jruby.util.ShellLauncher$POpenProcess
            dup
            aload 0 /* runtime */
            iconst_1
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 1 /* string */
            aastore
            aconst_null
            iconst_1
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Z)Ljava/lang/Process;
            aload 0 /* runtime */
            aload 2 /* modes */
            invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/ModeFlags;)V
            areturn
        end local 2 // org.jruby.util.io.ModeFlags modes
        end local 1 // org.jruby.runtime.builtin.IRubyObject string
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1   string  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2    modes  Lorg/jruby/util/io/ModeFlags;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      string   
      modes    

  public static org.jruby.util.ShellLauncher$POpenProcess popen(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.util.Map, org.jruby.util.io.ModeFlags);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Lorg/jruby/util/io/ModeFlags;)Lorg/jruby/util/ShellLauncher$POpenProcess;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        start local 2 // java.util.Map env
        start local 3 // org.jruby.util.io.ModeFlags modes
         0: .line 757
            new org.jruby.util.ShellLauncher$POpenProcess
            dup
            aload 0 /* runtime */
            aload 1 /* strings */
            aload 2 /* env */
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)Ljava/lang/Process;
            aload 0 /* runtime */
            aload 3 /* modes */
            invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/ModeFlags;)V
            areturn
        end local 3 // org.jruby.util.io.ModeFlags modes
        end local 2 // java.util.Map env
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  strings  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2      env  Ljava/util/Map;
            0    1     3    modes  Lorg/jruby/util/io/ModeFlags;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      strings  
      env      
      modes    

  public static org.jruby.util.ShellLauncher$POpenProcess popen(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject, java.util.Map, org.jruby.util.io.ModeFlags);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Lorg/jruby/util/io/ModeFlags;)Lorg/jruby/util/ShellLauncher$POpenProcess;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=4, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject string
        start local 2 // java.util.Map env
        start local 3 // org.jruby.util.io.ModeFlags modes
         0: .line 761
            new org.jruby.util.ShellLauncher$POpenProcess
            dup
            aload 0 /* runtime */
            iconst_1
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 1 /* string */
            aastore
            aload 2 /* env */
            iconst_1
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Z)Ljava/lang/Process;
            aload 0 /* runtime */
            aload 3 /* modes */
            invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/ModeFlags;)V
            areturn
        end local 3 // org.jruby.util.io.ModeFlags modes
        end local 2 // java.util.Map env
        end local 1 // org.jruby.runtime.builtin.IRubyObject string
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1   string  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2      env  Ljava/util/Map;
            0    1     3    modes  Lorg/jruby/util/io/ModeFlags;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      string   
      env      
      modes    

  public static org.jruby.util.ShellLauncher$POpenProcess popen(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject, org.jruby.util.io.IOOptions);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/util/io/IOOptions;)Lorg/jruby/util/ShellLauncher$POpenProcess;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject string
        start local 2 // org.jruby.util.io.IOOptions modes
         0: .line 766
            new org.jruby.util.ShellLauncher$POpenProcess
            dup
            aload 0 /* runtime */
            iconst_1
            anewarray org.jruby.runtime.builtin.IRubyObject
            dup
            iconst_0
            aload 1 /* string */
            aastore
            aconst_null
            iconst_1
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Z)Ljava/lang/Process;
            aload 0 /* runtime */
            aload 2 /* modes */
            invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/IOOptions;)V
            areturn
        end local 2 // org.jruby.util.io.IOOptions modes
        end local 1 // org.jruby.runtime.builtin.IRubyObject string
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1   string  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2    modes  Lorg/jruby/util/io/IOOptions;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      string   
      modes    

  public static org.jruby.util.ShellLauncher$POpenProcess popen(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.util.Map, org.jruby.util.io.IOOptions);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Lorg/jruby/util/io/IOOptions;)Lorg/jruby/util/ShellLauncher$POpenProcess;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        start local 2 // java.util.Map env
        start local 3 // org.jruby.util.io.IOOptions modes
         0: .line 771
            new org.jruby.util.ShellLauncher$POpenProcess
            dup
            aload 0 /* runtime */
            aload 1 /* strings */
            aload 2 /* env */
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)Ljava/lang/Process;
            aload 0 /* runtime */
            aload 3 /* modes */
            invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;Lorg/jruby/Ruby;Lorg/jruby/util/io/IOOptions;)V
            areturn
        end local 3 // org.jruby.util.io.IOOptions modes
        end local 2 // java.util.Map env
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  strings  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2      env  Ljava/util/Map;
            0    1     3    modes  Lorg/jruby/util/io/IOOptions;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      strings  
      env      
      modes    

  public static org.jruby.util.ShellLauncher$POpenProcess popen3(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/util/ShellLauncher$POpenProcess;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
         0: .line 776
            new org.jruby.util.ShellLauncher$POpenProcess
            dup
            aload 0 /* runtime */
            aload 1 /* strings */
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Process;
            invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;)V
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  strings  [Lorg/jruby/runtime/builtin/IRubyObject;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      runtime  
      strings  

  public static org.jruby.util.ShellLauncher$POpenProcess popen3(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], boolean);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)Lorg/jruby/util/ShellLauncher$POpenProcess;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        start local 2 // boolean addShell
         0: .line 781
            new org.jruby.util.ShellLauncher$POpenProcess
            dup
            aload 0 /* runtime */
            aload 1 /* strings */
            aconst_null
            iload 2 /* addShell */
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Z)Ljava/lang/Process;
            invokespecial org.jruby.util.ShellLauncher$POpenProcess.<init>:(Ljava/lang/Process;)V
            areturn
        end local 2 // boolean addShell
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0   runtime  Lorg/jruby/Ruby;
            0    1     1   strings  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2  addShell  Z
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
          Name  Flags
      runtime   
      strings   
      addShell  

  private static java.lang.Process popenShared(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)Ljava/lang/Process;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
         0: .line 785
            aload 0 /* runtime */
            aload 1 /* strings */
            aconst_null
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)Ljava/lang/Process;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  strings  [Lorg/jruby/runtime/builtin/IRubyObject;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      strings  

  private static java.lang.Process popenShared(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.util.Map);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;)Ljava/lang/Process;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        start local 2 // java.util.Map env
         0: .line 789
            aload 0 /* runtime */
            aload 1 /* strings */
            aload 2 /* env */
            iconst_0
            invokestatic org.jruby.util.ShellLauncher.popenShared:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Z)Ljava/lang/Process;
            areturn
        end local 2 // java.util.Map env
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
            0    1     1  strings  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2      env  Ljava/util/Map;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      strings  
      env      

  private static java.lang.Process popenShared(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], java.util.Map, boolean);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Ljava/util/Map;Z)Ljava/lang/Process;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=15, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        start local 2 // java.util.Map env
        start local 3 // boolean addShell
         0: .line 793
            aload 0 /* runtime */
            invokestatic org.jruby.util.ShellLauncher.getShell:(Lorg/jruby/Ruby;)Ljava/lang/String;
            astore 4 /* shell */
        start local 4 // java.lang.String shell
         1: .line 795
            new java.io.File
            dup
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 6 /* pwd */
        start local 6 // java.io.File pwd
         2: .line 800
            aload 2 /* env */
            ifnonnull 6
            aload 1 /* strings */
            arraylength
            ifle 6
            aload 0 /* runtime */
            aload 1 /* strings */
            iconst_0
            aaload
            invokestatic org.jruby.util.TypeConverter.checkHashType:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            dup
            astore 7 /* envHash */
        start local 7 // org.jruby.runtime.builtin.IRubyObject envHash
         3: invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifne 6
         4: .line 801
            aload 1 /* strings */
            iconst_1
            aload 1 /* strings */
            arraylength
            invokestatic java.util.Arrays.copyOfRange:([Ljava/lang/Object;II)[Ljava/lang/Object;
            checkcast org.jruby.runtime.builtin.IRubyObject[]
            astore 1 /* strings */
         5: .line 802
            aload 7 /* envHash */
            checkcast java.util.Map
            astore 2 /* env */
        end local 7 // org.jruby.runtime.builtin.IRubyObject envHash
         6: .line 806
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File
      StackMap stack:
            aload 1 /* strings */
            arraylength
            iconst_1
            if_icmple 11
            aload 0 /* runtime */
            aload 1 /* strings */
            aload 1 /* strings */
            arraylength
            iconst_1
            isub
            aaload
            invokestatic org.jruby.util.TypeConverter.checkHashType:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            dup
            astore 7 /* envHash */
        start local 7 // org.jruby.runtime.builtin.IRubyObject envHash
         7: invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifne 11
         8: .line 807
            aload 7 /* envHash */
            checkcast org.jruby.RubyHash
            invokevirtual org.jruby.RubyHash.isEmpty:()Z
            ifne 10
         9: .line 808
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getWarnings:()Lorg/jruby/common/RubyWarnings;
            ldc "popen3 does not support spawn options in JRuby 1.7"
            invokevirtual org.jruby.common.RubyWarnings.warn:(Ljava/lang/String;)V
        10: .line 810
      StackMap locals: org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
            aload 1 /* strings */
            iconst_0
            aload 1 /* strings */
            arraylength
            iconst_1
            isub
            invokestatic java.util.Arrays.copyOfRange:([Ljava/lang/Object;II)[Ljava/lang/Object;
            checkcast org.jruby.runtime.builtin.IRubyObject[]
            astore 1 /* strings */
        end local 7 // org.jruby.runtime.builtin.IRubyObject envHash
        11: .line 813
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 0 /* runtime */
            aload 1 /* strings */
            invokestatic org.jruby.util.ShellLauncher.parseCommandLine:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)[Ljava/lang/String;
            astore 8 /* args */
        start local 8 // java.lang.String[] args
        12: .line 814
            new org.jruby.util.ShellLauncher$LaunchConfig
            dup
            aload 0 /* runtime */
            aload 1 /* strings */
            iconst_0
            invokespecial org.jruby.util.ShellLauncher$LaunchConfig.<init>:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)V
            astore 9 /* lc */
        start local 9 // org.jruby.util.ShellLauncher$LaunchConfig lc
        13: .line 815
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 14
            aload 9 /* lc */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.shouldRunInShell:()Z
            goto 15
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File top java.lang.String[] org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack:
        14: iconst_0
      StackMap locals:
      StackMap stack: int
        15: istore 10 /* useShell */
        start local 10 // boolean useShell
        16: .line 816
            iload 3 /* addShell */
            ifeq 21
            aload 8 /* args */
            dup
            astore 14
            arraylength
            istore 13
            iconst_0
            istore 12
            goto 20
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File top java.lang.String[] org.jruby.util.ShellLauncher$LaunchConfig int top int int java.lang.String[]
      StackMap stack:
        17: aload 14
            iload 12
            aaload
            astore 11 /* arg */
        start local 11 // java.lang.String arg
        18: iload 10 /* useShell */
            aload 11 /* arg */
            invokestatic org.jruby.util.ShellLauncher.shouldUseShell:(Ljava/lang/String;)Z
            ior
            istore 10 /* useShell */
        end local 11 // java.lang.String arg
        19: iinc 12 1
      StackMap locals:
      StackMap stack:
        20: iload 12
            iload 13
            if_icmplt 17
        21: .line 818
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File top java.lang.String[] org.jruby.util.ShellLauncher$LaunchConfig int
      StackMap stack:
            aload 1 /* strings */
            arraylength
            iconst_1
            if_icmpne 33
        22: .line 819
            iload 10 /* useShell */
            ifeq 31
        23: .line 821
            iconst_3
            anewarray java.lang.String
            astore 11 /* argArray */
        start local 11 // java.lang.String[] argArray
        24: .line 822
            aload 11 /* argArray */
            iconst_0
            aload 4 /* shell */
            aastore
        25: .line 823
            aload 11 /* argArray */
            iconst_1
            aload 4 /* shell */
            ldc "sh"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 26
            ldc "-c"
            goto 27
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File top java.lang.String[] org.jruby.util.ShellLauncher$LaunchConfig int java.lang.String[]
      StackMap stack: java.lang.String[] int
        26: ldc "/c"
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File top java.lang.String[] org.jruby.util.ShellLauncher$LaunchConfig int java.lang.String[]
      StackMap stack: java.lang.String[] int java.lang.String
        27: aastore
        28: .line 824
            aload 11 /* argArray */
            iconst_2
            aload 1 /* strings */
            iconst_0
            aaload
            invokeinterface org.jruby.runtime.builtin.IRubyObject.asJavaString:()Ljava/lang/String;
            aastore
        29: .line 825
            aload 0 /* runtime */
            aload 11 /* argArray */
            aload 0 /* runtime */
            aload 2 /* env */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 6 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 5 /* childProcess */
        end local 11 // java.lang.String[] argArray
        start local 5 // java.lang.Process childProcess
        30: .line 826
            goto 46
        end local 5 // java.lang.Process childProcess
        31: .line 827
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            aload 8 /* args */
            aload 0 /* runtime */
            aload 2 /* env */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 6 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 5 /* childProcess */
        start local 5 // java.lang.Process childProcess
        32: .line 829
            goto 46
        end local 5 // java.lang.Process childProcess
        33: .line 830
      StackMap locals:
      StackMap stack:
            iload 10 /* useShell */
            ifeq 42
        34: .line 831
            aload 8 /* args */
            arraylength
            iconst_2
            iadd
            anewarray java.lang.String
            astore 11 /* argArray */
        start local 11 // java.lang.String[] argArray
        35: .line 832
            aload 11 /* argArray */
            iconst_0
            aload 4 /* shell */
            aastore
        36: .line 833
            aload 11 /* argArray */
            iconst_1
            aload 4 /* shell */
            ldc "sh"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 37
            ldc "-c"
            goto 38
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File top java.lang.String[] org.jruby.util.ShellLauncher$LaunchConfig int java.lang.String[]
      StackMap stack: java.lang.String[] int
        37: ldc "/c"
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File top java.lang.String[] org.jruby.util.ShellLauncher$LaunchConfig int java.lang.String[]
      StackMap stack: java.lang.String[] int java.lang.String
        38: aastore
        39: .line 834
            aload 8 /* args */
            iconst_0
            aload 11 /* argArray */
            iconst_2
            aload 8 /* args */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        40: .line 835
            aload 0 /* runtime */
            aload 11 /* argArray */
            aload 0 /* runtime */
            aload 2 /* env */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 6 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 5 /* childProcess */
        end local 11 // java.lang.String[] argArray
        start local 5 // java.lang.Process childProcess
        41: .line 836
            goto 46
        end local 5 // java.lang.Process childProcess
        42: .line 838
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            aload 8 /* args */
            aload 0 /* runtime */
            aload 2 /* env */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;Ljava/util/Map;)[Ljava/lang/String;
            aload 6 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 5 /* childProcess */
        end local 10 // boolean useShell
        end local 9 // org.jruby.util.ShellLauncher$LaunchConfig lc
        end local 8 // java.lang.String[] args
        start local 5 // java.lang.Process childProcess
        43: .line 841
            goto 46
        end local 5 // java.lang.Process childProcess
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String top java.io.File
      StackMap stack: java.lang.SecurityException
        44: astore 7 /* se */
        start local 7 // java.lang.SecurityException se
        45: .line 842
            aload 0 /* runtime */
            aload 7 /* se */
            invokevirtual java.lang.SecurityException.getLocalizedMessage:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newSecurityError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 7 // java.lang.SecurityException se
        start local 5 // java.lang.Process childProcess
        46: .line 845
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.util.Map int java.lang.String java.lang.Process java.io.File
      StackMap stack:
            aload 5 /* childProcess */
            areturn
        end local 6 // java.io.File pwd
        end local 5 // java.lang.Process childProcess
        end local 4 // java.lang.String shell
        end local 3 // boolean addShell
        end local 2 // java.util.Map env
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] strings
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   47     0       runtime  Lorg/jruby/Ruby;
            0   47     1       strings  [Lorg/jruby/runtime/builtin/IRubyObject;
            0   47     2           env  Ljava/util/Map;
            0   47     3      addShell  Z
            1   47     4         shell  Ljava/lang/String;
           30   31     5  childProcess  Ljava/lang/Process;
           32   33     5  childProcess  Ljava/lang/Process;
           41   42     5  childProcess  Ljava/lang/Process;
           43   44     5  childProcess  Ljava/lang/Process;
           46   47     5  childProcess  Ljava/lang/Process;
            2   47     6           pwd  Ljava/io/File;
            3    6     7       envHash  Lorg/jruby/runtime/builtin/IRubyObject;
            7   11     7       envHash  Lorg/jruby/runtime/builtin/IRubyObject;
           12   43     8          args  [Ljava/lang/String;
           13   43     9            lc  Lorg/jruby/util/ShellLauncher$LaunchConfig;
           16   43    10      useShell  Z
           18   19    11           arg  Ljava/lang/String;
           24   30    11      argArray  [Ljava/lang/String;
           35   41    11      argArray  [Ljava/lang/String;
           45   46     7            se  Ljava/lang/SecurityException;
      Exception table:
        from    to  target  type
           2    43      44  Class java.lang.SecurityException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      runtime   
      strings   
      env       
      addShell  

  public static java.lang.Process run(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], boolean);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)Ljava/lang/Process;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // boolean doExecutableSearch
         0: .line 1314
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            iload 2 /* doExecutableSearch */
            iconst_0
            invokestatic org.jruby.util.ShellLauncher.run:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;ZZ)Ljava/lang/Process;
            areturn
        end local 2 // boolean doExecutableSearch
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0             runtime  Lorg/jruby/Ruby;
            0    1     1             rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2  doExecutableSearch  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                    Name  Flags
      runtime             
      rawArgs             
      doExecutableSearch  

  private static boolean hasGlobCharacter(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 word
         0: .line 1318
            aload 0 /* word */
            ldc "*"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 1
            aload 0 /* word */
            ldc "?"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 1
            aload 0 /* word */
            ldc "["
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 1
            aload 0 /* word */
            ldc "{"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // java.lang.String word
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  word  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      word  

  private static java.lang.String[] expandGlobs(org.jruby.Ruby, java.lang.String[]);
    descriptor: (Lorg/jruby/Ruby;[Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String[] originalArgs
         0: .line 1322
            new java.util.ArrayList
            dup
            aload 1 /* originalArgs */
            arraylength
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 2 /* expandedList */
        start local 2 // java.util.List expandedList
         1: .line 1323
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 14
         3: .line 1324
      StackMap locals: java.util.List int
      StackMap stack:
            aload 1 /* originalArgs */
            iload 3 /* i */
            aaload
            invokestatic org.jruby.util.ShellLauncher.hasGlobCharacter:(Ljava/lang/String;)Z
            ifeq 12
         4: .line 1326
            aload 0 /* runtime */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
         5: .line 1327
            new org.jruby.util.ByteList
            dup
            aload 1 /* originalArgs */
            iload 3 /* i */
            aaload
            invokevirtual java.lang.String.getBytes:()[B
            invokespecial org.jruby.util.ByteList.<init>:([B)V
            iconst_0
         6: .line 1326
            invokestatic org.jruby.util.Dir.push_glob:(Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;I)Ljava/util/List;
            astore 4 /* globs */
        start local 4 // java.util.List globs
         7: .line 1329
            aload 4 /* globs */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 6
            goto 10
      StackMap locals: org.jruby.Ruby java.lang.String[] java.util.List int java.util.List top java.util.Iterator
      StackMap stack:
         8: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.util.ByteList
            astore 5 /* glob */
        start local 5 // org.jruby.util.ByteList glob
         9: .line 1330
            aload 2 /* expandedList */
            aload 5 /* glob */
            invokevirtual org.jruby.util.ByteList.toString:()Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 5 // org.jruby.util.ByteList glob
        10: .line 1329
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        end local 4 // java.util.List globs
        11: .line 1332
            goto 13
        12: .line 1333
      StackMap locals: org.jruby.Ruby java.lang.String[] java.util.List int
      StackMap stack:
            aload 2 /* expandedList */
            aload 1 /* originalArgs */
            iload 3 /* i */
            aaload
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        13: .line 1323
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 3 /* i */
            aload 1 /* originalArgs */
            arraylength
            if_icmplt 3
        end local 3 // int i
        15: .line 1337
            aload 2 /* expandedList */
            invokeinterface java.util.List.size:()I
            anewarray java.lang.String
            astore 3 /* args */
        start local 3 // java.lang.String[] args
        16: .line 1338
            aload 2 /* expandedList */
            aload 3 /* args */
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            pop
        17: .line 1340
            aload 3 /* args */
            areturn
        end local 3 // java.lang.String[] args
        end local 2 // java.util.List expandedList
        end local 1 // java.lang.String[] originalArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0       runtime  Lorg/jruby/Ruby;
            0   18     1  originalArgs  [Ljava/lang/String;
            1   18     2  expandedList  Ljava/util/List<Ljava/lang/String;>;
            2   15     3             i  I
            7   11     4         globs  Ljava/util/List<Lorg/jruby/util/ByteList;>;
            9   10     5          glob  Lorg/jruby/util/ByteList;
           16   18     3          args  [Ljava/lang/String;
    MethodParameters:
              Name  Flags
      runtime       
      originalArgs  

  public static java.lang.Process run(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], boolean, boolean);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;ZZ)Ljava/lang/Process;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=9, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 2 // boolean doExecutableSearch
        start local 3 // boolean forceExternalProcess
         0: .line 1345
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentDirectory:()Ljava/lang/String;
            astore 5 /* virtualCWD */
        start local 5 // java.lang.String virtualCWD
         1: .line 1346
            new java.io.File
            dup
            aload 5 /* virtualCWD */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 6 /* pwd */
        start local 6 // java.io.File pwd
         2: .line 1347
            new org.jruby.util.ShellLauncher$LaunchConfig
            dup
            aload 0 /* runtime */
            aload 1 /* rawArgs */
            iload 2 /* doExecutableSearch */
            invokespecial org.jruby.util.ShellLauncher$LaunchConfig.<init>:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)V
            astore 7 /* cfg */
        start local 7 // org.jruby.util.ShellLauncher$LaunchConfig cfg
         3: .line 1350
            iload 3 /* forceExternalProcess */
            ifne 11
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.shouldRunInProcess:()Z
            ifeq 11
         4: .line 1351
            aload 0 /* runtime */
            ldc "Launching in-process"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
         5: .line 1352
            new org.jruby.util.ShellLauncher$ScriptThreadProcess
            dup
            aload 0 /* runtime */
         6: .line 1353
            aload 0 /* runtime */
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.getExecArgs:()[Ljava/lang/String;
            invokestatic org.jruby.util.ShellLauncher.expandGlobs:(Lorg/jruby/Ruby;[Ljava/lang/String;)[Ljava/lang/String;
            aload 0 /* runtime */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;)[Ljava/lang/String;
            aload 6 /* pwd */
         7: .line 1352
            invokespecial org.jruby.util.ShellLauncher$ScriptThreadProcess.<init>:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)V
            astore 8 /* ipScript */
        start local 8 // org.jruby.util.ShellLauncher$ScriptThreadProcess ipScript
         8: .line 1354
            aload 8 /* ipScript */
            invokevirtual org.jruby.util.ShellLauncher$ScriptThreadProcess.start:()V
         9: .line 1355
            aload 8 /* ipScript */
        10: areturn
        end local 8 // org.jruby.util.ShellLauncher$ScriptThreadProcess ipScript
        11: .line 1357
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] int int top java.lang.String java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack:
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.shouldRunInShell:()Z
            ifeq 15
        12: .line 1358
            aload 0 /* runtime */
            ldc "Launching with shell"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
        13: .line 1361
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutableForShell:()V
        14: .line 1362
            goto 17
        15: .line 1363
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            ldc "Launching directly (no shell)"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
        16: .line 1364
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutableForDirect:()V
        17: .line 1366
      StackMap locals:
      StackMap stack:
            aload 7 /* cfg */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.getExecArgs:()[Ljava/lang/String;
            astore 8 /* args */
        start local 8 // java.lang.String[] args
        18: .line 1367
            aload 5 /* virtualCWD */
            ldc "uri:classloader:"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 24
        19: .line 1369
            new java.io.File
            dup
            ldc "user.dir"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 6 /* pwd */
        20: .line 1373
            aload 8 /* args */
            aload 8 /* args */
            arraylength
            iconst_1
            isub
            aaload
            ldc "org.jruby.Main"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 24
        21: .line 1374
            aload 8 /* args */
            aload 8 /* args */
            arraylength
            iconst_1
            isub
            aload 8 /* args */
            aload 8 /* args */
            arraylength
            iconst_1
            isub
            aaload
            ldc "org.jruby.Main"
        22: .line 1375
            new java.lang.StringBuilder
            dup
            ldc "org.jruby.Main -C "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* virtualCWD */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 1374
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            aastore
        24: .line 1378
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 0 /* runtime */
            aload 8 /* args */
            aload 0 /* runtime */
            invokestatic org.jruby.util.ShellLauncher.getCurrentEnv:(Lorg/jruby/Ruby;)[Ljava/lang/String;
            aload 6 /* pwd */
            invokestatic org.jruby.util.ShellLauncher.buildProcess:(Lorg/jruby/Ruby;[Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
            astore 4 /* aProcess */
        end local 8 // java.lang.String[] args
        start local 4 // java.lang.Process aProcess
        25: .line 1380
            goto 28
        end local 4 // java.lang.Process aProcess
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] int int top java.lang.String java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack: java.lang.SecurityException
        26: astore 8 /* se */
        start local 8 // java.lang.SecurityException se
        27: .line 1381
            aload 0 /* runtime */
            aload 8 /* se */
            invokevirtual java.lang.SecurityException.getLocalizedMessage:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newSecurityError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 8 // java.lang.SecurityException se
        start local 4 // java.lang.Process aProcess
        28: .line 1384
      StackMap locals: org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] int int java.lang.Process java.lang.String java.io.File org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack:
            aload 4 /* aProcess */
            areturn
        end local 7 // org.jruby.util.ShellLauncher$LaunchConfig cfg
        end local 6 // java.io.File pwd
        end local 5 // java.lang.String virtualCWD
        end local 4 // java.lang.Process aProcess
        end local 3 // boolean forceExternalProcess
        end local 2 // boolean doExecutableSearch
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   29     0               runtime  Lorg/jruby/Ruby;
            0   29     1               rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0   29     2    doExecutableSearch  Z
            0   29     3  forceExternalProcess  Z
           25   26     4              aProcess  Ljava/lang/Process;
           28   29     4              aProcess  Ljava/lang/Process;
            1   29     5            virtualCWD  Ljava/lang/String;
            2   29     6                   pwd  Ljava/io/File;
            3   29     7                   cfg  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            8   11     8              ipScript  Lorg/jruby/util/ShellLauncher$ScriptThreadProcess;
           18   25     8                  args  [Ljava/lang/String;
           27   28     8                    se  Ljava/lang/SecurityException;
      Exception table:
        from    to  target  type
           3    10      26  Class java.lang.SecurityException
          11    25      26  Class java.lang.SecurityException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                      Name  Flags
      runtime               
      rawArgs               
      doExecutableSearch    
      forceExternalProcess  

  private static void handleStreams(org.jruby.Ruby, java.lang.Process, java.io.InputStream, java.io.OutputStream, java.io.OutputStream);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/Process;Ljava/io/InputStream;Ljava/io/OutputStream;Ljava/io/OutputStream;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=11, args_size=5
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.Process p
        start local 2 // java.io.InputStream in
        start local 3 // java.io.OutputStream out
        start local 4 // java.io.OutputStream err
         0: .line 1524
            aload 1 /* p */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            astore 5 /* pOut */
        start local 5 // java.io.InputStream pOut
         1: .line 1525
            aload 1 /* p */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            astore 6 /* pErr */
        start local 6 // java.io.InputStream pErr
         2: .line 1526
            aload 1 /* p */
            invokevirtual java.lang.Process.getOutputStream:()Ljava/io/OutputStream;
            astore 7 /* pIn */
        start local 7 // java.io.OutputStream pIn
         3: .line 1528
            new org.jruby.util.ShellLauncher$StreamPumper
            dup
            aload 0 /* runtime */
            aload 5 /* pOut */
            aload 3 /* out */
            iconst_0
            getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
            aload 1 /* p */
            invokespecial org.jruby.util.ShellLauncher$StreamPumper.<init>:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/io/OutputStream;ZLorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
            astore 8 /* t1 */
        start local 8 // org.jruby.util.ShellLauncher$StreamPumper t1
         4: .line 1529
            new org.jruby.util.ShellLauncher$StreamPumper
            dup
            aload 0 /* runtime */
            aload 6 /* pErr */
            aload 4 /* err */
            iconst_0
            getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
            aload 1 /* p */
            invokespecial org.jruby.util.ShellLauncher$StreamPumper.<init>:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/io/OutputStream;ZLorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
            astore 9 /* t2 */
        start local 9 // org.jruby.util.ShellLauncher$StreamPumper t2
         5: .line 1534
            new org.jruby.util.ShellLauncher$StreamPumper
            dup
            aload 0 /* runtime */
            aload 2 /* in */
            aload 7 /* pIn */
            iconst_1
            getstatic org.jruby.util.ShellLauncher$Pumper$Slave.OUT:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
            aload 1 /* p */
            invokespecial org.jruby.util.ShellLauncher$StreamPumper.<init>:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/io/OutputStream;ZLorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
            astore 10 /* t3 */
        start local 10 // org.jruby.util.ShellLauncher$StreamPumper t3
         6: .line 1536
            aload 8 /* t1 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.start:()V
         7: .line 1537
            aload 9 /* t2 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.start:()V
         8: .line 1538
            aload 10 /* t3 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.start:()V
         9: .line 1540
            aload 8 /* t1 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.join:()V
        10: goto 12
      StackMap locals: org.jruby.Ruby java.lang.Process java.io.InputStream java.io.OutputStream java.io.OutputStream java.io.InputStream java.io.InputStream java.io.OutputStream org.jruby.util.ShellLauncher$StreamPumper org.jruby.util.ShellLauncher$StreamPumper org.jruby.util.ShellLauncher$StreamPumper
      StackMap stack: java.lang.InterruptedException
        11: pop
        12: .line 1541
      StackMap locals:
      StackMap stack:
            aload 9 /* t2 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.join:()V
        13: goto 15
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        14: pop
        15: .line 1542
      StackMap locals:
      StackMap stack:
            aload 10 /* t3 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.quit:()V
        16: .line 1544
            aload 4 /* err */
            invokevirtual java.io.OutputStream.flush:()V
        17: goto 19
      StackMap locals:
      StackMap stack: java.io.IOException
        18: pop
        19: .line 1545
      StackMap locals:
      StackMap stack:
            aload 3 /* out */
            invokevirtual java.io.OutputStream.flush:()V
        20: goto 22
      StackMap locals:
      StackMap stack: java.io.IOException
        21: pop
        22: .line 1547
      StackMap locals:
      StackMap stack:
            aload 7 /* pIn */
            invokevirtual java.io.OutputStream.close:()V
        23: goto 25
      StackMap locals:
      StackMap stack: java.io.IOException
        24: pop
        25: .line 1548
      StackMap locals:
      StackMap stack:
            aload 5 /* pOut */
            invokevirtual java.io.InputStream.close:()V
        26: goto 28
      StackMap locals:
      StackMap stack: java.io.IOException
        27: pop
        28: .line 1549
      StackMap locals:
      StackMap stack:
            aload 6 /* pErr */
            invokevirtual java.io.InputStream.close:()V
        29: goto 31
      StackMap locals:
      StackMap stack: java.io.IOException
        30: pop
        31: .line 1557
      StackMap locals:
      StackMap stack:
            aload 8 /* t1 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.quit:()V
        32: .line 1558
            aload 9 /* t2 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.quit:()V
        33: .line 1559
            aload 10 /* t3 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.quit:()V
        34: .line 1560
            aload 8 /* t1 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.interrupt:()V
        35: .line 1561
            aload 9 /* t2 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.interrupt:()V
        36: .line 1562
            aload 10 /* t3 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.interrupt:()V
        37: .line 1563
            goto 39
      StackMap locals:
      StackMap stack: java.lang.SecurityException
        38: pop
        39: .line 1565
      StackMap locals:
      StackMap stack:
            aload 8 /* t1 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.join:()V
        40: goto 42
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        41: pop
        42: .line 1566
      StackMap locals:
      StackMap stack:
            aload 9 /* t2 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.join:()V
        43: goto 45
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        44: pop
        45: .line 1567
      StackMap locals:
      StackMap stack:
            aload 10 /* t3 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.join:()V
        46: goto 48
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        47: pop
        48: .line 1568
      StackMap locals:
      StackMap stack:
            return
        end local 10 // org.jruby.util.ShellLauncher$StreamPumper t3
        end local 9 // org.jruby.util.ShellLauncher$StreamPumper t2
        end local 8 // org.jruby.util.ShellLauncher$StreamPumper t1
        end local 7 // java.io.OutputStream pIn
        end local 6 // java.io.InputStream pErr
        end local 5 // java.io.InputStream pOut
        end local 4 // java.io.OutputStream err
        end local 3 // java.io.OutputStream out
        end local 2 // java.io.InputStream in
        end local 1 // java.lang.Process p
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   49     0  runtime  Lorg/jruby/Ruby;
            0   49     1        p  Ljava/lang/Process;
            0   49     2       in  Ljava/io/InputStream;
            0   49     3      out  Ljava/io/OutputStream;
            0   49     4      err  Ljava/io/OutputStream;
            1   49     5     pOut  Ljava/io/InputStream;
            2   49     6     pErr  Ljava/io/InputStream;
            3   49     7      pIn  Ljava/io/OutputStream;
            4   49     8       t1  Lorg/jruby/util/ShellLauncher$StreamPumper;
            5   49     9       t2  Lorg/jruby/util/ShellLauncher$StreamPumper;
            6   49    10       t3  Lorg/jruby/util/ShellLauncher$StreamPumper;
      Exception table:
        from    to  target  type
           9    10      11  Class java.lang.InterruptedException
          12    13      14  Class java.lang.InterruptedException
          16    17      18  Class java.io.IOException
          19    20      21  Class java.io.IOException
          22    23      24  Class java.io.IOException
          25    26      27  Class java.io.IOException
          28    29      30  Class java.io.IOException
          31    37      38  Class java.lang.SecurityException
          39    40      41  Class java.lang.InterruptedException
          42    43      44  Class java.lang.InterruptedException
          45    46      47  Class java.lang.InterruptedException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      p        
      in       
      out      
      err      

  private static void handleStreamsNonblocking(org.jruby.Ruby, java.lang.Process, java.io.OutputStream, java.io.OutputStream);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/Process;Ljava/io/OutputStream;Ljava/io/OutputStream;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=8, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.Process p
        start local 2 // java.io.OutputStream out
        start local 3 // java.io.OutputStream err
         0: .line 1571
            aload 1 /* p */
            invokevirtual java.lang.Process.getInputStream:()Ljava/io/InputStream;
            astore 4 /* pOut */
        start local 4 // java.io.InputStream pOut
         1: .line 1572
            aload 1 /* p */
            invokevirtual java.lang.Process.getErrorStream:()Ljava/io/InputStream;
            astore 5 /* pErr */
        start local 5 // java.io.InputStream pErr
         2: .line 1574
            new org.jruby.util.ShellLauncher$StreamPumper
            dup
            aload 0 /* runtime */
            aload 4 /* pOut */
            aload 2 /* out */
            iconst_0
            getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
            aload 1 /* p */
            invokespecial org.jruby.util.ShellLauncher$StreamPumper.<init>:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/io/OutputStream;ZLorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
            astore 6 /* t1 */
        start local 6 // org.jruby.util.ShellLauncher$StreamPumper t1
         3: .line 1575
            new org.jruby.util.ShellLauncher$StreamPumper
            dup
            aload 0 /* runtime */
            aload 5 /* pErr */
            aload 3 /* err */
            iconst_0
            getstatic org.jruby.util.ShellLauncher$Pumper$Slave.IN:Lorg/jruby/util/ShellLauncher$Pumper$Slave;
            aload 1 /* p */
            invokespecial org.jruby.util.ShellLauncher$StreamPumper.<init>:(Lorg/jruby/Ruby;Ljava/io/InputStream;Ljava/io/OutputStream;ZLorg/jruby/util/ShellLauncher$Pumper$Slave;Ljava/lang/Object;)V
            astore 7 /* t2 */
        start local 7 // org.jruby.util.ShellLauncher$StreamPumper t2
         4: .line 1577
            aload 6 /* t1 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.start:()V
         5: .line 1578
            aload 7 /* t2 */
            invokevirtual org.jruby.util.ShellLauncher$StreamPumper.start:()V
         6: .line 1579
            return
        end local 7 // org.jruby.util.ShellLauncher$StreamPumper t2
        end local 6 // org.jruby.util.ShellLauncher$StreamPumper t1
        end local 5 // java.io.InputStream pErr
        end local 4 // java.io.InputStream pOut
        end local 3 // java.io.OutputStream err
        end local 2 // java.io.OutputStream out
        end local 1 // java.lang.Process p
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  runtime  Lorg/jruby/Ruby;
            0    7     1        p  Ljava/lang/Process;
            0    7     2      out  Ljava/io/OutputStream;
            0    7     3      err  Ljava/io/OutputStream;
            1    7     4     pOut  Ljava/io/InputStream;
            2    7     5     pErr  Ljava/io/InputStream;
            3    7     6       t1  Lorg/jruby/util/ShellLauncher$StreamPumper;
            4    7     7       t2  Lorg/jruby/util/ShellLauncher$StreamPumper;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      runtime  
      p        
      out      
      err      

  private static java.lang.String[] parseCommandLine(org.jruby.runtime.ThreadContext, org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         0: .line 1584
            aload 2 /* rawArgs */
            arraylength
            iconst_1
            if_icmpne 20
         1: .line 1585
            aload 2 /* rawArgs */
            invokestatic org.jruby.util.ShellLauncher.hasLeadingArgvArray:([Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 4
         2: .line 1587
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 2 /* rawArgs */
            iconst_0
            aaload
            checkcast org.jruby.RubyArray
            invokestatic org.jruby.util.ShellLauncher.getPathEntry:(Lorg/jruby/RubyArray;)Ljava/lang/String;
            aastore
            astore 3 /* args */
        start local 3 // java.lang.String[] args
         3: .line 1588
            goto 30
        end local 3 // java.lang.String[] args
         4: .line 1589
      StackMap locals:
      StackMap stack:
            aload 1 /* runtime */
            invokevirtual org.jruby.Ruby.getLoadService:()Lorg/jruby/runtime/load/LoadService;
            dup
            astore 4
            monitorenter
         5: .line 1590
            aload 1 /* runtime */
            invokevirtual org.jruby.Ruby.getLoadService:()Lorg/jruby/runtime/load/LoadService;
            ldc "jruby/path_helper"
            invokevirtual org.jruby.runtime.load.LoadService.require:(Ljava/lang/String;)Z
            pop
         6: .line 1589
            aload 4
            monitorexit
         7: goto 10
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] top org.jruby.runtime.load.LoadService
      StackMap stack: java.lang.Throwable
         8: aload 4
            monitorexit
         9: athrow
        10: .line 1592
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[]
      StackMap stack:
            aload 1 /* runtime */
            ldc "JRuby::PathHelper"
            invokevirtual org.jruby.Ruby.getClassFromPath:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            astore 4 /* pathHelper */
        start local 4 // org.jruby.RubyModule pathHelper
        11: .line 1594
            aload 0 /* context */
            aload 4 /* pathHelper */
            ldc "smart_split_command"
            aload 2 /* rawArgs */
        12: .line 1593
            invokestatic org.jruby.runtime.Helpers.invoke:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Ljava/lang/String;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            checkcast org.jruby.RubyArray
            astore 5 /* parts */
        start local 5 // org.jruby.RubyArray parts
        13: .line 1595
            aload 5 /* parts */
            invokevirtual org.jruby.RubyArray.getLength:()I
            anewarray java.lang.String
            astore 3 /* args */
        start local 3 // java.lang.String[] args
        14: .line 1596
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        15: goto 18
        16: .line 1597
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[] java.lang.String[] org.jruby.RubyModule org.jruby.RubyArray int
      StackMap stack:
            aload 3 /* args */
            iload 6 /* i */
            aload 5 /* parts */
            iload 6 /* i */
            invokevirtual org.jruby.RubyArray.entry:(I)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            aastore
        17: .line 1596
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 6 /* i */
            aload 5 /* parts */
            invokevirtual org.jruby.RubyArray.getLength:()I
            if_icmplt 16
        end local 6 // int i
        end local 5 // org.jruby.RubyArray parts
        end local 4 // org.jruby.RubyModule pathHelper
        19: .line 1600
            goto 30
        end local 3 // java.lang.String[] args
        20: .line 1601
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject[]
      StackMap stack:
            aload 2 /* rawArgs */
            arraylength
            anewarray java.lang.String
            astore 3 /* args */
        start local 3 // java.lang.String[] args
        21: .line 1602
            iconst_0
            istore 4 /* start */
        start local 4 // int start
        22: .line 1603
            aload 2 /* rawArgs */
            invokestatic org.jruby.util.ShellLauncher.hasLeadingArgvArray:([Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifeq 25
        23: .line 1604
            iconst_1
            istore 4 /* start */
        24: .line 1605
            aload 3 /* args */
            iconst_0
            aload 2 /* rawArgs */
            iconst_0
            aaload
            checkcast org.jruby.RubyArray
            invokestatic org.jruby.util.ShellLauncher.getPathEntry:(Lorg/jruby/RubyArray;)Ljava/lang/String;
            aastore
        25: .line 1607
      StackMap locals: java.lang.String[] int
      StackMap stack:
            iload 4 /* start */
            istore 5 /* i */
        start local 5 // int i
        26: goto 29
        27: .line 1608
      StackMap locals: int
      StackMap stack:
            aload 3 /* args */
            iload 5 /* i */
            aload 2 /* rawArgs */
            iload 5 /* i */
            aaload
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            aastore
        28: .line 1607
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        29: iload 5 /* i */
            aload 2 /* rawArgs */
            arraylength
            if_icmplt 27
        end local 5 // int i
        end local 4 // int start
        30: .line 1611
      StackMap locals:
      StackMap stack:
            aload 3 /* args */
            areturn
        end local 3 // java.lang.String[] args
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   31     0     context  Lorg/jruby/runtime/ThreadContext;
            0   31     1     runtime  Lorg/jruby/Ruby;
            0   31     2     rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            3    4     3        args  [Ljava/lang/String;
           14   20     3        args  [Ljava/lang/String;
           21   31     3        args  [Ljava/lang/String;
           11   19     4  pathHelper  Lorg/jruby/RubyModule;
           13   19     5       parts  Lorg/jruby/RubyArray;
           15   19     6           i  I
           22   30     4       start  I
           26   30     5           i  I
      Exception table:
        from    to  target  type
           5     7       8  any
           8     9       8  any
    MethodParameters:
         Name  Flags
      context  
      runtime  
      rawArgs  

  private static boolean hasLeadingArgvArray(org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: ([Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
         0: .line 1622
            aload 0 /* rawArgs */
            arraylength
            iconst_1
            if_icmplt 4
         1: .line 1623
            aload 0 /* rawArgs */
            iconst_0
            aaload
            instanceof org.jruby.RubyArray
            ifeq 4
         2: .line 1624
            aload 0 /* rawArgs */
            iconst_0
            aaload
            checkcast org.jruby.RubyArray
            invokevirtual org.jruby.RubyArray.getLength:()I
            iconst_2
            if_icmpne 4
         3: .line 1622
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 0 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0  rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      rawArgs  

  private static java.lang.String getPathEntry(org.jruby.RubyArray);
    descriptor: (Lorg/jruby/RubyArray;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.RubyArray initArray
         0: .line 1628
            aload 0 /* initArray */
            iconst_0
            invokevirtual org.jruby.RubyArray.entry:(I)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.jruby.RubyArray initArray
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  initArray  Lorg/jruby/RubyArray;
    MethodParameters:
           Name  Flags
      initArray  

  private static java.lang.String getShell(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 1632
            invokestatic org.jruby.ext.rbconfig.RbConfigLibrary.jrubyShell:()Ljava/lang/String;
            areturn
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  runtime  Lorg/jruby/Ruby;
    MethodParameters:
         Name  Flags
      runtime  

  public static boolean shouldUseShell(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=6, args_size=1
        start local 0 // java.lang.String command
         0: .line 1636
            iconst_0
            istore 1 /* useShell */
        start local 1 // boolean useShell
         1: .line 1637
            aload 0 /* command */
            invokevirtual java.lang.String.toCharArray:()[C
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 6
      StackMap locals: java.lang.String int top int int char[]
      StackMap stack:
         2: aload 5
            iload 3
            caload
            istore 2 /* c */
        start local 2 // char c
         3: .line 1638
            iload 2 /* c */
            bipush 32
            if_icmpeq 5
            iload 2 /* c */
            invokestatic java.lang.Character.isLetter:(C)Z
            ifne 5
            ldc "*?{}[]<>()~&|\\$;'`\"\n"
            iload 2 /* c */
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpeq 5
         4: .line 1639
            iconst_1
            istore 1 /* useShell */
        end local 2 // char c
         5: .line 1637
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         6: iload 3
            iload 4
            if_icmplt 2
         7: .line 1642
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 9
            aload 0 /* command */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmplt 9
            aload 0 /* command */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 64
            if_icmpne 9
         8: .line 1644
            iconst_1
            istore 1 /* useShell */
         9: .line 1646
      StackMap locals: java.lang.String int
      StackMap stack:
            iload 1 /* useShell */
            ireturn
        end local 1 // boolean useShell
        end local 0 // java.lang.String command
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0   command  Ljava/lang/String;
            1   10     1  useShell  Z
            3    5     2         c  C
    MethodParameters:
         Name  Flags
      command  

  static void log(org.jruby.Ruby, java.lang.String);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String msg
         0: .line 1650
            getstatic org.jruby.RubyInstanceConfig.DEBUG_LAUNCHING:Z
            ifeq 2
         1: .line 1651
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getErr:()Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "ShellLauncher: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* msg */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 1653
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String msg
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  runtime  Lorg/jruby/Ruby;
            0    3     1      msg  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      runtime  
      msg      

  public static java.io.OutputStream unwrapBufferedStream(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.OutputStream filteredStream
         0: .line 1657
            aload 0 /* filteredStream */
            invokestatic org.jruby.util.io.ChannelHelper.unwrapBufferedStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
            areturn
        end local 0 // java.io.OutputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  filteredStream  Ljava/io/OutputStream;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      filteredStream  

  public static java.io.InputStream unwrapBufferedStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/io/InputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.InputStream filteredStream
         0: .line 1662
            aload 0 /* filteredStream */
            invokestatic org.jruby.util.io.ChannelHelper.unwrapBufferedStream:(Ljava/io/InputStream;)Ljava/io/InputStream;
            areturn
        end local 0 // java.io.InputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  filteredStream  Ljava/io/InputStream;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      filteredStream  

  public static java.io.OutputStream unwrapFilterOutputStream(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)Ljava/io/OutputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.OutputStream filteredStream
         0: .line 1667
            aload 0 /* filteredStream */
            invokestatic org.jruby.util.io.ChannelHelper.unwrapFilterOutputStream:(Ljava/io/OutputStream;)Ljava/io/OutputStream;
            areturn
        end local 0 // java.io.OutputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  filteredStream  Ljava/io/OutputStream;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      filteredStream  

  public static java.io.InputStream unwrapFilterInputStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)Ljava/io/InputStream;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.InputStream filteredStream
         0: .line 1672
            aload 0 /* filteredStream */
            invokestatic org.jruby.util.io.ChannelHelper.unwrapFilterInputStream:(Ljava/io/InputStream;)Ljava/io/InputStream;
            areturn
        end local 0 // java.io.InputStream filteredStream
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  filteredStream  Ljava/io/InputStream;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                Name  Flags
      filteredStream  
}
SourceFile: "ShellLauncher.java"
NestMembers:
  org.jruby.util.ShellLauncher$1  org.jruby.util.ShellLauncher$2  org.jruby.util.ShellLauncher$3  org.jruby.util.ShellLauncher$4  org.jruby.util.ShellLauncher$ChannelPumper  org.jruby.util.ShellLauncher$LaunchConfig  org.jruby.util.ShellLauncher$POpenProcess  org.jruby.util.ShellLauncher$PidGetter  org.jruby.util.ShellLauncher$Pumper  org.jruby.util.ShellLauncher$Pumper$Slave  org.jruby.util.ShellLauncher$ScriptThreadProcess  org.jruby.util.ShellLauncher$StreamPumper
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.jruby.util.ShellLauncher$1
  org.jruby.util.ShellLauncher$2
  org.jruby.util.ShellLauncher$3
  org.jruby.util.ShellLauncher$4
  private ChannelPumper = org.jruby.util.ShellLauncher$ChannelPumper of org.jruby.util.ShellLauncher
  public LaunchConfig = org.jruby.util.ShellLauncher$LaunchConfig of org.jruby.util.ShellLauncher
  public POpenProcess = org.jruby.util.ShellLauncher$POpenProcess of org.jruby.util.ShellLauncher
  private abstract PidGetter = org.jruby.util.ShellLauncher$PidGetter of org.jruby.util.ShellLauncher
  private abstract Pumper = org.jruby.util.ShellLauncher$Pumper of org.jruby.util.ShellLauncher
  public final Slave = org.jruby.util.ShellLauncher$Pumper$Slave of org.jruby.util.ShellLauncher$Pumper
  private ScriptThreadProcess = org.jruby.util.ShellLauncher$ScriptThreadProcess of org.jruby.util.ShellLauncher
  private StreamPumper = org.jruby.util.ShellLauncher$StreamPumper of org.jruby.util.ShellLauncher