public class org.jruby.util.Dir
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.util.Dir
  super_class: java.lang.Object
{
  public static final boolean DOSISH;
    descriptor: Z
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final boolean CASEFOLD_FILESYSTEM;
    descriptor: Z
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final int FNM_NOESCAPE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int FNM_PATHNAME;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int FNM_DOTMATCH;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  public static final int FNM_CASEFOLD;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  public static final int FNM_SYSCASE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final int FNM_NOMATCH;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int FNM_ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final byte[] EMPTY;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final byte[] SLASH;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final byte[] STAR;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final byte[] DOUBLE_STAR;
    descriptor: [B
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final org.jruby.util.Dir$GlobFunc<java.util.List<org.jruby.util.ByteList>> push_pattern;
    descriptor: Lorg/jruby/util/Dir$GlobFunc;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/jruby/util/Dir$GlobFunc<Ljava/util/List<Lorg/jruby/util/ByteList;>;>;

  private static final org.jruby.util.Dir$GlobFunc<org.jruby.util.Dir$GlobArgs> glob_caller;
    descriptor: Lorg/jruby/util/Dir$GlobFunc;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Lorg/jruby/util/Dir$GlobFunc<Lorg/jruby/util/Dir$GlobArgs;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 55
            getstatic org.jruby.platform.Platform.IS_WINDOWS:Z
            putstatic org.jruby.util.Dir.DOSISH:Z
         1: .line 56
            getstatic org.jruby.util.Dir.DOSISH:Z
            putstatic org.jruby.util.Dir.CASEFOLD_FILESYSTEM:Z
         2: .line 63
            getstatic org.jruby.util.Dir.CASEFOLD_FILESYSTEM:Z
            ifeq 3
            bipush 8
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: putstatic org.jruby.util.Dir.FNM_SYSCASE:I
         5: .line 68
            getstatic org.jruby.util.ByteList.NULL_ARRAY:[B
            putstatic org.jruby.util.Dir.EMPTY:[B
         6: .line 69
            iconst_1
            newarray 8
            dup
            iconst_0
            bipush 47
            bastore
            putstatic org.jruby.util.Dir.SLASH:[B
         7: .line 70
            iconst_1
            newarray 8
            dup
            iconst_0
            bipush 42
            bastore
            putstatic org.jruby.util.Dir.STAR:[B
         8: .line 71
            iconst_2
            newarray 8
            dup
            iconst_0
            bipush 42
            bastore
            dup
            iconst_1
            bipush 42
            bastore
            putstatic org.jruby.util.Dir.DOUBLE_STAR:[B
         9: .line 413
            new org.jruby.util.Dir$1
            dup
            invokespecial org.jruby.util.Dir$1.<init>:()V
            putstatic org.jruby.util.Dir.push_pattern:Lorg/jruby/util/Dir$GlobFunc;
        10: .line 419
            new org.jruby.util.Dir$2
            dup
            invokespecial org.jruby.util.Dir$2.<init>:()V
            putstatic org.jruby.util.Dir.glob_caller:Lorg/jruby/util/Dir$GlobFunc;
        11: .line 424
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

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

  private static boolean isdirsep(char);
    descriptor: (C)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // char c
         0: .line 74
            iload 0 /* c */
            bipush 47
            if_icmpeq 2
            getstatic org.jruby.util.Dir.DOSISH:Z
            ifeq 1
            iload 0 /* c */
            bipush 92
            if_icmpeq 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_1
            ireturn
        end local 0 // char c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     c  C
    MethodParameters:
      Name  Flags
      c     

  private static boolean isdirsep(byte);
    descriptor: (B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // byte c
         0: .line 78
            iload 0 /* c */
            sipush 255
            iand
            i2c
            invokestatic org.jruby.util.Dir.isdirsep:(C)Z
            ireturn
        end local 0 // byte c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     c  B
    MethodParameters:
      Name  Flags
      c     

  private static int rb_path_next(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // byte[] _s
        start local 1 // int s
        start local 2 // int send
         0: .line 82
            goto 2
         1: .line 83
      StackMap locals:
      StackMap stack:
            iinc 1 /* s */ 1
         2: .line 82
      StackMap locals:
      StackMap stack:
            iload 1 /* s */
            iload 2 /* send */
            if_icmpge 3
            aload 0 /* _s */
            iload 1 /* s */
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifeq 1
         3: .line 85
      StackMap locals:
      StackMap stack:
            iload 1 /* s */
            ireturn
        end local 2 // int send
        end local 1 // int s
        end local 0 // byte[] _s
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0    _s  [B
            0    4     1     s  I
            0    4     2  send  I
    MethodParameters:
      Name  Flags
      _s    
      s     
      send  

  private static int fnmatch_helper(byte[], int, int, byte[], int, int, int);
    descriptor: ([BII[BIII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=8, locals=15, args_size=7
        start local 0 // byte[] bytes
        start local 1 // int pstart
        start local 2 // int pend
        start local 3 // byte[] string
        start local 4 // int sstart
        start local 5 // int send
        start local 6 // int flags
         0: .line 90
            iload 4 /* sstart */
            istore 8 /* s */
        start local 8 // int s
         1: .line 91
            iload 1 /* pstart */
            istore 9 /* pat */
        start local 9 // int pat
         2: .line 92
            iload 6 /* flags */
            iconst_1
            iand
            ifne 3
            iconst_1
            goto 4
      StackMap locals: byte[] int int byte[] int int int top int int
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 10 /* escape */
        start local 10 // boolean escape
         5: .line 93
            iload 6 /* flags */
            iconst_2
            iand
            ifeq 6
            iconst_1
            goto 7
      StackMap locals: int
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: istore 11 /* pathname */
        start local 11 // boolean pathname
         8: .line 94
            iload 6 /* flags */
            iconst_4
            iand
            ifne 9
            iconst_1
            goto 10
      StackMap locals: int
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 12 /* period */
        start local 12 // boolean period
        11: .line 95
            iload 6 /* flags */
            bipush 8
            iand
            ifeq 12
            iconst_1
            goto 13
      StackMap locals: int
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: istore 13 /* nocase */
        start local 13 // boolean nocase
        14: .line 97
            goto 71
        15: .line 98
      StackMap locals: int
      StackMap stack:
            aload 0 /* bytes */
            iload 9 /* pat */
            iinc 9 /* pat */ 1
            baload
            sipush 255
            iand
            i2c
            istore 14 /* c */
        start local 14 // char c
        16: .line 99
            iload 14 /* c */
            lookupswitch { // 4
                   42: 22
                   63: 17
                   91: 49
                   92: 57
              default: 62
          }
        17: .line 101
      StackMap locals: int
      StackMap stack:
            iload 8 /* s */
            iload 5 /* send */
            if_icmpge 19
            iload 11 /* pathname */
            ifeq 18
            aload 3 /* string */
            iload 8 /* s */
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifne 19
        18: .line 102
      StackMap locals:
      StackMap stack:
            iload 12 /* period */
            ifeq 20
            aload 3 /* string */
            iload 8 /* s */
            baload
            bipush 46
            if_icmpne 20
            iload 8 /* s */
            ifeq 19
            iload 11 /* pathname */
            ifeq 20
            aload 3 /* string */
            iload 8 /* s */
            iconst_1
            isub
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifeq 20
        19: .line 103
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        20: .line 105
      StackMap locals:
      StackMap stack:
            iinc 8 /* s */ 1
        21: .line 106
            goto 71
        22: .line 108
      StackMap locals:
      StackMap stack:
            iload 9 /* pat */
            iload 2 /* pend */
            if_icmpge 23
            aload 0 /* bytes */
            iload 9 /* pat */
            iinc 9 /* pat */ 1
            baload
            sipush 255
            iand
            i2c
            dup
            istore 14 /* c */
            bipush 42
            if_icmpeq 22
        23: .line 109
      StackMap locals:
      StackMap stack:
            iload 8 /* s */
            iload 5 /* send */
            if_icmpge 25
            iload 12 /* period */
            ifeq 25
            aload 3 /* string */
            iload 8 /* s */
            baload
            bipush 46
            if_icmpne 25
            iload 8 /* s */
            ifeq 24
            iload 11 /* pathname */
            ifeq 25
            aload 3 /* string */
            iload 8 /* s */
            iconst_1
            isub
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifeq 25
        24: .line 110
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        25: .line 112
      StackMap locals:
      StackMap stack:
            iload 9 /* pat */
            iload 2 /* pend */
            if_icmpgt 26
            iload 9 /* pat */
            iload 2 /* pend */
            if_icmpne 29
            iload 14 /* c */
            bipush 42
            if_icmpne 29
        26: .line 113
      StackMap locals:
      StackMap stack:
            iload 11 /* pathname */
            ifeq 28
            aload 3 /* string */
            iload 8 /* s */
            iload 5 /* send */
            invokestatic org.jruby.util.Dir.rb_path_next:([BII)I
            iload 5 /* send */
            if_icmpge 28
        27: .line 114
            iconst_1
            ireturn
        28: .line 116
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        29: .line 118
      StackMap locals:
      StackMap stack:
            iload 11 /* pathname */
            ifeq 35
            iload 14 /* c */
            invokestatic org.jruby.util.Dir.isdirsep:(C)Z
            ifeq 35
        30: .line 119
            aload 3 /* string */
            iload 8 /* s */
            iload 5 /* send */
            invokestatic org.jruby.util.Dir.rb_path_next:([BII)I
            istore 8 /* s */
        31: .line 120
            iload 8 /* s */
            iload 5 /* send */
            if_icmpge 34
        32: .line 121
            iinc 8 /* s */ 1
        33: .line 122
            goto 71
        34: .line 124
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        35: .line 126
      StackMap locals:
      StackMap stack:
            iload 10 /* escape */
            ifeq 36
            iload 14 /* c */
            bipush 92
            if_icmpne 36
            iload 9 /* pat */
            iload 2 /* pend */
            if_icmpge 36
            aload 0 /* bytes */
            iload 9 /* pat */
            baload
            sipush 255
            iand
            goto 37
      StackMap locals:
      StackMap stack:
        36: iload 14 /* c */
      StackMap locals:
      StackMap stack: int
        37: i2c
            istore 7 /* test */
        start local 7 // char test
        38: .line 127
            iload 7 /* test */
            invokestatic java.lang.Character.toLowerCase:(C)C
            istore 7 /* test */
        39: .line 128
            iinc 9 /* pat */ -1
        40: .line 129
            goto 47
        41: .line 130
      StackMap locals: byte[] int int byte[] int int int int int int int int int int int
      StackMap stack:
            iload 14 /* c */
            bipush 63
            if_icmpeq 42
            iload 14 /* c */
            bipush 91
            if_icmpeq 42
            aload 3 /* string */
            iload 8 /* s */
            baload
            i2c
            invokestatic java.lang.Character.toLowerCase:(C)C
            iload 7 /* test */
            if_icmpne 44
        42: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* bytes */
            iload 9 /* pat */
            iload 2 /* pend */
            aload 3 /* string */
            iload 8 /* s */
            iload 5 /* send */
            iload 6 /* flags */
            iconst_4
            ior
            invokestatic org.jruby.util.Dir.fnmatch:([BII[BIII)I
            ifne 44
        43: .line 132
            iconst_0
            ireturn
        44: .line 133
      StackMap locals:
      StackMap stack:
            iload 11 /* pathname */
            ifeq 46
            aload 3 /* string */
            iload 8 /* s */
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifeq 46
        45: .line 134
            goto 48
        46: .line 136
      StackMap locals:
      StackMap stack:
            iinc 8 /* s */ 1
        47: .line 129
      StackMap locals:
      StackMap stack:
            iload 8 /* s */
            iload 5 /* send */
            if_icmplt 41
        48: .line 138
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 7 // char test
        49: .line 140
      StackMap locals: byte[] int int byte[] int int int top int int int int int int int
      StackMap stack:
            iload 8 /* s */
            iload 5 /* send */
            if_icmpge 51
            iload 11 /* pathname */
            ifeq 50
            aload 3 /* string */
            iload 8 /* s */
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifne 51
        50: .line 141
      StackMap locals:
      StackMap stack:
            iload 12 /* period */
            ifeq 52
            aload 3 /* string */
            iload 8 /* s */
            baload
            bipush 46
            if_icmpne 52
            iload 8 /* s */
            ifeq 51
            iload 11 /* pathname */
            ifeq 52
            aload 3 /* string */
            iload 8 /* s */
            iconst_1
            isub
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifeq 52
        51: .line 142
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        52: .line 144
      StackMap locals:
      StackMap stack:
            aload 0 /* bytes */
            iload 9 /* pat */
            iload 2 /* pend */
            aload 3 /* string */
            iload 8 /* s */
            baload
            sipush 255
            iand
            i2c
            iload 6 /* flags */
            invokestatic org.jruby.util.Dir.range:([BIICI)I
            istore 9 /* pat */
        53: .line 145
            iload 9 /* pat */
            iconst_m1
            if_icmpne 55
        54: .line 146
            iconst_1
            ireturn
        55: .line 148
      StackMap locals:
      StackMap stack:
            iinc 8 /* s */ 1
        56: .line 149
            goto 71
        57: .line 151
      StackMap locals:
      StackMap stack:
            iload 10 /* escape */
            ifeq 62
        58: .line 152
            iload 9 /* pat */
            iload 2 /* pend */
            if_icmplt 61
        59: .line 153
            bipush 92
            istore 14 /* c */
        60: .line 154
            goto 62
        61: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* bytes */
            iload 9 /* pat */
            iinc 9 /* pat */ 1
            baload
            sipush 255
            iand
            i2c
            istore 14 /* c */
        62: .line 159
      StackMap locals:
      StackMap stack:
            iload 8 /* s */
            iload 5 /* send */
            if_icmplt 64
        63: .line 160
            iconst_1
            ireturn
        64: .line 162
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.Dir.DOSISH:Z
            ifeq 65
            iload 11 /* pathname */
            ifeq 65
            iload 14 /* c */
            invokestatic org.jruby.util.Dir.isdirsep:(C)Z
            ifeq 65
            aload 3 /* string */
            iload 8 /* s */
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifne 70
        65: .line 164
      StackMap locals:
      StackMap stack:
            iload 13 /* nocase */
            ifeq 68
        66: .line 165
            iload 14 /* c */
            invokestatic java.lang.Character.toLowerCase:(C)C
            aload 3 /* string */
            iload 8 /* s */
            baload
            i2c
            invokestatic java.lang.Character.toLowerCase:(C)C
            if_icmpeq 70
        67: .line 166
            iconst_1
            ireturn
        68: .line 170
      StackMap locals:
      StackMap stack:
            iload 14 /* c */
            aload 3 /* string */
            iload 8 /* s */
            baload
            sipush 255
            iand
            i2c
            if_icmpeq 70
        69: .line 171
            iconst_1
            ireturn
        70: .line 176
      StackMap locals:
      StackMap stack:
            iinc 8 /* s */ 1
        end local 14 // char c
        71: .line 97
      StackMap locals:
      StackMap stack:
            iload 9 /* pat */
            iload 2 /* pend */
            if_icmplt 15
        72: .line 180
            iload 8 /* s */
            iload 5 /* send */
            if_icmplt 73
            iconst_0
            goto 74
      StackMap locals:
      StackMap stack:
        73: iconst_1
      StackMap locals:
      StackMap stack: int
        74: ireturn
        end local 13 // boolean nocase
        end local 12 // boolean period
        end local 11 // boolean pathname
        end local 10 // boolean escape
        end local 9 // int pat
        end local 8 // int s
        end local 6 // int flags
        end local 5 // int send
        end local 4 // int sstart
        end local 3 // byte[] string
        end local 2 // int pend
        end local 1 // int pstart
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   75     0     bytes  [B
            0   75     1    pstart  I
            0   75     2      pend  I
            0   75     3    string  [B
            0   75     4    sstart  I
            0   75     5      send  I
            0   75     6     flags  I
           38   49     7      test  C
            1   75     8         s  I
            2   75     9       pat  I
            5   75    10    escape  Z
            8   75    11  pathname  Z
           11   75    12    period  Z
           14   75    13    nocase  Z
           16   71    14         c  C
    MethodParameters:
        Name  Flags
      bytes   
      pstart  
      pend    
      string  
      sstart  
      send    
      flags   

  public static int fnmatch(byte[], int, int, byte[], int, int, int);
    descriptor: ([BII[BIII)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=15, args_size=7
        start local 0 // byte[] bytes
        start local 1 // int pstart
        start local 2 // int pend
        start local 3 // byte[] string
        start local 4 // int sstart
        start local 5 // int send
        start local 6 // int flags
         0: .line 190
            iload 6 /* flags */
            iconst_4
            iand
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 7 /* period */
        start local 7 // boolean period
         3: .line 191
            iload 6 /* flags */
            iconst_2
            iand
            ifeq 4
            iconst_1
            goto 5
      StackMap locals: int
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 8 /* pathname */
        start local 8 // boolean pathname
         6: .line 193
            iload 1 /* pstart */
            istore 9 /* pat_pos */
        start local 9 // int pat_pos
         7: .line 194
            iload 4 /* sstart */
            istore 10 /* str_pos */
        start local 10 // int str_pos
         8: .line 195
            iconst_m1
            istore 11 /* ptmp */
        start local 11 // int ptmp
         9: .line 196
            iconst_m1
            istore 12 /* stmp */
        start local 12 // int stmp
        10: .line 198
            iload 8 /* pathname */
            ifeq 34
        11: .line 200
      StackMap locals: byte[] int int byte[] int int int int int int int int int
      StackMap stack:
            aload 0 /* bytes */
            iload 9 /* pat_pos */
            invokestatic org.jruby.util.Dir.isDoubleStarAndSlash:([BI)Z
            ifeq 15
        12: .line 201
      StackMap locals:
      StackMap stack:
            iinc 9 /* pat_pos */ 3
            aload 0 /* bytes */
            iload 9 /* pat_pos */
            invokestatic org.jruby.util.Dir.isDoubleStarAndSlash:([BI)Z
            ifne 12
        13: .line 202
            iload 9 /* pat_pos */
            istore 11 /* ptmp */
        14: .line 203
            iload 10 /* str_pos */
            istore 12 /* stmp */
        15: .line 206
      StackMap locals:
      StackMap stack:
            aload 0 /* bytes */
            iload 9 /* pat_pos */
            iload 2 /* pend */
            invokestatic org.jruby.util.Dir.nextSlashIndex:([BII)I
            istore 13 /* patSlashIdx */
        start local 13 // int patSlashIdx
        16: .line 207
            aload 3 /* string */
            iload 10 /* str_pos */
            iload 5 /* send */
            invokestatic org.jruby.util.Dir.nextSlashIndex:([BII)I
            istore 14 /* strSlashIdx */
        start local 14 // int strSlashIdx
        17: .line 209
            aload 0 /* bytes */
            iload 9 /* pat_pos */
            iload 13 /* patSlashIdx */
        18: .line 210
            aload 3 /* string */
            iload 10 /* str_pos */
            iload 14 /* strSlashIdx */
            iload 6 /* flags */
        19: .line 209
            invokestatic org.jruby.util.Dir.fnmatch_helper:([BII[BIII)I
            ifne 26
        20: .line 211
            iload 13 /* patSlashIdx */
            iload 2 /* pend */
            if_icmpge 24
            iload 14 /* strSlashIdx */
            iload 5 /* send */
            if_icmpge 24
        21: .line 212
            iinc 13 /* patSlashIdx */ 1
            iload 13 /* patSlashIdx */
            istore 9 /* pat_pos */
        22: .line 213
            iinc 14 /* strSlashIdx */ 1
            iload 14 /* strSlashIdx */
            istore 10 /* str_pos */
        23: .line 214
            goto 11
        24: .line 216
      StackMap locals: int int
      StackMap stack:
            iload 13 /* patSlashIdx */
            iload 2 /* pend */
            if_icmpne 26
            iload 14 /* strSlashIdx */
            iload 5 /* send */
            if_icmpne 26
        25: .line 217
            iconst_0
            ireturn
        26: .line 221
      StackMap locals:
      StackMap stack:
            iload 11 /* ptmp */
            iconst_m1
            if_icmpeq 33
            iload 12 /* stmp */
            iconst_m1
            if_icmpeq 33
            iload 7 /* period */
            ifeq 27
            aload 3 /* string */
            iload 12 /* stmp */
            baload
            bipush 46
            if_icmpeq 33
        27: .line 222
      StackMap locals:
      StackMap stack:
            aload 3 /* string */
            iload 12 /* stmp */
            iload 5 /* send */
            invokestatic org.jruby.util.Dir.nextSlashIndex:([BII)I
            istore 12 /* stmp */
        28: .line 223
            iload 12 /* stmp */
            iload 5 /* send */
            if_icmpge 33
        29: .line 224
            iload 11 /* ptmp */
            istore 9 /* pat_pos */
        30: .line 225
            iinc 12 /* stmp */ 1
        31: .line 226
            iload 12 /* stmp */
            istore 10 /* str_pos */
        32: .line 227
            goto 11
        33: .line 230
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 14 // int strSlashIdx
        end local 13 // int patSlashIdx
        34: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* bytes */
            iload 1 /* pstart */
            iload 2 /* pend */
            aload 3 /* string */
            iload 4 /* sstart */
            iload 5 /* send */
            iload 6 /* flags */
            invokestatic org.jruby.util.Dir.fnmatch_helper:([BII[BIII)I
            ireturn
        end local 12 // int stmp
        end local 11 // int ptmp
        end local 10 // int str_pos
        end local 9 // int pat_pos
        end local 8 // boolean pathname
        end local 7 // boolean period
        end local 6 // int flags
        end local 5 // int send
        end local 4 // int sstart
        end local 3 // byte[] string
        end local 2 // int pend
        end local 1 // int pstart
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   35     0        bytes  [B
            0   35     1       pstart  I
            0   35     2         pend  I
            0   35     3       string  [B
            0   35     4       sstart  I
            0   35     5         send  I
            0   35     6        flags  I
            3   35     7       period  Z
            6   35     8     pathname  Z
            7   35     9      pat_pos  I
            8   35    10      str_pos  I
            9   35    11         ptmp  I
           10   35    12         stmp  I
           16   34    13  patSlashIdx  I
           17   34    14  strSlashIdx  I
    MethodParameters:
        Name  Flags
      bytes   
      pstart  
      pend    
      string  
      sstart  
      send    
      flags   

  private static boolean isDoubleStarAndSlash(byte[], int);
    descriptor: ([BI)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // byte[] bytes
        start local 1 // int pos
         0: .line 240
            aload 0 /* bytes */
            arraylength
            iload 1 /* pos */
            isub
            iconst_2
            if_icmpgt 2
         1: .line 241
            iconst_0
            ireturn
         2: .line 244
      StackMap locals:
      StackMap stack:
            aload 0 /* bytes */
            iload 1 /* pos */
            baload
            bipush 42
            if_icmpne 6
         3: .line 245
            aload 0 /* bytes */
            iload 1 /* pos */
            iconst_1
            iadd
            baload
            bipush 42
            if_icmpne 6
         4: .line 246
            aload 0 /* bytes */
            iload 1 /* pos */
            iconst_2
            iadd
            baload
            bipush 47
            if_icmpne 6
         5: .line 244
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         6: iconst_0
            ireturn
        end local 1 // int pos
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0  bytes  [B
            0    7     1    pos  I
    MethodParameters:
       Name  Flags
      bytes  
      pos    

  private static int nextSlashIndex(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // byte[] bytes
        start local 1 // int start
        start local 2 // int end
         0: .line 251
            iload 1 /* start */
            istore 3 /* idx */
        start local 3 // int idx
         1: .line 252
            goto 3
         2: .line 253
      StackMap locals: int
      StackMap stack:
            iinc 3 /* idx */ 1
         3: .line 252
      StackMap locals:
      StackMap stack:
            iload 3 /* idx */
            iload 2 /* end */
            if_icmpge 4
            iload 3 /* idx */
            aload 0 /* bytes */
            arraylength
            if_icmpge 4
            aload 0 /* bytes */
            iload 3 /* idx */
            baload
            bipush 47
            if_icmpne 2
         4: .line 255
      StackMap locals:
      StackMap stack:
            iload 3 /* idx */
            ireturn
        end local 3 // int idx
        end local 2 // int end
        end local 1 // int start
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0  bytes  [B
            0    5     1  start  I
            0    5     2    end  I
            1    5     3    idx  I
    MethodParameters:
       Name  Flags
      bytes  
      start  
      end    

  public static int range(byte[], int, int, char, int);
    descriptor: ([BIICI)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=11, args_size=5
        start local 0 // byte[] _pat
        start local 1 // int pat
        start local 2 // int pend
        start local 3 // char test
        start local 4 // int flags
         0: .line 260
            iconst_0
            istore 6 /* ok */
        start local 6 // boolean ok
         1: .line 261
            iload 4 /* flags */
            bipush 8
            iand
            ifeq 2
            iconst_1
            goto 3
      StackMap locals: byte[] int int int int top int
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: istore 7 /* nocase */
        start local 7 // boolean nocase
         4: .line 262
            iload 4 /* flags */
            iconst_1
            iand
            ifne 5
            iconst_1
            goto 6
      StackMap locals: int
      StackMap stack:
         5: iconst_0
      StackMap locals:
      StackMap stack: int
         6: istore 8 /* escape */
        start local 8 // boolean escape
         7: .line 264
            aload 0 /* _pat */
            iload 1 /* pat */
            baload
            bipush 33
            if_icmpeq 8
            aload 0 /* _pat */
            iload 1 /* pat */
            baload
            bipush 94
            if_icmpeq 8
            iconst_0
            goto 9
      StackMap locals: int
      StackMap stack:
         8: iconst_1
      StackMap locals:
      StackMap stack: int
         9: istore 5 /* not */
        start local 5 // boolean not
        10: .line 265
            iload 5 /* not */
            ifeq 12
        11: .line 266
            iinc 1 /* pat */ 1
        12: .line 269
      StackMap locals: byte[] int int int int int int int int
      StackMap stack:
            iload 7 /* nocase */
            ifeq 35
        13: .line 270
            iload 3 /* test */
            invokestatic java.lang.Character.toLowerCase:(C)C
            istore 3 /* test */
        14: .line 273
            goto 35
        15: .line 275
      StackMap locals:
      StackMap stack:
            iload 8 /* escape */
            ifeq 17
            aload 0 /* _pat */
            iload 1 /* pat */
            baload
            bipush 92
            if_icmpne 17
        16: .line 276
            iinc 1 /* pat */ 1
        17: .line 278
      StackMap locals:
      StackMap stack:
            iload 1 /* pat */
            iload 2 /* pend */
            if_icmplt 19
        18: .line 279
            iconst_m1
            ireturn
        19: .line 281
      StackMap locals:
      StackMap stack:
            aload 0 /* _pat */
            iload 1 /* pat */
            iinc 1 /* pat */ 1
            baload
            sipush 255
            iand
            i2c
            dup
            istore 10 /* cend */
        start local 10 // char cend
        20: istore 9 /* cstart */
        start local 9 // char cstart
        21: .line 282
            aload 0 /* _pat */
            iload 1 /* pat */
            baload
            bipush 45
            if_icmpne 28
            aload 0 /* _pat */
            iload 1 /* pat */
            iconst_1
            iadd
            baload
            bipush 93
            if_icmpeq 28
        22: .line 283
            iinc 1 /* pat */ 1
        23: .line 284
            iload 8 /* escape */
            ifeq 25
            aload 0 /* _pat */
            iload 1 /* pat */
            baload
            bipush 92
            if_icmpne 25
        24: .line 285
            iinc 1 /* pat */ 1
        25: .line 287
      StackMap locals: int int
      StackMap stack:
            iload 1 /* pat */
            iload 2 /* pend */
            if_icmplt 27
        26: .line 288
            iconst_m1
            ireturn
        27: .line 291
      StackMap locals:
      StackMap stack:
            aload 0 /* _pat */
            iload 1 /* pat */
            iinc 1 /* pat */ 1
            baload
            sipush 255
            iand
            i2c
            istore 10 /* cend */
        28: .line 294
      StackMap locals:
      StackMap stack:
            iload 7 /* nocase */
            ifeq 33
        29: .line 295
            iload 9 /* cstart */
            invokestatic java.lang.Character.toLowerCase:(C)C
            iload 3 /* test */
            if_icmpgt 35
        30: .line 296
            iload 3 /* test */
            iload 10 /* cend */
            invokestatic java.lang.Character.toLowerCase:(C)C
            if_icmpgt 35
        31: .line 297
            iconst_1
            istore 6 /* ok */
        32: .line 299
            goto 35
        33: .line 300
      StackMap locals:
      StackMap stack:
            iload 9 /* cstart */
            iload 3 /* test */
            if_icmpgt 35
            iload 3 /* test */
            iload 10 /* cend */
            if_icmpgt 35
        34: .line 301
            iconst_1
            istore 6 /* ok */
        end local 10 // char cend
        end local 9 // char cstart
        35: .line 273
      StackMap locals:
      StackMap stack:
            aload 0 /* _pat */
            iload 1 /* pat */
            baload
            bipush 93
            if_icmpne 15
        36: .line 306
            iload 6 /* ok */
            iload 5 /* not */
            if_icmpne 37
            iconst_m1
            goto 38
      StackMap locals:
      StackMap stack:
        37: iload 1 /* pat */
            iconst_1
            iadd
      StackMap locals:
      StackMap stack: int
        38: ireturn
        end local 8 // boolean escape
        end local 7 // boolean nocase
        end local 6 // boolean ok
        end local 5 // boolean not
        end local 4 // int flags
        end local 3 // char test
        end local 2 // int pend
        end local 1 // int pat
        end local 0 // byte[] _pat
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   39     0    _pat  [B
            0   39     1     pat  I
            0   39     2    pend  I
            0   39     3    test  C
            0   39     4   flags  I
           10   39     5     not  Z
            1   39     6      ok  Z
            4   39     7  nocase  Z
            7   39     8  escape  Z
           21   35     9  cstart  C
           20   35    10    cend  C
    MethodParameters:
       Name  Flags
      _pat   
      pat    
      pend   
      test   
      flags  

  public static java.util.List<org.jruby.util.ByteList> push_glob(org.jruby.Ruby, java.lang.String, org.jruby.util.ByteList, int);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;I)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String cwd
        start local 2 // org.jruby.util.ByteList globByteList
        start local 3 // int flags
         0: .line 310
            aload 2 /* globByteList */
            invokevirtual org.jruby.util.ByteList.length:()I
            ifle 4
         1: .line 311
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* result */
        start local 4 // java.util.ArrayList result
         2: .line 312
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 4 /* result */
            new org.jruby.util.Dir$GlobPattern
            dup
            aload 2 /* globByteList */
            iload 3 /* flags */
            invokespecial org.jruby.util.Dir$GlobPattern.<init>:(Lorg/jruby/util/ByteList;I)V
            invokestatic org.jruby.util.Dir.push_braces:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/util/List;Lorg/jruby/util/Dir$GlobPattern;)I
            pop
         3: .line 313
            aload 4 /* result */
            areturn
        end local 4 // java.util.ArrayList result
         4: .line 316
      StackMap locals:
      StackMap stack:
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
        end local 3 // int flags
        end local 2 // org.jruby.util.ByteList globByteList
        end local 1 // java.lang.String cwd
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0       runtime  Lorg/jruby/Ruby;
            0    5     1           cwd  Ljava/lang/String;
            0    5     2  globByteList  Lorg/jruby/util/ByteList;
            0    5     3         flags  I
            2    4     4        result  Ljava/util/ArrayList<Lorg/jruby/util/ByteList;>;
    Signature: (Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;I)Ljava/util/List<Lorg/jruby/util/ByteList;>;
    MethodParameters:
              Name  Flags
      runtime       
      cwd           
      globByteList  
      flags         

  private static int push_braces(org.jruby.Ruby, java.lang.String, java.util.List<org.jruby.util.ByteList>, org.jruby.util.Dir$GlobPattern);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Ljava/util/List;Lorg/jruby/util/Dir$GlobPattern;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=10, args_size=4
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String cwd
        start local 2 // java.util.List result
        start local 3 // org.jruby.util.Dir$GlobPattern pattern
         0: .line 430
            aload 3 /* pattern */
            invokevirtual org.jruby.util.Dir$GlobPattern.reset:()V
         1: .line 431
            aload 3 /* pattern */
            bipush 123
            invokevirtual org.jruby.util.Dir$GlobPattern.indexOf:(B)I
            istore 4 /* lbrace */
        start local 4 // int lbrace
         2: .line 432
            aload 3 /* pattern */
            iload 4 /* lbrace */
            invokevirtual org.jruby.util.Dir$GlobPattern.findClosingIndexOf:(I)I
            istore 5 /* rbrace */
        start local 5 // int rbrace
         3: .line 435
            iload 4 /* lbrace */
            iconst_m1
            if_icmpeq 6
            iload 5 /* rbrace */
            iconst_m1
            if_icmpeq 6
         4: .line 436
            iload 4 /* lbrace */
            ifle 5
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 4 /* lbrace */
            iconst_1
            isub
            baload
            bipush 92
            if_icmpeq 6
         5: .line 437
      StackMap locals: int int
      StackMap stack:
            iload 5 /* rbrace */
            ifle 20
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 5 /* rbrace */
            iconst_1
            isub
            baload
            bipush 92
            if_icmpne 20
         6: .line 438
      StackMap locals:
      StackMap stack:
            new org.jruby.util.ByteList
            dup
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            arraylength
            iconst_1
            isub
            invokespecial org.jruby.util.ByteList.<init>:(I)V
            astore 6 /* unescaped */
        start local 6 // org.jruby.util.ByteList unescaped
         7: .line 439
            aload 6 /* unescaped */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.enc:Lorg/jcodings/Encoding;
            invokevirtual org.jruby.util.ByteList.setEncoding:(Lorg/jcodings/Encoding;)V
         8: .line 440
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.begin:I
            istore 7 /* i */
        start local 7 // int i
         9: goto 18
        10: .line 441
      StackMap locals: org.jruby.util.ByteList int
      StackMap stack:
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 7 /* i */
            baload
            istore 8 /* b */
        start local 8 // byte b
        11: .line 442
            iload 8 /* b */
            bipush 92
            if_icmpne 16
            iload 7 /* i */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            arraylength
            iconst_1
            isub
            if_icmpge 16
        12: .line 443
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 7 /* i */
            iconst_1
            iadd
            baload
            istore 9 /* next_b */
        start local 9 // byte next_b
        13: .line 444
            iload 9 /* next_b */
            bipush 123
            if_icmpeq 17
            iload 9 /* next_b */
            bipush 125
            if_icmpeq 17
        14: .line 445
            aload 6 /* unescaped */
            iload 8 /* b */
            invokevirtual org.jruby.util.ByteList.append:(B)Lorg/jruby/util/ByteList;
            pop
        end local 9 // byte next_b
        15: .line 447
            goto 17
        16: .line 448
      StackMap locals: int
      StackMap stack:
            aload 6 /* unescaped */
            iload 8 /* b */
            invokevirtual org.jruby.util.ByteList.append:(B)Lorg/jruby/util/ByteList;
            pop
        end local 8 // byte b
        17: .line 440
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 7 /* i */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.end:I
            if_icmplt 10
        end local 7 // int i
        19: .line 451
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 2 /* result */
            aload 6 /* unescaped */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.flags:I
            invokestatic org.jruby.util.Dir.push_globs:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/util/List;Lorg/jruby/util/ByteList;I)I
            ireturn
        end local 6 // org.jruby.util.ByteList unescaped
        20: .line 456
      StackMap locals:
      StackMap stack:
            new org.jruby.util.ByteList
            dup
            bipush 20
            invokespecial org.jruby.util.ByteList.<init>:(I)V
            astore 6 /* bytes */
        start local 6 // org.jruby.util.ByteList bytes
        21: .line 457
            aload 6 /* bytes */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.enc:Lorg/jcodings/Encoding;
            invokevirtual org.jruby.util.ByteList.setEncoding:(Lorg/jcodings/Encoding;)V
        22: .line 459
            iload 4 /* lbrace */
            istore 8 /* i */
        start local 8 // int i
        23: .line 460
            goto 37
        24: .line 461
      StackMap locals: org.jruby.Ruby java.lang.String java.util.List org.jruby.util.Dir$GlobPattern int int org.jruby.util.ByteList top int
      StackMap stack:
            iload 8 /* i */
            iconst_1
            iadd
            istore 7 /* middleRegionIndex */
        start local 7 // int middleRegionIndex
        25: .line 462
            iload 7 /* middleRegionIndex */
            istore 8 /* i */
            goto 30
        26: .line 463
      StackMap locals: org.jruby.Ruby java.lang.String java.util.List org.jruby.util.Dir$GlobPattern int int org.jruby.util.ByteList int int
      StackMap stack:
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 8 /* i */
            baload
            bipush 44
            if_icmpne 28
        27: .line 464
            iload 8 /* i */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.begin:I
            if_icmple 31
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 8 /* i */
            iconst_1
            isub
            baload
            bipush 92
            if_icmpne 31
            goto 29
        28: .line 467
      StackMap locals:
      StackMap stack:
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 8 /* i */
            baload
            bipush 123
            if_icmpne 29
            aload 3 /* pattern */
            iload 8 /* i */
            invokevirtual org.jruby.util.Dir$GlobPattern.findClosingIndexOf:(I)I
            istore 8 /* i */
        29: .line 462
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        30: iload 8 /* i */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.end:I
            if_icmpge 31
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 8 /* i */
            baload
            bipush 125
            if_icmpne 26
        31: .line 470
      StackMap locals:
      StackMap stack:
            aload 6 /* bytes */
            iconst_0
            invokevirtual org.jruby.util.ByteList.length:(I)V
        32: .line 471
            aload 6 /* bytes */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.begin:I
            iload 4 /* lbrace */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.begin:I
            isub
            invokevirtual org.jruby.util.ByteList.append:([BII)V
        33: .line 472
            aload 6 /* bytes */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 7 /* middleRegionIndex */
            iload 8 /* i */
            iload 7 /* middleRegionIndex */
            isub
            invokevirtual org.jruby.util.ByteList.append:([BII)V
        34: .line 473
            aload 6 /* bytes */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 5 /* rbrace */
            iconst_1
            iadd
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.end:I
            iload 5 /* rbrace */
            iconst_1
            iadd
            isub
            invokevirtual org.jruby.util.ByteList.append:([BII)V
        35: .line 474
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 2 /* result */
            new org.jruby.util.Dir$GlobPattern
            dup
            aload 6 /* bytes */
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.flags:I
            invokespecial org.jruby.util.Dir$GlobPattern.<init>:(Lorg/jruby/util/ByteList;I)V
            invokestatic org.jruby.util.Dir.push_braces:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/util/List;Lorg/jruby/util/Dir$GlobPattern;)I
            istore 9 /* status */
        start local 9 // int status
        36: .line 475
            iload 9 /* status */
            ifeq 37
            iload 9 /* status */
            ireturn
        end local 9 // int status
        end local 7 // int middleRegionIndex
        37: .line 460
      StackMap locals: org.jruby.Ruby java.lang.String java.util.List org.jruby.util.Dir$GlobPattern int int org.jruby.util.ByteList top int
      StackMap stack:
            aload 3 /* pattern */
            getfield org.jruby.util.Dir$GlobPattern.bytes:[B
            iload 8 /* i */
            baload
            bipush 125
            if_icmpne 24
        38: .line 478
            iconst_0
            ireturn
        end local 8 // int i
        end local 6 // org.jruby.util.ByteList bytes
        end local 5 // int rbrace
        end local 4 // int lbrace
        end local 3 // org.jruby.util.Dir$GlobPattern pattern
        end local 2 // java.util.List result
        end local 1 // java.lang.String cwd
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   39     0            runtime  Lorg/jruby/Ruby;
            0   39     1                cwd  Ljava/lang/String;
            0   39     2             result  Ljava/util/List<Lorg/jruby/util/ByteList;>;
            0   39     3            pattern  Lorg/jruby/util/Dir$GlobPattern;
            2   39     4             lbrace  I
            3   39     5             rbrace  I
            7   20     6          unescaped  Lorg/jruby/util/ByteList;
            9   19     7                  i  I
           11   17     8                  b  B
           13   15     9             next_b  B
           21   39     6              bytes  Lorg/jruby/util/ByteList;
           25   37     7  middleRegionIndex  I
           23   39     8                  i  I
           36   37     9             status  I
    Signature: (Lorg/jruby/Ruby;Ljava/lang/String;Ljava/util/List<Lorg/jruby/util/ByteList;>;Lorg/jruby/util/Dir$GlobPattern;)I
    MethodParameters:
         Name  Flags
      runtime  
      cwd      
      result   
      pattern  

  private static int push_globs(org.jruby.Ruby, java.lang.String, java.util.List<org.jruby.util.ByteList>, org.jruby.util.ByteList, );
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Ljava/util/List;Lorg/jruby/util/ByteList;I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=10, locals=5, args_size=5
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String cwd
        start local 2 // java.util.List ary
        start local 3 // org.jruby.util.ByteList pattern
        start local 4 // int flags
         0: .line 482
            iload 4 /* flags */
            getstatic org.jruby.util.Dir.FNM_SYSCASE:I
            ior
            istore 4 /* flags */
         1: .line 483
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 3 /* pattern */
            iconst_m1
            iload 4 /* flags */
            getstatic org.jruby.util.Dir.glob_caller:Lorg/jruby/util/Dir$GlobFunc;
            new org.jruby.util.Dir$GlobArgs
            dup
            getstatic org.jruby.util.Dir.push_pattern:Lorg/jruby/util/Dir$GlobFunc;
            aload 2 /* ary */
            invokespecial org.jruby.util.Dir$GlobArgs.<init>:(Lorg/jruby/util/Dir$GlobFunc;Ljava/util/List;)V
            invokestatic org.jruby.util.Dir.glob_helper:(Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;IILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
            ireturn
        end local 4 // int flags
        end local 3 // org.jruby.util.ByteList pattern
        end local 2 // java.util.List ary
        end local 1 // java.lang.String cwd
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  runtime  Lorg/jruby/Ruby;
            0    2     1      cwd  Ljava/lang/String;
            0    2     2      ary  Ljava/util/List<Lorg/jruby/util/ByteList;>;
            0    2     3  pattern  Lorg/jruby/util/ByteList;
            0    2     4    flags  I
    Signature: (Lorg/jruby/Ruby;Ljava/lang/String;Ljava/util/List<Lorg/jruby/util/ByteList;>;Lorg/jruby/util/ByteList;I)I
    MethodParameters:
         Name  Flags
      runtime  
      cwd      
      ary      
      pattern  
      flags    

  public static java.util.ArrayList<java.lang.String> braces(java.lang.String, int, java.util.ArrayList<java.lang.String>);
    descriptor: (Ljava/lang/String;ILjava/util/ArrayList;)Ljava/util/ArrayList;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=13, args_size=3
        start local 0 // java.lang.String pattern
        start local 1 // int flags
        start local 2 // java.util.ArrayList patterns
         0: .line 487
            iload 1 /* flags */
            iconst_1
            iand
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 3 /* escape */
        start local 3 // boolean escape
         3: .line 489
            iconst_m1
            istore 4 /* rbrace */
        start local 4 // int rbrace
         4: .line 490
            iconst_m1
            istore 5 /* lbrace */
        start local 5 // int lbrace
         5: .line 493
            aload 0 /* pattern */
            bipush 123
            invokevirtual java.lang.String.indexOf:(I)I
            istore 6 /* i */
        start local 6 // int i
         6: .line 495
            iload 6 /* i */
            iflt 23
         7: .line 496
            iconst_0
            istore 7 /* nest */
        start local 7 // int nest
         8: .line 498
            goto 22
         9: .line 499
      StackMap locals: java.lang.String int java.util.ArrayList int int int int int
      StackMap stack:
            aload 0 /* pattern */
            iload 6 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 8 /* c */
        start local 8 // char c
        10: .line 501
            iload 8 /* c */
            bipush 123
            if_icmpne 14
        11: .line 502
            iload 7 /* nest */
            ifne 13
        12: .line 503
            iload 6 /* i */
            istore 5 /* lbrace */
        13: .line 505
      StackMap locals: int
      StackMap stack:
            iinc 7 /* nest */ 1
        14: .line 508
      StackMap locals:
      StackMap stack:
            iload 8 /* c */
            bipush 125
            if_icmpne 16
        15: .line 509
            iinc 7 /* nest */ -1
        16: .line 512
      StackMap locals:
      StackMap stack:
            iload 7 /* nest */
            ifne 19
        17: .line 513
            iload 6 /* i */
            istore 4 /* rbrace */
        18: .line 514
            goto 23
        19: .line 517
      StackMap locals:
      StackMap stack:
            iload 8 /* c */
            bipush 92
            if_icmpne 21
            iload 3 /* escape */
            ifeq 21
        20: .line 518
            iinc 6 /* i */ 1
        21: .line 521
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
        end local 8 // char c
        22: .line 498
      StackMap locals:
      StackMap stack:
            iload 6 /* i */
            aload 0 /* pattern */
            invokevirtual java.lang.String.length:()I
            if_icmplt 9
        end local 7 // int nest
        23: .line 527
      StackMap locals:
      StackMap stack:
            iload 5 /* lbrace */
            iflt 46
            iload 4 /* rbrace */
            iflt 46
        24: .line 528
            iload 5 /* lbrace */
            istore 7 /* pos */
        start local 7 // int pos
        25: .line 529
            aload 0 /* pattern */
            iconst_0
            iload 5 /* lbrace */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 8 /* front */
        start local 8 // java.lang.String front
        26: .line 530
            aload 0 /* pattern */
            iload 4 /* rbrace */
            iconst_1
            iadd
            aload 0 /* pattern */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 9 /* back */
        start local 9 // java.lang.String back
        27: .line 532
            goto 45
        28: .line 533
      StackMap locals: int java.lang.String java.lang.String
      StackMap stack:
            iconst_0
            istore 10 /* nest */
        start local 10 // int nest
        29: .line 534
            iinc 7 /* pos */ 1
        30: .line 535
            iload 7 /* pos */
            istore 11 /* last */
        start local 11 // int last
        31: .line 537
            goto 41
        32: .line 538
      StackMap locals: int int
      StackMap stack:
            aload 0 /* pattern */
            iload 7 /* pos */
            invokevirtual java.lang.String.charAt:(I)C
            bipush 123
            if_icmpne 34
        33: .line 539
            iinc 10 /* nest */ 1
        34: .line 541
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            iload 7 /* pos */
            invokevirtual java.lang.String.charAt:(I)C
            bipush 125
            if_icmpne 36
        35: .line 542
            iinc 10 /* nest */ -1
        36: .line 545
      StackMap locals:
      StackMap stack:
            aload 0 /* pattern */
            iload 7 /* pos */
            invokevirtual java.lang.String.charAt:(I)C
            bipush 92
            if_icmpne 40
            iload 3 /* escape */
            ifeq 40
        37: .line 546
            iinc 7 /* pos */ 1
        38: .line 547
            iload 7 /* pos */
            iload 4 /* rbrace */
            if_icmpne 40
        39: .line 548
            goto 42
        40: .line 552
      StackMap locals:
      StackMap stack:
            iinc 7 /* pos */ 1
        41: .line 537
      StackMap locals:
      StackMap stack:
            iload 7 /* pos */
            iload 4 /* rbrace */
            if_icmpge 42
            aload 0 /* pattern */
            iload 7 /* pos */
            invokevirtual java.lang.String.charAt:(I)C
            bipush 44
            if_icmpne 32
            iload 10 /* nest */
            ifne 32
        42: .line 554
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 8 /* front */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* pattern */
            iload 11 /* last */
            iload 7 /* pos */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 9 /* back */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 12 /* brace_pattern */
        start local 12 // java.lang.String brace_pattern
        43: .line 555
            aload 2 /* patterns */
            aload 12 /* brace_pattern */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        44: .line 557
            aload 12 /* brace_pattern */
            iload 1 /* flags */
            aload 2 /* patterns */
            invokestatic org.jruby.util.Dir.braces:(Ljava/lang/String;ILjava/util/ArrayList;)Ljava/util/ArrayList;
            pop
        end local 12 // java.lang.String brace_pattern
        end local 11 // int last
        end local 10 // int nest
        45: .line 532
      StackMap locals:
      StackMap stack:
            iload 7 /* pos */
            iload 4 /* rbrace */
            if_icmplt 28
        end local 9 // java.lang.String back
        end local 8 // java.lang.String front
        end local 7 // int pos
        46: .line 561
      StackMap locals:
      StackMap stack:
            aload 2 /* patterns */
            areturn
        end local 6 // int i
        end local 5 // int lbrace
        end local 4 // int rbrace
        end local 3 // boolean escape
        end local 2 // java.util.ArrayList patterns
        end local 1 // int flags
        end local 0 // java.lang.String pattern
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   47     0        pattern  Ljava/lang/String;
            0   47     1          flags  I
            0   47     2       patterns  Ljava/util/ArrayList<Ljava/lang/String;>;
            3   47     3         escape  Z
            4   47     4         rbrace  I
            5   47     5         lbrace  I
            6   47     6              i  I
            8   23     7           nest  I
           10   22     8              c  C
           25   46     7            pos  I
           26   46     8          front  Ljava/lang/String;
           27   46     9           back  Ljava/lang/String;
           29   45    10           nest  I
           31   45    11           last  I
           43   45    12  brace_pattern  Ljava/lang/String;
    Signature: (Ljava/lang/String;ILjava/util/ArrayList<Ljava/lang/String;>;)Ljava/util/ArrayList<Ljava/lang/String;>;
    MethodParameters:
          Name  Flags
      pattern   
      flags     
      patterns  

  private static boolean has_magic(byte[], int, int, int);
    descriptor: ([BIII)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=8, args_size=4
        start local 0 // byte[] bytes
        start local 1 // int begin
        start local 2 // int end
        start local 3 // int flags
         0: .line 565
            iload 3 /* flags */
            iconst_1
            iand
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 4 /* escape */
        start local 4 // boolean escape
         3: .line 566
            iload 3 /* flags */
            bipush 8
            iand
            ifeq 4
            iconst_1
            goto 5
      StackMap locals: int
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 5 /* nocase */
        start local 5 // boolean nocase
         6: .line 567
            iconst_0
            istore 6 /* open */
        start local 6 // int open
         7: .line 569
            iload 1 /* begin */
            istore 7 /* i */
        start local 7 // int i
         8: goto 17
         9: .line 570
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* bytes */
            iload 7 /* i */
            baload
            lookupswitch { // 5
                   42: 10
                   63: 10
                   91: 11
                   92: 14
                   93: 13
              default: 15
          }
        10: .line 573
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        11: .line 575
      StackMap locals:
      StackMap stack:
            iinc 6 /* open */ 1
        12: .line 576
            goto 16
        13: .line 578
      StackMap locals:
      StackMap stack:
            iload 6 /* open */
            ifle 16
            iconst_1
            ireturn
        14: .line 588
      StackMap locals:
      StackMap stack:
            iload 4 /* escape */
            ifeq 16
            iconst_1
            ireturn
        15: .line 592
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.Dir.FNM_SYSCASE:I
            ifne 16
            iload 5 /* nocase */
            ifeq 16
            aload 0 /* bytes */
            iload 7 /* i */
            baload
            sipush 255
            iand
            i2c
            invokestatic java.lang.Character.isLetter:(C)Z
            ifeq 16
            iconst_1
            ireturn
        16: .line 569
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 7 /* i */
            iload 2 /* end */
            if_icmplt 9
        end local 7 // int i
        18: .line 596
            iconst_0
            ireturn
        end local 6 // int open
        end local 5 // boolean nocase
        end local 4 // boolean escape
        end local 3 // int flags
        end local 2 // int end
        end local 1 // int begin
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0   bytes  [B
            0   19     1   begin  I
            0   19     2     end  I
            0   19     3   flags  I
            3   19     4  escape  Z
            6   19     5  nocase  Z
            7   19     6    open  I
            8   18     7       i  I
    MethodParameters:
       Name  Flags
      bytes  
      begin  
      end    
      flags  

  private static int remove_backslashes(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // byte[] bytes
        start local 1 // int index
        start local 2 // int end
         0: .line 600
            iload 1 /* index */
            istore 3 /* i */
        start local 3 // int i
         1: .line 601
            goto 5
         2: .line 602
      StackMap locals: int
      StackMap stack:
            aload 0 /* bytes */
            iload 1 /* index */
            baload
            bipush 92
            if_icmpne 3
            iinc 1 /* index */ 1
            iload 1 /* index */
            iload 2 /* end */
            if_icmpne 3
            goto 6
         3: .line 604
      StackMap locals:
      StackMap stack:
            aload 0 /* bytes */
            iload 3 /* i */
            aload 0 /* bytes */
            iload 1 /* index */
            baload
            bastore
         4: .line 601
            iinc 1 /* index */ 1
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 1 /* index */
            iload 2 /* end */
            if_icmplt 2
         6: .line 606
      StackMap locals:
      StackMap stack:
            iload 3 /* i */
            ireturn
        end local 3 // int i
        end local 2 // int end
        end local 1 // int index
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0  bytes  [B
            0    7     1  index  I
            0    7     2    end  I
            1    7     3      i  I
    MethodParameters:
       Name  Flags
      bytes  
      index  
      end    

  private static int indexOf(byte[], int, int, byte);
    descriptor: ([BIIB)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=4
        start local 0 // byte[] bytes
        start local 1 // int begin
        start local 2 // int end
        start local 3 // byte ch
         0: .line 610
            iload 1 /* begin */
            istore 4 /* i */
        start local 4 // int i
         1: goto 4
         2: .line 611
      StackMap locals: int
      StackMap stack:
            aload 0 /* bytes */
            iload 4 /* i */
            baload
            iload 3 /* ch */
            if_icmpne 3
            iload 4 /* i */
            ireturn
         3: .line 610
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         4: iload 4 /* i */
            iload 2 /* end */
            if_icmplt 2
        end local 4 // int i
         5: .line 614
            iconst_m1
            ireturn
        end local 3 // byte ch
        end local 2 // int end
        end local 1 // int begin
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0  bytes  [B
            0    6     1  begin  I
            0    6     2    end  I
            0    6     3     ch  B
            1    5     4      i  I
    MethodParameters:
       Name  Flags
      bytes  
      begin  
      end    
      ch     final

  private static byte[] extract_path(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // byte[] bytes
        start local 1 // int begin
        start local 2 // int end
         0: .line 618
            iload 2 /* end */
            iload 1 /* begin */
            isub
            istore 3 /* len */
        start local 3 // int len
         1: .line 620
            iload 3 /* len */
            iconst_1
            if_icmple 3
            aload 0 /* bytes */
            iload 2 /* end */
            iconst_1
            isub
            baload
            bipush 47
            if_icmpne 3
            getstatic org.jruby.util.Dir.DOSISH:Z
            ifeq 2
            iload 3 /* len */
            iconst_2
            if_icmplt 2
            aload 0 /* bytes */
            iload 2 /* end */
            iconst_2
            isub
            baload
            bipush 58
            if_icmpeq 3
      StackMap locals: int
      StackMap stack:
         2: iinc 3 /* len */ -1
         3: .line 622
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            newarray 8
            astore 4 /* alloc */
        start local 4 // byte[] alloc
         4: .line 623
            aload 0 /* bytes */
            iload 1 /* begin */
            aload 4 /* alloc */
            iconst_0
            iload 3 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         5: .line 624
            aload 4 /* alloc */
            areturn
        end local 4 // byte[] alloc
        end local 3 // int len
        end local 2 // int end
        end local 1 // int begin
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0  bytes  [B
            0    6     1  begin  I
            0    6     2    end  I
            1    6     3    len  I
            4    6     4  alloc  [B
    MethodParameters:
       Name  Flags
      bytes  
      begin  
      end    

  private static byte[] extract_elem(byte[], int, int);
    descriptor: ([BII)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // byte[] bytes
        start local 1 // int begin
        start local 2 // int end
         0: .line 628
            aload 0 /* bytes */
            iload 1 /* begin */
            iload 2 /* end */
            bipush 47
            invokestatic org.jruby.util.Dir.indexOf:([BIIB)I
            istore 3 /* elementEnd */
        start local 3 // int elementEnd
         1: .line 629
            iload 3 /* elementEnd */
            iconst_m1
            if_icmpne 2
            iload 2 /* end */
            istore 3 /* elementEnd */
         2: .line 631
      StackMap locals: int
      StackMap stack:
            aload 0 /* bytes */
            iload 1 /* begin */
            iload 3 /* elementEnd */
            invokestatic org.jruby.util.Dir.extract_path:([BII)[B
            areturn
        end local 3 // int elementEnd
        end local 2 // int end
        end local 1 // int begin
        end local 0 // byte[] bytes
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0       bytes  [B
            0    3     1       begin  I
            0    3     2         end  I
            1    3     3  elementEnd  I
    MethodParameters:
       Name  Flags
      bytes  
      begin  
      end    

  private static boolean beginsWithDriveLetter(byte[], int, int);
    descriptor: ([BII)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // byte[] path
        start local 1 // int begin
        start local 2 // int end
         0: .line 636
            getstatic org.jruby.util.Dir.DOSISH:Z
            ifeq 1
            iload 1 /* begin */
            iconst_2
            iadd
            iload 2 /* end */
            if_icmpge 1
            aload 0 /* path */
            iload 1 /* begin */
            iconst_1
            iadd
            baload
            bipush 58
            if_icmpne 1
            aload 0 /* path */
            iload 1 /* begin */
            iconst_2
            iadd
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 2 // int end
        end local 1 // int begin
        end local 0 // byte[] path
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   path  [B
            0    2     1  begin  I
            0    2     2    end  I
    MethodParameters:
       Name  Flags
      path   
      begin  
      end    

  private static boolean isRoot(byte[]);
    descriptor: ([B)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // byte[] base
         0: .line 641
            aload 0 /* base */
            arraylength
            istore 1 /* length */
        start local 1 // int length
         1: .line 643
            iload 1 /* length */
            ifeq 5
         2: .line 644
            iload 1 /* length */
            iconst_1
            if_icmpne 3
            aload 0 /* base */
            iconst_0
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifne 5
         3: .line 645
      StackMap locals: int
      StackMap stack:
            iload 1 /* length */
            iconst_3
            if_icmpne 4
            aload 0 /* base */
            iconst_0
            iload 1 /* length */
            invokestatic org.jruby.util.Dir.beginsWithDriveLetter:([BII)Z
            ifne 5
         4: .line 643
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_1
            ireturn
        end local 1 // int length
        end local 0 // byte[] base
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    base  [B
            1    6     1  length  I
    MethodParameters:
      Name  Flags
      base  

  private static boolean isAbsolutePath(byte[], int, int);
    descriptor: ([BII)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // byte[] path
        start local 1 // int begin
        start local 2 // int length
         0: .line 649
            aload 0 /* path */
            iload 1 /* begin */
            baload
            invokestatic org.jruby.util.Dir.isdirsep:(B)Z
            ifne 1
            aload 0 /* path */
            iload 1 /* begin */
            iload 2 /* length */
            invokestatic org.jruby.util.Dir.beginsWithDriveLetter:([BII)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 2 // int length
        end local 1 // int begin
        end local 0 // byte[] path
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    path  [B
            0    2     1   begin  I
            0    2     2  length  I
    MethodParameters:
        Name  Flags
      path    
      begin   
      length  

  private static java.lang.String[] files(org.jruby.util.FileResource);
    descriptor: (Lorg/jruby/util/FileResource;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.jruby.util.FileResource directory
         0: .line 653
            aload 0 /* directory */
            invokeinterface org.jruby.util.FileResource.list:()[Ljava/lang/String;
            astore 1 /* files */
        start local 1 // java.lang.String[] files
         1: .line 654
            aload 1 /* files */
            ifnonnull 2
            getstatic org.jruby.util.StringSupport.EMPTY_STRING_ARRAY:[Ljava/lang/String;
            goto 3
      StackMap locals: java.lang.String[]
      StackMap stack:
         2: aload 1 /* files */
      StackMap locals:
      StackMap stack: java.lang.String[]
         3: areturn
        end local 1 // java.lang.String[] files
        end local 0 // org.jruby.util.FileResource directory
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0  directory  Lorg/jruby/util/FileResource;
            1    4     1      files  [Ljava/lang/String;
    MethodParameters:
           Name  Flags
      directory  final

  private static boolean isSpecialFile(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.String name
         0: .line 664
            aload 0 /* name */
            invokevirtual java.lang.String.length:()I
            istore 1 /* length */
        start local 1 // int length
         1: .line 666
            iload 1 /* length */
            iconst_1
            if_icmplt 2
            iload 1 /* length */
            iconst_3
            if_icmpgt 2
            aload 0 /* name */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 46
            if_icmpeq 3
      StackMap locals: int
      StackMap stack:
         2: iconst_0
            ireturn
         3: .line 667
      StackMap locals:
      StackMap stack:
            iload 1 /* length */
            iconst_1
            if_icmpne 4
            iconst_1
            ireturn
         4: .line 668
      StackMap locals:
      StackMap stack:
            aload 0 /* name */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            istore 2 /* c */
        start local 2 // char c
         5: .line 669
            iload 1 /* length */
            iconst_2
            if_icmpne 7
            iload 2 /* c */
            bipush 46
            if_icmpeq 6
            iload 2 /* c */
            bipush 47
            if_icmpne 7
      StackMap locals: int
      StackMap stack:
         6: iconst_1
            ireturn
         7: .line 670
      StackMap locals:
      StackMap stack:
            iload 2 /* c */
            bipush 46
            if_icmpne 8
            aload 0 /* name */
            iconst_2
            invokevirtual java.lang.String.charAt:(I)C
            bipush 47
            if_icmpne 8
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
        end local 2 // char c
        end local 1 // int length
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    name  Ljava/lang/String;
            1    9     1  length  I
            5    9     2       c  C
    MethodParameters:
      Name  Flags
      name  

  private static int addToResultIfExists(org.jruby.Ruby, java.lang.String, byte[], int, int, org.jcodings.Encoding, int, org.jruby.util.Dir$GlobFunc<org.jruby.util.Dir$GlobArgs>, org.jruby.util.Dir$GlobArgs);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;[BIILorg/jcodings/Encoding;ILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=9
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String cwd
        start local 2 // byte[] bytes
        start local 3 // int begin
        start local 4 // int end
        start local 5 // org.jcodings.Encoding enc
        start local 6 // int flags
        start local 7 // org.jruby.util.Dir$GlobFunc func
        start local 8 // org.jruby.util.Dir$GlobArgs arg
         0: .line 674
            new java.lang.String
            dup
            aload 2 /* bytes */
            iload 3 /* begin */
            iload 4 /* end */
            iload 3 /* begin */
            isub
            aload 5 /* enc */
            invokevirtual org.jcodings.Encoding.getCharset:()Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BIILjava/nio/charset/Charset;)V
            astore 9 /* fileName */
        start local 9 // java.lang.String fileName
         1: .line 678
            getstatic org.jruby.platform.Platform.IS_WINDOWS:Z
            ifeq 5
            aload 1 /* cwd */
            ifnonnull 5
            aload 9 /* fileName */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 5
            aload 9 /* fileName */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 47
            if_icmpne 5
         2: .line 679
            ldc "SYSTEMDRIVE"
            invokestatic java.lang.System.getenv:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* cwd */
         3: .line 680
            aload 1 /* cwd */
            ifnonnull 4
            ldc "C:"
            astore 1 /* cwd */
         4: .line 681
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* cwd */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* cwd */
         5: .line 683
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 9 /* fileName */
            invokestatic org.jruby.util.JRubyFile.createResource:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/util/FileResource;
            astore 10 /* file */
        start local 10 // org.jruby.util.FileResource file
         6: .line 684
            aload 10 /* file */
            invokeinterface org.jruby.util.FileResource.exists:()Z
            ifeq 8
         7: .line 685
            aload 7 /* func */
            aload 2 /* bytes */
            iload 3 /* begin */
            iload 4 /* end */
            iload 3 /* begin */
            isub
            aload 5 /* enc */
            aload 8 /* arg */
            invokeinterface org.jruby.util.Dir$GlobFunc.call:([BIILorg/jcodings/Encoding;Ljava/lang/Object;)I
            ireturn
         8: .line 688
      StackMap locals: org.jruby.util.FileResource
      StackMap stack:
            iconst_0
            ireturn
        end local 10 // org.jruby.util.FileResource file
        end local 9 // java.lang.String fileName
        end local 8 // org.jruby.util.Dir$GlobArgs arg
        end local 7 // org.jruby.util.Dir$GlobFunc func
        end local 6 // int flags
        end local 5 // org.jcodings.Encoding enc
        end local 4 // int end
        end local 3 // int begin
        end local 2 // byte[] bytes
        end local 1 // java.lang.String cwd
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0   runtime  Lorg/jruby/Ruby;
            0    9     1       cwd  Ljava/lang/String;
            0    9     2     bytes  [B
            0    9     3     begin  I
            0    9     4       end  I
            0    9     5       enc  Lorg/jcodings/Encoding;
            0    9     6     flags  I
            0    9     7      func  Lorg/jruby/util/Dir$GlobFunc<Lorg/jruby/util/Dir$GlobArgs;>;
            0    9     8       arg  Lorg/jruby/util/Dir$GlobArgs;
            1    9     9  fileName  Ljava/lang/String;
            6    9    10      file  Lorg/jruby/util/FileResource;
    Signature: (Lorg/jruby/Ruby;Ljava/lang/String;[BIILorg/jcodings/Encoding;ILorg/jruby/util/Dir$GlobFunc<Lorg/jruby/util/Dir$GlobArgs;>;Lorg/jruby/util/Dir$GlobArgs;)I
    MethodParameters:
         Name  Flags
      runtime  
      cwd      
      bytes    
      begin    
      end      
      enc      
      flags    
      func     
      arg      

  private static int glob_helper(org.jruby.Ruby, java.lang.String, org.jruby.util.ByteList, int, int, org.jruby.util.Dir$GlobFunc<org.jruby.util.Dir$GlobArgs>, org.jruby.util.Dir$GlobArgs);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;IILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=10, locals=10, args_size=7
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String cwd
        start local 2 // org.jruby.util.ByteList path
        start local 3 // int sub
        start local 4 // int flags
        start local 5 // org.jruby.util.Dir$GlobFunc func
        start local 6 // org.jruby.util.Dir$GlobArgs arg
         0: .line 692
            aload 2 /* path */
            invokevirtual org.jruby.util.ByteList.getBegin:()I
            istore 7 /* begin */
        start local 7 // int begin
         1: .line 693
            iload 7 /* begin */
            aload 2 /* path */
            invokevirtual org.jruby.util.ByteList.getRealSize:()I
            iadd
            istore 8 /* end */
        start local 8 // int end
         2: .line 694
            aload 2 /* path */
            invokevirtual org.jruby.util.ByteList.getEncoding:()Lorg/jcodings/Encoding;
            astore 9 /* enc */
        start local 9 // org.jcodings.Encoding enc
         3: .line 695
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 2 /* path */
            invokevirtual org.jruby.util.ByteList.getUnsafeBytes:()[B
            iload 7 /* begin */
            iload 8 /* end */
            aload 9 /* enc */
            iload 3 /* sub */
            iload 4 /* flags */
            aload 5 /* func */
            aload 6 /* arg */
            invokestatic org.jruby.util.Dir.glob_helper:(Lorg/jruby/Ruby;Ljava/lang/String;[BIILorg/jcodings/Encoding;IILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
            ireturn
        end local 9 // org.jcodings.Encoding enc
        end local 8 // int end
        end local 7 // int begin
        end local 6 // org.jruby.util.Dir$GlobArgs arg
        end local 5 // org.jruby.util.Dir$GlobFunc func
        end local 4 // int flags
        end local 3 // int sub
        end local 2 // org.jruby.util.ByteList path
        end local 1 // java.lang.String cwd
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  runtime  Lorg/jruby/Ruby;
            0    4     1      cwd  Ljava/lang/String;
            0    4     2     path  Lorg/jruby/util/ByteList;
            0    4     3      sub  I
            0    4     4    flags  I
            0    4     5     func  Lorg/jruby/util/Dir$GlobFunc<Lorg/jruby/util/Dir$GlobArgs;>;
            0    4     6      arg  Lorg/jruby/util/Dir$GlobArgs;
            1    4     7    begin  I
            2    4     8      end  I
            3    4     9      enc  Lorg/jcodings/Encoding;
    Signature: (Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;IILorg/jruby/util/Dir$GlobFunc<Lorg/jruby/util/Dir$GlobArgs;>;Lorg/jruby/util/Dir$GlobArgs;)I
    MethodParameters:
         Name  Flags
      runtime  
      cwd      
      path     
      sub      
      flags    
      func     
      arg      

  private static int glob_helper(org.jruby.Ruby, java.lang.String, byte[], int, int, org.jcodings.Encoding, int, int, org.jruby.util.Dir$GlobFunc<org.jruby.util.Dir$GlobArgs>, org.jruby.util.Dir$GlobArgs);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;[BIILorg/jcodings/Encoding;IILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=25, args_size=10
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String cwd
        start local 2 // byte[] path
        start local 3 // int begin
        start local 4 // int end
        start local 5 // org.jcodings.Encoding enc
        start local 6 // int sub
        start local 7 // int flags
        start local 8 // org.jruby.util.Dir$GlobFunc func
        start local 9 // org.jruby.util.Dir$GlobArgs arg
         0: .line 701
            iconst_0
            istore 10 /* status */
        start local 10 // int status
         1: .line 703
            iload 6 /* sub */
            iconst_m1
            if_icmpeq 2
            iload 6 /* sub */
            goto 3
      StackMap locals: int
      StackMap stack:
         2: iload 3 /* begin */
      StackMap locals:
      StackMap stack: int
         3: istore 11 /* ptr */
        start local 11 // int ptr
         4: .line 705
            aload 2 /* path */
            iload 11 /* ptr */
            iload 4 /* end */
            iload 7 /* flags */
            invokestatic org.jruby.util.Dir.has_magic:([BIII)Z
            ifne 20
         5: .line 706
            getstatic org.jruby.util.Dir.DOSISH:Z
            ifne 6
            iload 7 /* flags */
            iconst_1
            iand
            ifne 14
         6: .line 707
      StackMap locals: int
      StackMap stack:
            iload 6 /* sub */
            iconst_m1
            if_icmpeq 9
         7: .line 708
            aload 2 /* path */
            iload 6 /* sub */
            iload 4 /* end */
            invokestatic org.jruby.util.Dir.remove_backslashes:([BII)I
            istore 4 /* end */
         8: .line 709
            goto 14
         9: .line 711
      StackMap locals:
      StackMap stack:
            iload 4 /* end */
            iload 3 /* begin */
            isub
            istore 12 /* len */
        start local 12 // int len
        10: .line 712
            iload 12 /* len */
            newarray 8
            astore 13 /* newPath */
        start local 13 // byte[] newPath
        11: .line 713
            aload 2 /* path */
            iload 3 /* begin */
            aload 13 /* newPath */
            iconst_0
            iload 12 /* len */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        12: .line 714
            iconst_0
            istore 3 /* begin */
            aload 13 /* newPath */
            iconst_0
            iload 12 /* len */
            invokestatic org.jruby.util.Dir.remove_backslashes:([BII)I
            istore 4 /* end */
        13: .line 715
            aload 13 /* newPath */
            astore 2 /* path */
        end local 13 // byte[] newPath
        end local 12 // int len
        14: .line 719
      StackMap locals:
      StackMap stack:
            iload 4 /* end */
            iload 3 /* begin */
            if_icmple 19
        15: .line 720
            aload 2 /* path */
            iload 3 /* begin */
            iload 4 /* end */
            invokestatic org.jruby.util.Dir.isAbsolutePath:([BII)Z
            ifeq 18
        16: .line 721
            aload 0 /* runtime */
            aconst_null
            aload 2 /* path */
            iload 3 /* begin */
            iload 4 /* end */
            aload 5 /* enc */
            iload 7 /* flags */
            aload 8 /* func */
            aload 9 /* arg */
            invokestatic org.jruby.util.Dir.addToResultIfExists:(Lorg/jruby/Ruby;Ljava/lang/String;[BIILorg/jcodings/Encoding;ILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
            istore 10 /* status */
        17: .line 722
            goto 19
        18: .line 723
      StackMap locals:
      StackMap stack:
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 2 /* path */
            iload 3 /* begin */
            iload 4 /* end */
            aload 5 /* enc */
            iload 7 /* flags */
            aload 8 /* func */
            aload 9 /* arg */
            invokestatic org.jruby.util.Dir.addToResultIfExists:(Lorg/jruby/Ruby;Ljava/lang/String;[BIILorg/jcodings/Encoding;ILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
            istore 10 /* status */
        19: .line 727
      StackMap locals:
      StackMap stack:
            iload 10 /* status */
            ireturn
        20: .line 730
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 12 /* links */
        start local 12 // java.util.ArrayList links
        21: .line 732
            new org.jruby.util.ByteList
            dup
            bipush 20
            invokespecial org.jruby.util.ByteList.<init>:(I)V
            astore 13 /* buf */
        start local 13 // org.jruby.util.ByteList buf
        22: .line 733
            aload 13 /* buf */
            aload 5 /* enc */
            invokevirtual org.jruby.util.ByteList.setEncoding:(Lorg/jcodings/Encoding;)V
        23: .line 736
            goto 109
        24: .line 737
      StackMap locals: java.util.ArrayList org.jruby.util.ByteList
      StackMap stack:
            aload 2 /* path */
            iload 11 /* ptr */
            baload
            bipush 47
            if_icmpne 25
            iinc 11 /* ptr */ 1
        25: .line 739
      StackMap locals:
      StackMap stack:
            aload 2 /* path */
            iload 11 /* ptr */
            iload 4 /* end */
            bipush 47
            invokestatic org.jruby.util.Dir.indexOf:([BIIB)I
            istore 15 /* SLASH_INDEX */
        start local 15 // int SLASH_INDEX
        26: .line 740
            aload 2 /* path */
            iload 11 /* ptr */
            iload 15 /* SLASH_INDEX */
            iconst_m1
            if_icmpne 27
            iload 4 /* end */
            goto 28
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList top int
      StackMap stack: byte[] int
        27: iload 15 /* SLASH_INDEX */
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList top int
      StackMap stack: byte[] int int
        28: iload 7 /* flags */
            invokestatic org.jruby.util.Dir.has_magic:([BIII)Z
            ifeq 108
        29: .line 742
            aload 2 /* path */
            iload 3 /* begin */
            iload 11 /* ptr */
            invokestatic org.jruby.util.Dir.extract_path:([BII)[B
            astore 16 /* base */
        start local 16 // byte[] base
        30: .line 743
            iload 3 /* begin */
            iload 11 /* ptr */
            if_icmpne 31
            iconst_1
            newarray 8
            dup
            iconst_0
            bipush 46
            bastore
            goto 32
      StackMap locals: byte[]
      StackMap stack:
        31: aload 16 /* base */
      StackMap locals:
      StackMap stack: byte[]
        32: astore 17 /* dir */
        start local 17 // byte[] dir
        33: .line 744
            aload 2 /* path */
            iload 11 /* ptr */
            iload 4 /* end */
            invokestatic org.jruby.util.Dir.extract_elem:([BII)[B
            astore 18 /* magic */
        start local 18 // byte[] magic
        34: .line 745
            iconst_0
            istore 19 /* recursive */
        start local 19 // boolean recursive
        35: .line 747
            aload 0 /* runtime */
            aload 1 /* cwd */
            new java.lang.String
            dup
            aload 17 /* dir */
            iconst_0
            aload 17 /* dir */
            arraylength
            aload 5 /* enc */
            invokevirtual org.jcodings.Encoding.getCharset:()Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BIILjava/nio/charset/Charset;)V
            invokestatic org.jruby.util.JRubyFile.createResource:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/util/FileResource;
            astore 14 /* resource */
        start local 14 // org.jruby.util.FileResource resource
        36: .line 748
            aload 14 /* resource */
            invokeinterface org.jruby.util.FileResource.isDirectory:()Z
            ifeq 110
        37: .line 749
            iload 15 /* SLASH_INDEX */
            iconst_m1
            if_icmpeq 57
            aload 18 /* magic */
            getstatic org.jruby.util.Dir.DOUBLE_STAR:[B
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifeq 57
        38: .line 750
            aload 16 /* base */
            arraylength
            istore 20 /* lengthOfBase */
        start local 20 // int lengthOfBase
        39: .line 751
            iconst_1
            istore 19 /* recursive */
        40: .line 752
            aload 13 /* buf */
            iconst_0
            invokevirtual org.jruby.util.ByteList.length:(I)V
        41: .line 753
            aload 13 /* buf */
            aload 16 /* base */
            invokevirtual org.jruby.util.ByteList.append:([B)V
        42: .line 755
            iload 15 /* SLASH_INDEX */
            istore 22 /* indexOfSlash */
        start local 22 // int indexOfSlash
        43: .line 757
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList org.jruby.util.FileResource int byte[] byte[] byte[] int int top int
      StackMap stack:
            iload 22 /* indexOfSlash */
            iconst_1
            iadd
            istore 21 /* nextStartIndex */
        start local 21 // int nextStartIndex
        44: .line 758
            aload 2 /* path */
            iload 21 /* nextStartIndex */
            iload 4 /* end */
            bipush 47
            invokestatic org.jruby.util.Dir.indexOf:([BIIB)I
            istore 22 /* indexOfSlash */
        45: .line 759
            aload 2 /* path */
            iload 21 /* nextStartIndex */
            iload 4 /* end */
            invokestatic org.jruby.util.Dir.extract_elem:([BII)[B
            astore 18 /* magic */
        46: .line 760
            aload 18 /* magic */
            getstatic org.jruby.util.Dir.DOUBLE_STAR:[B
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifeq 47
            iload 22 /* indexOfSlash */
            iconst_m1
            if_icmpne 43
        47: .line 763
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList org.jruby.util.FileResource int byte[] byte[] byte[] int int int int
      StackMap stack:
            aload 18 /* magic */
            getstatic org.jruby.util.Dir.DOUBLE_STAR:[B
            invokestatic java.util.Arrays.equals:([B[B)Z
            ifeq 50
        48: .line 764
            iload 21 /* nextStartIndex */
            istore 23 /* remainingPathStartIndex */
        start local 23 // int remainingPathStartIndex
        49: .line 765
            goto 51
        end local 23 // int remainingPathStartIndex
        50: .line 766
      StackMap locals:
      StackMap stack:
            iload 21 /* nextStartIndex */
            iconst_1
            isub
            istore 23 /* remainingPathStartIndex */
        start local 23 // int remainingPathStartIndex
        51: .line 768
      StackMap locals: int
      StackMap stack:
            iload 20 /* lengthOfBase */
            ifle 52
            iload 23 /* remainingPathStartIndex */
            goto 53
      StackMap locals:
      StackMap stack:
        52: iload 23 /* remainingPathStartIndex */
            iconst_1
            iadd
      StackMap locals:
      StackMap stack: int
        53: istore 23 /* remainingPathStartIndex */
        54: .line 769
            aload 13 /* buf */
            aload 2 /* path */
            iload 23 /* remainingPathStartIndex */
            iload 4 /* end */
            iload 23 /* remainingPathStartIndex */
            isub
            invokevirtual org.jruby.util.ByteList.append:([BII)V
        55: .line 770
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 13 /* buf */
            iload 20 /* lengthOfBase */
            iload 7 /* flags */
            aload 8 /* func */
            aload 9 /* arg */
            invokestatic org.jruby.util.Dir.glob_helper:(Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;IILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
            istore 10 /* status */
        56: .line 771
            iload 10 /* status */
            ifeq 57
            goto 94
        end local 23 // int remainingPathStartIndex
        end local 22 // int indexOfSlash
        end local 21 // int nextStartIndex
        end local 20 // int lengthOfBase
        57: .line 777
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList org.jruby.util.FileResource int byte[] byte[] byte[] int
      StackMap stack:
            aload 14 /* resource */
            invokestatic org.jruby.util.Dir.files:(Lorg/jruby/util/FileResource;)[Ljava/lang/String;
            astore 20 /* files */
        start local 20 // java.lang.String[] files
        58: .line 779
            iconst_0
            istore 21 /* i */
        start local 21 // int i
        59: goto 93
        60: .line 780
      StackMap locals: java.lang.String[] int
      StackMap stack:
            aload 20 /* files */
            iload 21 /* i */
            aaload
            astore 22 /* file */
        start local 22 // java.lang.String file
        61: .line 781
            aload 22 /* file */
            invokestatic org.jruby.util.Dir.getBytesInUTF8:(Ljava/lang/String;)[B
            astore 23 /* fileBytes */
        start local 23 // byte[] fileBytes
        62: .line 782
            iload 19 /* recursive */
            ifeq 79
        63: .line 783
            getstatic org.jruby.util.Dir.STAR:[B
            iconst_0
            iconst_1
            aload 23 /* fileBytes */
            iconst_0
            aload 23 /* fileBytes */
            arraylength
            iload 7 /* flags */
            invokestatic org.jruby.util.Dir.fnmatch:([BII[BIII)I
            ifeq 65
        64: .line 784
            goto 92
        65: .line 786
      StackMap locals: java.lang.String byte[]
      StackMap stack:
            aload 13 /* buf */
            iconst_0
            invokevirtual org.jruby.util.ByteList.length:(I)V
        66: .line 787
            aload 13 /* buf */
            aload 16 /* base */
            invokevirtual org.jruby.util.ByteList.append:([B)V
        67: .line 788
            aload 13 /* buf */
            aload 16 /* base */
            invokestatic org.jruby.util.Dir.isRoot:([B)Z
            ifeq 68
            getstatic org.jruby.util.Dir.EMPTY:[B
            goto 69
      StackMap locals:
      StackMap stack: org.jruby.util.ByteList
        68: getstatic org.jruby.util.Dir.SLASH:[B
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList org.jruby.util.FileResource int byte[] byte[] byte[] int java.lang.String[] int java.lang.String byte[]
      StackMap stack: org.jruby.util.ByteList byte[]
        69: invokevirtual org.jruby.util.ByteList.append:([B)V
        70: .line 789
            aload 13 /* buf */
            aload 22 /* file */
            invokestatic org.jruby.util.Dir.getBytesInUTF8:(Ljava/lang/String;)[B
            invokevirtual org.jruby.util.ByteList.append:([B)V
        71: .line 790
            aload 0 /* runtime */
            aload 1 /* cwd */
            new java.lang.String
            dup
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.unsafeBytes:()[B
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.begin:()I
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.length:()I
            aload 5 /* enc */
            invokevirtual org.jcodings.Encoding.getCharset:()Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BIILjava/nio/charset/Charset;)V
            invokestatic org.jruby.util.JRubyFile.createResource:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/util/FileResource;
            astore 14 /* resource */
        72: .line 791
            aload 14 /* resource */
            invokeinterface org.jruby.util.FileResource.isSymLink:()Z
            ifne 92
            aload 14 /* resource */
            invokeinterface org.jruby.util.FileResource.isDirectory:()Z
            ifeq 92
            ldc "."
            aload 22 /* file */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 92
            ldc ".."
            aload 22 /* file */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 92
        73: .line 792
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.getRealSize:()I
            istore 24 /* len */
        start local 24 // int len
        74: .line 793
            aload 13 /* buf */
            getstatic org.jruby.util.Dir.SLASH:[B
            invokevirtual org.jruby.util.ByteList.append:([B)V
        75: .line 794
            aload 13 /* buf */
            getstatic org.jruby.util.Dir.DOUBLE_STAR:[B
            invokevirtual org.jruby.util.ByteList.append:([B)V
        76: .line 795
            aload 13 /* buf */
            aload 2 /* path */
            iload 15 /* SLASH_INDEX */
            iload 4 /* end */
            iload 15 /* SLASH_INDEX */
            isub
            invokevirtual org.jruby.util.ByteList.append:([BII)V
        77: .line 796
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 13 /* buf */
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.getBegin:()I
            iload 24 /* len */
            iadd
            iload 7 /* flags */
            aload 8 /* func */
            aload 9 /* arg */
            invokestatic org.jruby.util.Dir.glob_helper:(Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;IILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
            istore 10 /* status */
        78: .line 797
            iload 10 /* status */
            ifeq 92
            goto 94
        end local 24 // int len
        79: .line 801
      StackMap locals:
      StackMap stack:
            aload 18 /* magic */
            iconst_0
            aload 18 /* magic */
            arraylength
            aload 23 /* fileBytes */
            iconst_0
            aload 23 /* fileBytes */
            arraylength
            iload 7 /* flags */
            invokestatic org.jruby.util.Dir.fnmatch:([BII[BIII)I
            ifne 92
        80: .line 802
            aload 13 /* buf */
            iconst_0
            invokevirtual org.jruby.util.ByteList.length:(I)V
        81: .line 803
            aload 13 /* buf */
            aload 16 /* base */
            invokevirtual org.jruby.util.ByteList.append:([B)V
        82: .line 804
            aload 13 /* buf */
            aload 16 /* base */
            invokestatic org.jruby.util.Dir.isRoot:([B)Z
            ifeq 83
            getstatic org.jruby.util.Dir.EMPTY:[B
            goto 84
      StackMap locals:
      StackMap stack: org.jruby.util.ByteList
        83: getstatic org.jruby.util.Dir.SLASH:[B
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList org.jruby.util.FileResource int byte[] byte[] byte[] int java.lang.String[] int java.lang.String byte[]
      StackMap stack: org.jruby.util.ByteList byte[]
        84: invokevirtual org.jruby.util.ByteList.append:([B)V
        85: .line 805
            aload 13 /* buf */
            aload 22 /* file */
            invokestatic org.jruby.util.Dir.getBytesInUTF8:(Ljava/lang/String;)[B
            invokevirtual org.jruby.util.ByteList.append:([B)V
        86: .line 806
            iload 15 /* SLASH_INDEX */
            iconst_m1
            if_icmpne 89
        87: .line 807
            aload 8 /* func */
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.getUnsafeBytes:()[B
            iconst_0
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.getRealSize:()I
            aload 5 /* enc */
            aload 9 /* arg */
            invokeinterface org.jruby.util.Dir$GlobFunc.call:([BIILorg/jcodings/Encoding;Ljava/lang/Object;)I
            istore 10 /* status */
        88: .line 808
            iload 10 /* status */
            ifeq 92
            goto 94
        89: .line 811
      StackMap locals:
      StackMap stack:
            aload 12 /* links */
            new org.jruby.util.Dir$DirGlobber
            dup
            aload 13 /* buf */
            invokespecial org.jruby.util.Dir$DirGlobber.<init>:(Lorg/jruby/util/ByteList;)V
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        90: .line 812
            new org.jruby.util.ByteList
            dup
            bipush 20
            invokespecial org.jruby.util.ByteList.<init>:(I)V
            astore 13 /* buf */
        91: .line 813
            aload 13 /* buf */
            aload 5 /* enc */
            invokevirtual org.jruby.util.ByteList.setEncoding:(Lorg/jcodings/Encoding;)V
        end local 23 // byte[] fileBytes
        end local 22 // java.lang.String file
        92: .line 779
      StackMap locals:
      StackMap stack:
            iinc 21 /* i */ 1
      StackMap locals:
      StackMap stack:
        93: iload 21 /* i */
            aload 20 /* files */
            arraylength
            if_icmplt 60
        end local 21 // int i
        end local 20 // java.lang.String[] files
        end local 19 // boolean recursive
        end local 18 // byte[] magic
        end local 17 // byte[] dir
        end local 16 // byte[] base
        94: .line 818
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList org.jruby.util.FileResource int
      StackMap stack:
            aload 12 /* links */
            invokevirtual java.util.ArrayList.size:()I
            ifle 108
        95: .line 819
            aload 12 /* links */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 17
            goto 106
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList org.jruby.util.FileResource int top java.util.Iterator
      StackMap stack:
        96: aload 17
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.jruby.util.Dir$DirGlobber
            astore 16 /* globber */
        start local 16 // org.jruby.util.Dir$DirGlobber globber
        97: .line 820
            aload 16 /* globber */
            getfield org.jruby.util.Dir$DirGlobber.link:Lorg/jruby/util/ByteList;
            astore 18 /* link */
        start local 18 // org.jruby.util.ByteList link
        98: .line 821
            iload 10 /* status */
            ifne 106
        99: .line 822
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 18 /* link */
            invokestatic org.jruby.RubyString.byteListToString:(Lorg/jruby/util/ByteList;)Ljava/lang/String;
            invokestatic org.jruby.util.JRubyFile.createResource:(Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/String;)Lorg/jruby/util/FileResource;
            astore 14 /* resource */
       100: .line 823
            aload 14 /* resource */
            invokeinterface org.jruby.util.FileResource.isDirectory:()Z
            ifeq 106
       101: .line 824
            aload 18 /* link */
            invokevirtual org.jruby.util.ByteList.getRealSize:()I
            istore 19 /* len */
        start local 19 // int len
       102: .line 825
            aload 13 /* buf */
            iconst_0
            invokevirtual org.jruby.util.ByteList.length:(I)V
       103: .line 826
            aload 13 /* buf */
            aload 18 /* link */
            invokevirtual org.jruby.util.ByteList.append:(Lorg/jruby/util/ByteList;)V
       104: .line 827
            aload 13 /* buf */
            aload 2 /* path */
            iload 15 /* SLASH_INDEX */
            iload 4 /* end */
            iload 15 /* SLASH_INDEX */
            isub
            invokevirtual org.jruby.util.ByteList.append:([BII)V
       105: .line 828
            aload 0 /* runtime */
            aload 1 /* cwd */
            aload 13 /* buf */
            aload 13 /* buf */
            invokevirtual org.jruby.util.ByteList.getBegin:()I
            iload 19 /* len */
            iadd
            iload 7 /* flags */
            aload 8 /* func */
            aload 9 /* arg */
            invokestatic org.jruby.util.Dir.glob_helper:(Lorg/jruby/Ruby;Ljava/lang/String;Lorg/jruby/util/ByteList;IILorg/jruby/util/Dir$GlobFunc;Lorg/jruby/util/Dir$GlobArgs;)I
            istore 10 /* status */
        end local 19 // int len
        end local 18 // org.jruby.util.ByteList link
        end local 16 // org.jruby.util.Dir$DirGlobber globber
       106: .line 819
      StackMap locals:
      StackMap stack:
            aload 17
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 96
       107: .line 832
            goto 110
        end local 14 // org.jruby.util.FileResource resource
       108: .line 835
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList top int
      StackMap stack:
            iload 15 /* SLASH_INDEX */
            istore 11 /* ptr */
        end local 15 // int SLASH_INDEX
       109: .line 736
      StackMap locals: org.jruby.Ruby java.lang.String byte[] int int org.jcodings.Encoding int int org.jruby.util.Dir$GlobFunc org.jruby.util.Dir$GlobArgs int int java.util.ArrayList org.jruby.util.ByteList
      StackMap stack:
            iload 11 /* ptr */
            iconst_m1
            if_icmpeq 110
            iload 10 /* status */
            ifeq 24
       110: .line 838
      StackMap locals:
      StackMap stack:
            iload 10 /* status */
            ireturn
        end local 13 // org.jruby.util.ByteList buf
        end local 12 // java.util.ArrayList links
        end local 11 // int ptr
        end local 10 // int status
        end local 9 // org.jruby.util.Dir$GlobArgs arg
        end local 8 // org.jruby.util.Dir$GlobFunc func
        end local 7 // int flags
        end local 6 // int sub
        end local 5 // org.jcodings.Encoding enc
        end local 4 // int end
        end local 3 // int begin
        end local 2 // byte[] path
        end local 1 // java.lang.String cwd
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0  111     0                  runtime  Lorg/jruby/Ruby;
            0  111     1                      cwd  Ljava/lang/String;
            0  111     2                     path  [B
            0  111     3                    begin  I
            0  111     4                      end  I
            0  111     5                      enc  Lorg/jcodings/Encoding;
            0  111     6                      sub  I
            0  111     7                    flags  I
            0  111     8                     func  Lorg/jruby/util/Dir$GlobFunc<Lorg/jruby/util/Dir$GlobArgs;>;
            0  111     9                      arg  Lorg/jruby/util/Dir$GlobArgs;
            1  111    10                   status  I
            4  111    11                      ptr  I
           10   14    12                      len  I
           11   14    13                  newPath  [B
           21  111    12                    links  Ljava/util/ArrayList<Lorg/jruby/util/Dir$DirGlobber;>;
           22  111    13                      buf  Lorg/jruby/util/ByteList;
           36  108    14                 resource  Lorg/jruby/util/FileResource;
           26  109    15              SLASH_INDEX  I
           30   94    16                     base  [B
           33   94    17                      dir  [B
           34   94    18                    magic  [B
           35   94    19                recursive  Z
           39   57    20             lengthOfBase  I
           44   57    21           nextStartIndex  I
           43   57    22             indexOfSlash  I
           49   50    23  remainingPathStartIndex  I
           51   57    23  remainingPathStartIndex  I
           58   94    20                    files  [Ljava/lang/String;
           59   94    21                        i  I
           61   92    22                     file  Ljava/lang/String;
           62   92    23                fileBytes  [B
           74   79    24                      len  I
           97  106    16                  globber  Lorg/jruby/util/Dir$DirGlobber;
           98  106    18                     link  Lorg/jruby/util/ByteList;
          102  106    19                      len  I
    Signature: (Lorg/jruby/Ruby;Ljava/lang/String;[BIILorg/jcodings/Encoding;IILorg/jruby/util/Dir$GlobFunc<Lorg/jruby/util/Dir$GlobArgs;>;Lorg/jruby/util/Dir$GlobArgs;)I
    MethodParameters:
         Name  Flags
      runtime  
      cwd      
      path     
      begin    
      end      
      enc      
      sub      
      flags    final
      func     
      arg      

  private static byte[] getBytesInUTF8(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String str
         0: .line 842
            aload 0 /* str */
            invokestatic org.jruby.RubyEncoding.encodeUTF8:(Ljava/lang/String;)[B
            areturn
        end local 0 // java.lang.String str
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   str  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      str   final
}
SourceFile: "Dir.java"
NestMembers:
  org.jruby.util.Dir$1  org.jruby.util.Dir$2  org.jruby.util.Dir$DirGlobber  org.jruby.util.Dir$GlobArgs  org.jruby.util.Dir$GlobFunc  org.jruby.util.Dir$GlobPattern
InnerClasses:
  org.jruby.util.Dir$1
  org.jruby.util.Dir$2
  private final DirGlobber = org.jruby.util.Dir$DirGlobber of org.jruby.util.Dir
  private GlobArgs = org.jruby.util.Dir$GlobArgs of org.jruby.util.Dir
  private abstract GlobFunc = org.jruby.util.Dir$GlobFunc of org.jruby.util.Dir
  private GlobPattern = org.jruby.util.Dir$GlobPattern of org.jruby.util.Dir