public class org.jruby.util.ShellLauncher$LaunchConfig
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.util.ShellLauncher$LaunchConfig
  super_class: java.lang.Object
{
  private org.jruby.Ruby runtime;
    descriptor: Lorg/jruby/Ruby;
    flags: (0x0002) ACC_PRIVATE

  private boolean doExecutableSearch;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private org.jruby.runtime.builtin.IRubyObject[] rawArgs;
    descriptor: [Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String shell;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String[] args;
    descriptor: [Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String[] execArgs;
    descriptor: [Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private boolean cmdBuiltin;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String executable;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private java.io.File executableFile;
    descriptor: Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject[], boolean);
    descriptor: (Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        start local 3 // boolean doExecutableSearch
         0: .line 1056
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1310
            aload 0 /* this */
            iconst_0
            putfield org.jruby.util.ShellLauncher$LaunchConfig.cmdBuiltin:Z
         2: .line 1057
            aload 0 /* this */
            aload 1 /* runtime */
            putfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
         3: .line 1058
            aload 0 /* this */
            aload 2 /* rawArgs */
            putfield org.jruby.util.ShellLauncher$LaunchConfig.rawArgs:[Lorg/jruby/runtime/builtin/IRubyObject;
         4: .line 1059
            aload 0 /* this */
            iload 3 /* doExecutableSearch */
            putfield org.jruby.util.ShellLauncher$LaunchConfig.doExecutableSearch:Z
         5: .line 1060
            aload 0 /* this */
            aload 1 /* runtime */
            invokestatic org.jruby.util.ShellLauncher.getShell:(Lorg/jruby/Ruby;)Ljava/lang/String;
            putfield org.jruby.util.ShellLauncher$LaunchConfig.shell:Ljava/lang/String;
         6: .line 1061
            aload 0 /* this */
            aload 1 /* runtime */
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 1 /* runtime */
            aload 2 /* rawArgs */
            invokestatic org.jruby.util.ShellLauncher.parseCommandLine:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)[Ljava/lang/String;
            putfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
         7: .line 1062
            return
        end local 3 // boolean doExecutableSearch
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] rawArgs
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            0    8     1             runtime  Lorg/jruby/Ruby;
            0    8     2             rawArgs  [Lorg/jruby/runtime/builtin/IRubyObject;
            0    8     3  doExecutableSearch  Z
    MethodParameters:
                    Name  Flags
      runtime             
      rawArgs             
      doExecutableSearch  

  public boolean shouldRunInProcess();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=1
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
         0: .line 1069
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getInstanceConfig:()Lorg/jruby/RubyInstanceConfig;
            invokevirtual org.jruby.RubyInstanceConfig.isRunRubyInProcess:()Z
            ifeq 2
         1: .line 1070
            invokestatic org.jruby.RubyInstanceConfig.hasLoadedNativeExtensions:()Z
            ifeq 3
         2: .line 1071
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         3: .line 1076
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         4: goto 16
         5: .line 1077
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iload 1 /* i */
            aaload
            astore 2 /* c */
        start local 2 // java.lang.String c
         6: .line 1078
            aload 2 /* c */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            ifne 7
            goto 15
         7: .line 1080
      StackMap locals: java.lang.String
      StackMap stack:
            iconst_2
            newarray 5
            dup
            iconst_0
            aload 2 /* c */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            castore
            dup
            iconst_1
            aload 2 /* c */
            aload 2 /* c */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            castore
            astore 3 /* firstLast */
        start local 3 // char[] firstLast
         8: .line 1081
            iconst_0
            istore 4 /* j */
        start local 4 // int j
         9: goto 14
        10: .line 1082
      StackMap locals: char[] int
      StackMap stack:
            aload 3 /* firstLast */
            iload 4 /* j */
            caload
            lookupswitch { // 15
                   10: 11
                   34: 11
                   36: 11
                   38: 11
                   39: 11
                   40: 11
                   41: 11
                   50: 12
                   59: 11
                   60: 11
                   62: 11
                   92: 11
                   96: 11
                  124: 11
                  126: 11
              default: 13
          }
        11: .line 1086
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        12: .line 1088
      StackMap locals:
      StackMap stack:
            aload 2 /* c */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmple 13
            aload 2 /* c */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            bipush 62
            if_icmpne 13
            iconst_0
            ireturn
        13: .line 1081
      StackMap locals:
      StackMap stack:
            iinc 4 /* j */ 1
      StackMap locals:
      StackMap stack:
        14: iload 4 /* j */
            aload 3 /* firstLast */
            arraylength
            if_icmplt 10
        end local 4 // int j
        end local 3 // char[] firstLast
        end local 2 // java.lang.String c
        15: .line 1076
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 1 /* i */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            arraylength
            if_icmplt 5
        end local 1 // int i
        17: .line 1093
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iconst_0
            aaload
            astore 1 /* command */
        start local 1 // java.lang.String command
        18: .line 1095
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 19
            aload 1 /* command */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            astore 1 /* command */
        19: .line 1098
      StackMap locals: org.jruby.util.ShellLauncher$LaunchConfig java.lang.String
      StackMap stack:
            aload 1 /* command */
            ldc "[/\\\\]"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* slashDelimitedTokens */
        start local 2 // java.lang.String[] slashDelimitedTokens
        20: .line 1099
            aload 2 /* slashDelimitedTokens */
            aload 2 /* slashDelimitedTokens */
            arraylength
            iconst_1
            isub
            aaload
            astore 3 /* finalToken */
        start local 3 // java.lang.String finalToken
        21: .line 1100
            aload 3 /* finalToken */
            ldc "ruby"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 26
        22: .line 1101
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 23
            aload 3 /* finalToken */
            ldc "ruby.exe"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 26
        23: .line 1102
      StackMap locals: java.lang.String[] java.lang.String
      StackMap stack:
            aload 3 /* finalToken */
            ldc ".rb"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 26
        24: .line 1103
            aload 3 /* finalToken */
            ldc "irb"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 26
        25: .line 1100
            iconst_0
            goto 27
      StackMap locals:
      StackMap stack:
        26: iconst_1
      StackMap locals:
      StackMap stack: int
        27: istore 4 /* inProc */
        start local 4 // boolean inProc
        28: .line 1105
            iload 4 /* inProc */
            ifne 29
            iconst_0
            ireturn
        29: .line 1109
      StackMap locals: int
      StackMap stack:
            aload 1 /* command */
            ldc ".rb"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 30
            iconst_0
            goto 31
      StackMap locals:
      StackMap stack:
        30: iconst_1
      StackMap locals:
      StackMap stack: int
        31: istore 5 /* startIndex */
        start local 5 // int startIndex
        32: .line 1110
            aload 1 /* command */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            ldc "irb"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 35
        33: .line 1111
            iconst_0
            istore 5 /* startIndex */
        34: .line 1112
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iconst_0
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getJRubyHome:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "bin"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic java.io.File.separator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "jirb"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        35: .line 1115
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            arraylength
            iload 5 /* startIndex */
            isub
            anewarray java.lang.String
            putfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
        36: .line 1116
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iload 5 /* startIndex */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_0
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        37: .line 1118
            iconst_1
            ireturn
        end local 5 // int startIndex
        end local 4 // boolean inProc
        end local 3 // java.lang.String finalToken
        end local 2 // java.lang.String[] slashDelimitedTokens
        end local 1 // java.lang.String command
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   38     0                  this  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            4   17     1                     i  I
            6   15     2                     c  Ljava/lang/String;
            8   15     3             firstLast  [C
            9   15     4                     j  I
           18   38     1               command  Ljava/lang/String;
           20   38     2  slashDelimitedTokens  [Ljava/lang/String;
           21   38     3            finalToken  Ljava/lang/String;
           28   38     4                inProc  Z
           32   38     5            startIndex  I

  public boolean shouldRunInShell();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
         0: .line 1128
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.rawArgs:[Lorg/jruby/runtime/builtin/IRubyObject;
            arraylength
            iconst_1
            if_icmpeq 2
         1: .line 1131
            iconst_0
            ireturn
         2: .line 1135
      StackMap locals:
      StackMap stack:
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifne 3
            iconst_1
            ireturn
         3: .line 1138
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.shell:Ljava/lang/String;
            ifnonnull 4
            iconst_0
            ireturn
         4: .line 1143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 9
      StackMap locals: org.jruby.util.ShellLauncher$LaunchConfig top int int java.lang.String[]
      StackMap stack:
         5: aload 4
            iload 2
            aaload
            astore 1 /* arg */
        start local 1 // java.lang.String arg
         6: .line 1144
            aload 1 /* arg */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokestatic org.jruby.util.ShellLauncher$LaunchConfig.shouldVerifyPathExecutable:(Ljava/lang/String;)Z
            ifne 8
         7: .line 1145
            iconst_1
            ireturn
        end local 1 // java.lang.String arg
         8: .line 1143
      StackMap locals:
      StackMap stack:
            iinc 2 1
      StackMap locals:
      StackMap stack:
         9: iload 2
            iload 3
            if_icmplt 5
        10: .line 1150
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iconst_0
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            putfield org.jruby.util.ShellLauncher$LaunchConfig.executable:Ljava/lang/String;
        11: .line 1151
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executable:Ljava/lang/String;
            invokestatic org.jruby.util.ShellLauncher.findPathExecutable:(Lorg/jruby/Ruby;Ljava/lang/String;)Ljava/io/File;
            putfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
        12: .line 1154
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
            ifnull 18
        13: .line 1155
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "Got it: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
            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
        14: .line 1156
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.isBatch:(Ljava/io/File;)Z
            ifeq 17
        15: .line 1157
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            ldc "This is a BAT/CMD file, will start in shell"
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
        16: .line 1158
            iconst_1
            ireturn
        17: .line 1160
      StackMap locals: org.jruby.util.ShellLauncher$LaunchConfig
      StackMap stack:
            iconst_0
            ireturn
        18: .line 1162
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "Didn't find executable: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executable: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.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
        19: .line 1165
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executable:Ljava/lang/String;
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.isCmdBuiltin:(Ljava/lang/String;)Z
            ifeq 22
        20: .line 1166
            aload 0 /* this */
            iconst_1
            putfield org.jruby.util.ShellLauncher$LaunchConfig.cmdBuiltin:Z
        21: .line 1167
            iconst_1
            ireturn
        22: .line 1171
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   23     0  this  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            6    8     1   arg  Ljava/lang/String;

  private boolean isBatch(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
        start local 1 // java.io.File executableFile
         0: .line 1175
            aload 1 /* executableFile */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc ".bat"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ireturn
        end local 1 // java.io.File executableFile
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            0    1     1  executableFile  Ljava/io/File;
    MethodParameters:
                Name  Flags
      executableFile  

  public void verifyExecutableForShell();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
         0: .line 1179
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.rawArgs:[Lorg/jruby/runtime/builtin/IRubyObject;
            iconst_0
            aaload
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 1 /* cmdline */
        start local 1 // java.lang.String cmdline
         1: .line 1180
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.doExecutableSearch:Z
            ifeq 3
            aload 1 /* cmdline */
            invokestatic org.jruby.util.ShellLauncher$LaunchConfig.shouldVerifyPathExecutable:(Ljava/lang/String;)Z
            ifeq 3
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.cmdBuiltin:Z
            ifne 3
         2: .line 1181
            aload 0 /* this */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutable:()V
         3: .line 1186
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            iconst_3
            anewarray java.lang.String
            putfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
         4: .line 1187
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_0
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.shell:Ljava/lang/String;
            aastore
         5: .line 1188
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_1
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.shell:Ljava/lang/String;
            ldc "sh"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 6
            ldc "-c"
            goto 7
      StackMap locals: org.jruby.util.ShellLauncher$LaunchConfig java.lang.String
      StackMap stack: java.lang.String[] int
         6: ldc "/c"
      StackMap locals: org.jruby.util.ShellLauncher$LaunchConfig java.lang.String
      StackMap stack: java.lang.String[] int java.lang.String
         7: aastore
         8: .line 1190
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 11
         9: .line 1192
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_2
            new java.lang.StringBuilder
            dup
            ldc "\""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* cmdline */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
        10: .line 1193
            goto 12
        11: .line 1194
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_2
            aload 1 /* cmdline */
            aastore
        12: .line 1196
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String cmdline
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            1   13     1  cmdline  Ljava/lang/String;

  public void verifyExecutableForDirect();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=1, args_size=1
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
         0: .line 1199
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iconst_0
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.isCmdBuiltin:(Ljava/lang/String;)Z
            ifeq 7
         1: .line 1200
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            arraylength
            iconst_2
            iadd
            anewarray java.lang.String
            putfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
         2: .line 1201
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_0
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.shell:Ljava/lang/String;
            aastore
         3: .line 1202
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_1
            ldc "/c"
            aastore
         4: .line 1203
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_2
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iconst_0
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            aastore
         5: .line 1204
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iconst_1
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_3
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            arraylength
            iconst_1
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         6: .line 1205
            goto 10
         7: .line 1206
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.util.ShellLauncher$LaunchConfig.verifyExecutable:()V
         8: .line 1207
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            putfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
         9: .line 1208
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            iconst_0
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
        10: .line 1210
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/jruby/util/ShellLauncher$LaunchConfig;

  private void verifyExecutable();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
         0: .line 1213
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
            ifnonnull 4
         1: .line 1214
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executable:Ljava/lang/String;
            ifnonnull 3
         2: .line 1215
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.args:[Ljava/lang/String;
            iconst_0
            aaload
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            putfield org.jruby.util.ShellLauncher$LaunchConfig.executable:Ljava/lang/String;
         3: .line 1217
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executable:Ljava/lang/String;
            invokestatic org.jruby.util.ShellLauncher.findPathExecutable:(Lorg/jruby/Ruby;Ljava/lang/String;)Ljava/io/File;
            putfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
         4: .line 1219
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executableFile:Ljava/io/File;
            ifnonnull 6
         5: .line 1220
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.executable:Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newErrnoENOENTError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
         6: .line 1222
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lorg/jruby/util/ShellLauncher$LaunchConfig;

  public java.lang.String[] getExecArgs();
    descriptor: ()[Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
         0: .line 1225
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.execArgs:[Ljava/lang/String;
            areturn
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/util/ShellLauncher$LaunchConfig;

  private boolean isCmdBuiltin(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
        start local 1 // java.lang.String cmd
         0: .line 1229
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.shell:Ljava/lang/String;
            ldc "sh"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 5
         1: .line 1230
            getstatic org.jruby.util.ShellLauncher.WINDOWS_INTERNAL_CMDS:[Ljava/lang/String;
            aload 1 /* cmd */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            invokestatic java.util.Arrays.binarySearch:([Ljava/lang/Object;Ljava/lang/Object;)I
            istore 2 /* idx */
        start local 2 // int idx
         2: .line 1231
            iload 2 /* idx */
            iflt 5
         3: .line 1232
            aload 0 /* this */
            getfield org.jruby.util.ShellLauncher$LaunchConfig.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "Found Windows shell's built-in command: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* cmd */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.jruby.util.ShellLauncher.log:(Lorg/jruby/Ruby;Ljava/lang/String;)V
         4: .line 1234
            iconst_1
            ireturn
        end local 2 // int idx
         5: .line 1237
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.String cmd
        end local 0 // org.jruby.util.ShellLauncher$LaunchConfig this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/jruby/util/ShellLauncher$LaunchConfig;
            0    6     1   cmd  Ljava/lang/String;
            2    5     2   idx  I
    MethodParameters:
      Name  Flags
      cmd   

  private static boolean hasRedirection(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.lang.String cmdline
         0: .line 1245
            getstatic jnr.posix.util.Platform.IS_WINDOWS:Z
            ifeq 26
         1: .line 1248
            iconst_0
            istore 1 /* quote */
        start local 1 // char quote
         2: .line 1249
            iconst_0
            istore 2 /* idx */
        start local 2 // int idx
         3: goto 24
         4: .line 1250
      StackMap locals: int int
      StackMap stack:
            aload 0 /* cmdline */
            iload 2 /* idx */
            invokevirtual java.lang.String.charAt:(I)C
            istore 3 /* ptr */
        start local 3 // char ptr
         5: .line 1251
            iload 3 /* ptr */
            lookupswitch { // 8
                   10: 13
                   34: 6
                   37: 17
                   39: 6
                   60: 13
                   62: 13
                   92: 22
                  124: 13
              default: 23
          }
         6: .line 1254
      StackMap locals: int
      StackMap stack:
            iload 1 /* quote */
            ifne 9
         7: .line 1255
            iload 3 /* ptr */
            istore 1 /* quote */
         8: .line 1256
            goto 11
      StackMap locals:
      StackMap stack:
         9: iload 1 /* quote */
            iload 3 /* ptr */
            if_icmpne 11
        10: .line 1257
            iconst_0
            istore 1 /* quote */
        11: .line 1259
      StackMap locals:
      StackMap stack:
            iinc 2 /* idx */ 1
        12: .line 1260
            goto 24
        13: .line 1265
      StackMap locals:
      StackMap stack:
            iload 1 /* quote */
            ifne 15
        14: .line 1266
            iconst_1
            ireturn
        15: .line 1268
      StackMap locals:
      StackMap stack:
            iinc 2 /* idx */ 1
        16: .line 1269
            goto 24
        17: .line 1272
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.ShellLauncher.WIN_ENVVAR_PATTERN:Ljava/util/regex/Pattern;
            aload 0 /* cmdline */
            iload 2 /* idx */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 4 /* envVarMatcher */
        start local 4 // java.util.regex.Matcher envVarMatcher
        18: .line 1273
            aload 4 /* envVarMatcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifeq 20
        19: .line 1274
            iconst_1
            ireturn
        20: .line 1276
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            iinc 2 /* idx */ 1
        21: .line 1278
            goto 24
        end local 4 // java.util.regex.Matcher envVarMatcher
        22: .line 1281
      StackMap locals:
      StackMap stack:
            iinc 2 /* idx */ 1
        23: .line 1283
      StackMap locals:
      StackMap stack:
            iinc 2 /* idx */ 1
        end local 3 // char ptr
        24: .line 1249
      StackMap locals:
      StackMap stack:
            iload 2 /* idx */
            aload 0 /* cmdline */
            invokevirtual java.lang.String.length:()I
            if_icmplt 4
        end local 2 // int idx
        25: .line 1287
            iconst_0
            ireturn
        end local 1 // char quote
        26: .line 1290
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.ShellLauncher.SHELL_METACHARACTER_PATTERN:Ljava/util/regex/Pattern;
            aload 0 /* cmdline */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 1 /* metaMatcher */
        start local 1 // java.util.regex.Matcher metaMatcher
        27: .line 1291
            aload 1 /* metaMatcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ireturn
        end local 1 // java.util.regex.Matcher metaMatcher
        end local 0 // java.lang.String cmdline
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   28     0        cmdline  Ljava/lang/String;
            2   26     1          quote  C
            3   25     2            idx  I
            5   24     3            ptr  C
           18   22     4  envVarMatcher  Ljava/util/regex/Matcher;
           27   28     1    metaMatcher  Ljava/util/regex/Matcher;
    MethodParameters:
         Name  Flags
      cmdline  

  private static boolean shouldVerifyPathExecutable(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.lang.String cmdline
         0: .line 1297
            iconst_1
            istore 1 /* verifyPathExecutable */
        start local 1 // boolean verifyPathExecutable
         1: .line 1298
            aload 0 /* cmdline */
            invokestatic org.jruby.util.ShellLauncher$LaunchConfig.hasRedirection:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 1299
            iconst_0
            ireturn
         3: .line 1301
      StackMap locals: int
      StackMap stack:
            iload 1 /* verifyPathExecutable */
            ireturn
        end local 1 // boolean verifyPathExecutable
        end local 0 // java.lang.String cmdline
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    4     0               cmdline  Ljava/lang/String;
            1    4     1  verifyPathExecutable  Z
    MethodParameters:
         Name  Flags
      cmdline  
}
SourceFile: "ShellLauncher.java"
NestHost: org.jruby.util.ShellLauncher
InnerClasses:
  public LaunchConfig = org.jruby.util.ShellLauncher$LaunchConfig of org.jruby.util.ShellLauncher