public class org.apache.commons.io.FilenameUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.commons.io.FilenameUtils
  super_class: java.lang.Object
{
  private static final int NOT_FOUND;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  public static final char EXTENSION_SEPARATOR;
    descriptor: C
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 46

  public static final java.lang.String EXTENSION_SEPARATOR_STR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final char UNIX_SEPARATOR;
    descriptor: C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 47

  private static final char WINDOWS_SEPARATOR;
    descriptor: C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 92

  private static final char SYSTEM_SEPARATOR;
    descriptor: C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final char OTHER_SEPARATOR;
    descriptor: C
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 96
            bipush 46
            invokestatic java.lang.Character.toString:(C)Ljava/lang/String;
            putstatic org.apache.commons.io.FilenameUtils.EXTENSION_SEPARATOR_STR:Ljava/lang/String;
         1: .line 111
            getstatic java.io.File.separatorChar:C
            putstatic org.apache.commons.io.FilenameUtils.SYSTEM_SEPARATOR:C
         2: .line 118
            invokestatic org.apache.commons.io.FilenameUtils.isSystemWindows:()Z
            ifeq 5
         3: .line 119
            bipush 47
            putstatic org.apache.commons.io.FilenameUtils.OTHER_SEPARATOR:C
         4: .line 120
            goto 6
         5: .line 121
      StackMap locals:
      StackMap stack:
            bipush 92
            putstatic org.apache.commons.io.FilenameUtils.OTHER_SEPARATOR:C
         6: .line 123
      StackMap locals:
      StackMap stack:
            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.apache.commons.io.FilenameUtils this
         0: .line 129
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 130
            return
        end local 0 // org.apache.commons.io.FilenameUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/commons/io/FilenameUtils;

  static boolean isSystemWindows();
    descriptor: ()Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 139
            getstatic org.apache.commons.io.FilenameUtils.SYSTEM_SEPARATOR:C
            bipush 92
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static boolean isSeparator(char);
    descriptor: (C)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // char ch
         0: .line 150
            iload 0 /* ch */
            bipush 47
            if_icmpeq 1
            iload 0 /* ch */
            bipush 92
            if_icmpeq 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // char ch
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0    ch  C
    MethodParameters:
      Name  Flags
      ch    final

  public static java.lang.String normalize(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 195
            aload 0 /* filename */
            getstatic org.apache.commons.io.FilenameUtils.SYSTEM_SEPARATOR:C
            iconst_1
            invokestatic org.apache.commons.io.FilenameUtils.doNormalize:(Ljava/lang/String;CZ)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String normalize(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // boolean unixSeparator
         0: .line 242
            iload 1 /* unixSeparator */
            ifeq 1
            bipush 47
            goto 2
      StackMap locals:
      StackMap stack:
         1: bipush 92
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* separator */
        start local 2 // char separator
         3: .line 243
            aload 0 /* filename */
            iload 2 /* separator */
            iconst_1
            invokestatic org.apache.commons.io.FilenameUtils.doNormalize:(Ljava/lang/String;CZ)Ljava/lang/String;
            areturn
        end local 2 // char separator
        end local 1 // boolean unixSeparator
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0       filename  Ljava/lang/String;
            0    4     1  unixSeparator  Z
            3    4     2      separator  C
    MethodParameters:
               Name  Flags
      filename       final
      unixSeparator  final

  public static java.lang.String normalizeNoEndSeparator(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 289
            aload 0 /* filename */
            getstatic org.apache.commons.io.FilenameUtils.SYSTEM_SEPARATOR:C
            iconst_0
            invokestatic org.apache.commons.io.FilenameUtils.doNormalize:(Ljava/lang/String;CZ)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String normalizeNoEndSeparator(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // boolean unixSeparator
         0: .line 336
            iload 1 /* unixSeparator */
            ifeq 1
            bipush 47
            goto 2
      StackMap locals:
      StackMap stack:
         1: bipush 92
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* separator */
        start local 2 // char separator
         3: .line 337
            aload 0 /* filename */
            iload 2 /* separator */
            iconst_0
            invokestatic org.apache.commons.io.FilenameUtils.doNormalize:(Ljava/lang/String;CZ)Ljava/lang/String;
            areturn
        end local 2 // char separator
        end local 1 // boolean unixSeparator
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0       filename  Ljava/lang/String;
            0    4     1  unixSeparator  Z
            3    4     2      separator  C
    MethodParameters:
               Name  Flags
      filename       final
      unixSeparator  final

  private static java.lang.String doNormalize(java.lang.String, char, boolean);
    descriptor: (Ljava/lang/String;CZ)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=3
        start local 0 // java.lang.String filename
        start local 1 // char separator
        start local 2 // boolean keepSeparator
         0: .line 349
            aload 0 /* filename */
            ifnonnull 2
         1: .line 350
            aconst_null
            areturn
         2: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
         3: .line 355
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            istore 3 /* size */
        start local 3 // int size
         4: .line 356
            iload 3 /* size */
            ifne 6
         5: .line 357
            aload 0 /* filename */
            areturn
         6: .line 359
      StackMap locals: int
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getPrefixLength:(Ljava/lang/String;)I
            istore 4 /* prefix */
        start local 4 // int prefix
         7: .line 360
            iload 4 /* prefix */
            ifge 9
         8: .line 361
            aconst_null
            areturn
         9: .line 364
      StackMap locals: int
      StackMap stack:
            iload 3 /* size */
            iconst_2
            iadd
            newarray 5
            astore 5 /* array */
        start local 5 // char[] array
        10: .line 365
            aload 0 /* filename */
            iconst_0
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            aload 5 /* array */
            iconst_0
            invokevirtual java.lang.String.getChars:(II[CI)V
        11: .line 368
            iload 1 /* separator */
            getstatic org.apache.commons.io.FilenameUtils.SYSTEM_SEPARATOR:C
            if_icmpne 12
            getstatic org.apache.commons.io.FilenameUtils.OTHER_SEPARATOR:C
            goto 13
      StackMap locals: char[]
      StackMap stack:
        12: getstatic org.apache.commons.io.FilenameUtils.SYSTEM_SEPARATOR:C
      StackMap locals:
      StackMap stack: int
        13: istore 6 /* otherSeparator */
        start local 6 // char otherSeparator
        14: .line 369
            iconst_0
            istore 7 /* i */
        start local 7 // int i
        15: goto 19
        16: .line 370
      StackMap locals: int int
      StackMap stack:
            aload 5 /* array */
            iload 7 /* i */
            caload
            iload 6 /* otherSeparator */
            if_icmpne 18
        17: .line 371
            aload 5 /* array */
            iload 7 /* i */
            iload 1 /* separator */
            castore
        18: .line 369
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 7 /* i */
            aload 5 /* array */
            arraylength
            if_icmplt 16
        end local 7 // int i
        20: .line 376
            iconst_1
            istore 7 /* lastIsDirectory */
        start local 7 // boolean lastIsDirectory
        21: .line 377
            aload 5 /* array */
            iload 3 /* size */
            iconst_1
            isub
            caload
            iload 1 /* separator */
            if_icmpeq 24
        22: .line 378
            aload 5 /* array */
            iload 3 /* size */
            iinc 3 /* size */ 1
            iload 1 /* separator */
            castore
        23: .line 379
            iconst_0
            istore 7 /* lastIsDirectory */
        24: .line 383
      StackMap locals: java.lang.String int int int int char[] int int
      StackMap stack:
            iload 4 /* prefix */
            iconst_1
            iadd
            istore 8 /* i */
        start local 8 // int i
        25: goto 31
        26: .line 384
      StackMap locals: int
      StackMap stack:
            aload 5 /* array */
            iload 8 /* i */
            caload
            iload 1 /* separator */
            if_icmpne 30
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            isub
            caload
            iload 1 /* separator */
            if_icmpne 30
        27: .line 385
            aload 5 /* array */
            iload 8 /* i */
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            isub
            iload 3 /* size */
            iload 8 /* i */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        28: .line 386
            iinc 3 /* size */ -1
        29: .line 387
            iinc 8 /* i */ -1
        30: .line 383
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        31: iload 8 /* i */
            iload 3 /* size */
            if_icmplt 26
        end local 8 // int i
        32: .line 392
            iload 4 /* prefix */
            iconst_1
            iadd
            istore 8 /* i */
        start local 8 // int i
        33: goto 42
        34: .line 393
      StackMap locals:
      StackMap stack:
            aload 5 /* array */
            iload 8 /* i */
            caload
            iload 1 /* separator */
            if_icmpne 41
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            isub
            caload
            bipush 46
            if_icmpne 41
        35: .line 394
            iload 8 /* i */
            iload 4 /* prefix */
            iconst_1
            iadd
            if_icmpeq 36
            aload 5 /* array */
            iload 8 /* i */
            iconst_2
            isub
            caload
            iload 1 /* separator */
            if_icmpne 41
        36: .line 395
      StackMap locals:
      StackMap stack:
            iload 8 /* i */
            iload 3 /* size */
            iconst_1
            isub
            if_icmpne 38
        37: .line 396
            iconst_1
            istore 7 /* lastIsDirectory */
        38: .line 398
      StackMap locals:
      StackMap stack:
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            iadd
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            isub
            iload 3 /* size */
            iload 8 /* i */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        39: .line 399
            iinc 3 /* size */ -2
        40: .line 400
            iinc 8 /* i */ -1
        41: .line 392
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        42: iload 8 /* i */
            iload 3 /* size */
            if_icmplt 34
        end local 8 // int i
        43: .line 406
            iload 4 /* prefix */
            iconst_2
            iadd
            istore 8 /* i */
        start local 8 // int i
        44: goto 64
        45: .line 407
      StackMap locals:
      StackMap stack:
            aload 5 /* array */
            iload 8 /* i */
            caload
            iload 1 /* separator */
            if_icmpne 63
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            isub
            caload
            bipush 46
            if_icmpne 63
            aload 5 /* array */
            iload 8 /* i */
            iconst_2
            isub
            caload
            bipush 46
            if_icmpne 63
        46: .line 408
            iload 8 /* i */
            iload 4 /* prefix */
            iconst_2
            iadd
            if_icmpeq 47
            aload 5 /* array */
            iload 8 /* i */
            iconst_3
            isub
            caload
            iload 1 /* separator */
            if_icmpne 63
        47: .line 409
      StackMap locals:
      StackMap stack:
            iload 8 /* i */
            iload 4 /* prefix */
            iconst_2
            iadd
            if_icmpne 49
        48: .line 410
            aconst_null
            areturn
        49: .line 412
      StackMap locals:
      StackMap stack:
            iload 8 /* i */
            iload 3 /* size */
            iconst_1
            isub
            if_icmpne 51
        50: .line 413
            iconst_1
            istore 7 /* lastIsDirectory */
        51: .line 416
      StackMap locals:
      StackMap stack:
            iload 8 /* i */
            iconst_4
            isub
            istore 9 /* j */
        start local 9 // int j
        52: goto 59
        53: .line 417
      StackMap locals: int
      StackMap stack:
            aload 5 /* array */
            iload 9 /* j */
            caload
            iload 1 /* separator */
            if_icmpne 58
        54: .line 419
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            iadd
            aload 5 /* array */
            iload 9 /* j */
            iconst_1
            iadd
            iload 3 /* size */
            iload 8 /* i */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        55: .line 420
            iload 3 /* size */
            iload 8 /* i */
            iload 9 /* j */
            isub
            isub
            istore 3 /* size */
        56: .line 421
            iload 9 /* j */
            iconst_1
            iadd
            istore 8 /* i */
        57: .line 422
            goto 63
        58: .line 416
      StackMap locals:
      StackMap stack:
            iinc 9 /* j */ -1
      StackMap locals:
      StackMap stack:
        59: iload 9 /* j */
            iload 4 /* prefix */
            if_icmpge 53
        60: .line 426
            aload 5 /* array */
            iload 8 /* i */
            iconst_1
            iadd
            aload 5 /* array */
            iload 4 /* prefix */
            iload 3 /* size */
            iload 8 /* i */
            isub
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        61: .line 427
            iload 3 /* size */
            iload 8 /* i */
            iconst_1
            iadd
            iload 4 /* prefix */
            isub
            isub
            istore 3 /* size */
        62: .line 428
            iload 4 /* prefix */
            iconst_1
            iadd
            istore 8 /* i */
        end local 9 // int j
        63: .line 406
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        64: iload 8 /* i */
            iload 3 /* size */
            if_icmplt 45
        end local 8 // int i
        65: .line 432
            iload 3 /* size */
            ifgt 67
        66: .line 433
            ldc ""
            areturn
        67: .line 435
      StackMap locals:
      StackMap stack:
            iload 3 /* size */
            iload 4 /* prefix */
            if_icmpgt 69
        68: .line 436
            new java.lang.String
            dup
            aload 5 /* array */
            iconst_0
            iload 3 /* size */
            invokespecial java.lang.String.<init>:([CII)V
            areturn
        69: .line 438
      StackMap locals:
      StackMap stack:
            iload 7 /* lastIsDirectory */
            ifeq 71
            iload 2 /* keepSeparator */
            ifeq 71
        70: .line 439
            new java.lang.String
            dup
            aload 5 /* array */
            iconst_0
            iload 3 /* size */
            invokespecial java.lang.String.<init>:([CII)V
            areturn
        71: .line 441
      StackMap locals:
      StackMap stack:
            new java.lang.String
            dup
            aload 5 /* array */
            iconst_0
            iload 3 /* size */
            iconst_1
            isub
            invokespecial java.lang.String.<init>:([CII)V
            areturn
        end local 7 // boolean lastIsDirectory
        end local 6 // char otherSeparator
        end local 5 // char[] array
        end local 4 // int prefix
        end local 3 // int size
        end local 2 // boolean keepSeparator
        end local 1 // char separator
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   72     0         filename  Ljava/lang/String;
            0   72     1        separator  C
            0   72     2    keepSeparator  Z
            4   72     3             size  I
            7   72     4           prefix  I
           10   72     5            array  [C
           14   72     6   otherSeparator  C
           15   20     7                i  I
           21   72     7  lastIsDirectory  Z
           25   32     8                i  I
           33   43     8                i  I
           44   65     8                i  I
           52   63     9                j  I
    MethodParameters:
               Name  Flags
      filename       final
      separator      final
      keepSeparator  final

  public static java.lang.String concat(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.String basePath
        start local 1 // java.lang.String fullFilenameToAdd
         0: .line 486
            aload 1 /* fullFilenameToAdd */
            invokestatic org.apache.commons.io.FilenameUtils.getPrefixLength:(Ljava/lang/String;)I
            istore 2 /* prefix */
        start local 2 // int prefix
         1: .line 487
            iload 2 /* prefix */
            ifge 3
         2: .line 488
            aconst_null
            areturn
         3: .line 490
      StackMap locals: int
      StackMap stack:
            iload 2 /* prefix */
            ifle 5
         4: .line 491
            aload 1 /* fullFilenameToAdd */
            invokestatic org.apache.commons.io.FilenameUtils.normalize:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         5: .line 493
      StackMap locals:
      StackMap stack:
            aload 0 /* basePath */
            ifnonnull 7
         6: .line 494
            aconst_null
            areturn
         7: .line 496
      StackMap locals:
      StackMap stack:
            aload 0 /* basePath */
            invokevirtual java.lang.String.length:()I
            istore 3 /* len */
        start local 3 // int len
         8: .line 497
            iload 3 /* len */
            ifne 10
         9: .line 498
            aload 1 /* fullFilenameToAdd */
            invokestatic org.apache.commons.io.FilenameUtils.normalize:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        10: .line 500
      StackMap locals: int
      StackMap stack:
            aload 0 /* basePath */
            iload 3 /* len */
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            istore 4 /* ch */
        start local 4 // char ch
        11: .line 501
            iload 4 /* ch */
            invokestatic org.apache.commons.io.FilenameUtils.isSeparator:(C)Z
            ifeq 13
        12: .line 502
            new java.lang.StringBuilder
            dup
            aload 0 /* basePath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* fullFilenameToAdd */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.apache.commons.io.FilenameUtils.normalize:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        13: .line 504
      StackMap locals: int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* basePath */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 1 /* fullFilenameToAdd */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.apache.commons.io.FilenameUtils.normalize:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 4 // char ch
        end local 3 // int len
        end local 2 // int prefix
        end local 1 // java.lang.String fullFilenameToAdd
        end local 0 // java.lang.String basePath
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0           basePath  Ljava/lang/String;
            0   14     1  fullFilenameToAdd  Ljava/lang/String;
            1   14     2             prefix  I
            8   14     3                len  I
           11   14     4                 ch  C
    MethodParameters:
                   Name  Flags
      basePath           final
      fullFilenameToAdd  final

  public static boolean directoryContains(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String canonicalParent
        start local 1 // java.lang.String canonicalChild
         0: .line 535
            aload 0 /* canonicalParent */
            ifnonnull 2
         1: .line 536
            new java.lang.IllegalArgumentException
            dup
            ldc "Directory must not be null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 539
      StackMap locals:
      StackMap stack:
            aload 1 /* canonicalChild */
            ifnonnull 4
         3: .line 540
            iconst_0
            ireturn
         4: .line 543
      StackMap locals:
      StackMap stack:
            getstatic org.apache.commons.io.IOCase.SYSTEM:Lorg/apache/commons/io/IOCase;
            aload 0 /* canonicalParent */
            aload 1 /* canonicalChild */
            invokevirtual org.apache.commons.io.IOCase.checkEquals:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 6
         5: .line 544
            iconst_0
            ireturn
         6: .line 547
      StackMap locals:
      StackMap stack:
            getstatic org.apache.commons.io.IOCase.SYSTEM:Lorg/apache/commons/io/IOCase;
            aload 1 /* canonicalChild */
            aload 0 /* canonicalParent */
            invokevirtual org.apache.commons.io.IOCase.checkStartsWith:(Ljava/lang/String;Ljava/lang/String;)Z
            ireturn
        end local 1 // java.lang.String canonicalChild
        end local 0 // java.lang.String canonicalParent
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0  canonicalParent  Ljava/lang/String;
            0    7     1   canonicalChild  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                 Name  Flags
      canonicalParent  final
      canonicalChild   final

  public static java.lang.String separatorsToUnix(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String path
         0: .line 558
            aload 0 /* path */
            ifnull 1
            aload 0 /* path */
            bipush 92
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 2
         1: .line 559
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            areturn
         2: .line 561
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            bipush 92
            bipush 47
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  final

  public static java.lang.String separatorsToWindows(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String path
         0: .line 571
            aload 0 /* path */
            ifnull 1
            aload 0 /* path */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 2
         1: .line 572
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            areturn
         2: .line 574
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            bipush 47
            bipush 92
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  final

  public static java.lang.String separatorsToSystem(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String path
         0: .line 584
            aload 0 /* path */
            ifnonnull 2
         1: .line 585
            aconst_null
            areturn
         2: .line 587
      StackMap locals:
      StackMap stack:
            invokestatic org.apache.commons.io.FilenameUtils.isSystemWindows:()Z
            ifeq 4
         3: .line 588
            aload 0 /* path */
            invokestatic org.apache.commons.io.FilenameUtils.separatorsToWindows:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         4: .line 590
      StackMap locals:
      StackMap stack:
            aload 0 /* path */
            invokestatic org.apache.commons.io.FilenameUtils.separatorsToUnix:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  final

  public static int getPrefixLength(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.lang.String filename
         0: .line 634
            aload 0 /* filename */
            ifnonnull 2
         1: .line 635
            iconst_m1
            ireturn
         2: .line 637
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         3: .line 638
            iload 1 /* len */
            ifne 5
         4: .line 639
            iconst_0
            ireturn
         5: .line 641
      StackMap locals: int
      StackMap stack:
            aload 0 /* filename */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            istore 2 /* ch0 */
        start local 2 // char ch0
         6: .line 642
            iload 2 /* ch0 */
            bipush 58
            if_icmpne 8
         7: .line 643
            iconst_m1
            ireturn
         8: .line 645
      StackMap locals: int
      StackMap stack:
            iload 1 /* len */
            iconst_1
            if_icmpne 14
         9: .line 646
            iload 2 /* ch0 */
            bipush 126
            if_icmpne 11
        10: .line 647
            iconst_2
            ireturn
        11: .line 649
      StackMap locals:
      StackMap stack:
            iload 2 /* ch0 */
            invokestatic org.apache.commons.io.FilenameUtils.isSeparator:(C)Z
            ifeq 12
            iconst_1
            goto 13
      StackMap locals:
      StackMap stack:
        12: iconst_0
      StackMap locals:
      StackMap stack: int
        13: ireturn
        14: .line 651
      StackMap locals:
      StackMap stack:
            iload 2 /* ch0 */
            bipush 126
            if_icmpne 26
        15: .line 652
            aload 0 /* filename */
            bipush 47
            iconst_1
            invokevirtual java.lang.String.indexOf:(II)I
            istore 3 /* posUnix */
        start local 3 // int posUnix
        16: .line 653
            aload 0 /* filename */
            bipush 92
            iconst_1
            invokevirtual java.lang.String.indexOf:(II)I
            istore 4 /* posWin */
        start local 4 // int posWin
        17: .line 654
            iload 3 /* posUnix */
            iconst_m1
            if_icmpne 19
            iload 4 /* posWin */
            iconst_m1
            if_icmpne 19
        18: .line 655
            iload 1 /* len */
            iconst_1
            iadd
            ireturn
        19: .line 657
      StackMap locals: int int
      StackMap stack:
            iload 3 /* posUnix */
            iconst_m1
            if_icmpne 20
            iload 4 /* posWin */
            goto 21
      StackMap locals:
      StackMap stack:
        20: iload 3 /* posUnix */
      StackMap locals:
      StackMap stack: int
        21: istore 3 /* posUnix */
        22: .line 658
            iload 4 /* posWin */
            iconst_m1
            if_icmpne 23
            iload 3 /* posUnix */
            goto 24
      StackMap locals:
      StackMap stack:
        23: iload 4 /* posWin */
      StackMap locals:
      StackMap stack: int
        24: istore 4 /* posWin */
        25: .line 659
            iload 3 /* posUnix */
            iload 4 /* posWin */
            invokestatic java.lang.Math.min:(II)I
            iconst_1
            iadd
            ireturn
        end local 4 // int posWin
        end local 3 // int posUnix
        26: .line 661
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            iconst_1
            invokevirtual java.lang.String.charAt:(I)C
            istore 3 /* ch1 */
        start local 3 // char ch1
        27: .line 662
            iload 3 /* ch1 */
            bipush 58
            if_icmpne 36
        28: .line 663
            iload 2 /* ch0 */
            invokestatic java.lang.Character.toUpperCase:(C)C
            istore 2 /* ch0 */
        29: .line 664
            iload 2 /* ch0 */
            bipush 65
            if_icmplt 33
            iload 2 /* ch0 */
            bipush 90
            if_icmpgt 33
        30: .line 665
            iload 1 /* len */
            iconst_2
            if_icmpeq 31
            aload 0 /* filename */
            iconst_2
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic org.apache.commons.io.FilenameUtils.isSeparator:(C)Z
            ifne 32
        31: .line 666
      StackMap locals: int
      StackMap stack:
            iconst_2
            ireturn
        32: .line 668
      StackMap locals:
      StackMap stack:
            iconst_3
            ireturn
        33: .line 669
      StackMap locals:
      StackMap stack:
            iload 2 /* ch0 */
            bipush 47
            if_icmpne 35
        34: .line 670
            iconst_1
            ireturn
        35: .line 672
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        36: .line 674
      StackMap locals:
      StackMap stack:
            iload 2 /* ch0 */
            invokestatic org.apache.commons.io.FilenameUtils.isSeparator:(C)Z
            ifeq 49
            iload 3 /* ch1 */
            invokestatic org.apache.commons.io.FilenameUtils.isSeparator:(C)Z
            ifeq 49
        37: .line 675
            aload 0 /* filename */
            bipush 47
            iconst_2
            invokevirtual java.lang.String.indexOf:(II)I
            istore 4 /* posUnix */
        start local 4 // int posUnix
        38: .line 676
            aload 0 /* filename */
            bipush 92
            iconst_2
            invokevirtual java.lang.String.indexOf:(II)I
            istore 5 /* posWin */
        start local 5 // int posWin
        39: .line 677
            iload 4 /* posUnix */
            iconst_m1
            if_icmpne 40
            iload 5 /* posWin */
            iconst_m1
            if_icmpeq 41
      StackMap locals: int int
      StackMap stack:
        40: iload 4 /* posUnix */
            iconst_2
            if_icmpeq 41
            iload 5 /* posWin */
            iconst_2
            if_icmpne 42
        41: .line 678
      StackMap locals:
      StackMap stack:
            iconst_m1
            ireturn
        42: .line 680
      StackMap locals:
      StackMap stack:
            iload 4 /* posUnix */
            iconst_m1
            if_icmpne 43
            iload 5 /* posWin */
            goto 44
      StackMap locals:
      StackMap stack:
        43: iload 4 /* posUnix */
      StackMap locals:
      StackMap stack: int
        44: istore 4 /* posUnix */
        45: .line 681
            iload 5 /* posWin */
            iconst_m1
            if_icmpne 46
            iload 4 /* posUnix */
            goto 47
      StackMap locals:
      StackMap stack:
        46: iload 5 /* posWin */
      StackMap locals:
      StackMap stack: int
        47: istore 5 /* posWin */
        48: .line 682
            iload 4 /* posUnix */
            iload 5 /* posWin */
            invokestatic java.lang.Math.min:(II)I
            iconst_1
            iadd
            ireturn
        end local 5 // int posWin
        end local 4 // int posUnix
        49: .line 684
      StackMap locals:
      StackMap stack:
            iload 2 /* ch0 */
            invokestatic org.apache.commons.io.FilenameUtils.isSeparator:(C)Z
            ifeq 50
            iconst_1
            goto 51
      StackMap locals:
      StackMap stack:
        50: iconst_0
      StackMap locals:
      StackMap stack: int
        51: ireturn
        end local 3 // char ch1
        end local 2 // char ch0
        end local 1 // int len
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   52     0  filename  Ljava/lang/String;
            3   52     1       len  I
            6   52     2       ch0  C
           16   26     3   posUnix  I
           17   26     4    posWin  I
           27   52     3       ch1  C
           38   49     4   posUnix  I
           39   49     5    posWin  I
    MethodParameters:
          Name  Flags
      filename  final

  public static int indexOfLastSeparator(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.String filename
         0: .line 702
            aload 0 /* filename */
            ifnonnull 2
         1: .line 703
            iconst_m1
            ireturn
         2: .line 705
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 1 /* lastUnixPos */
        start local 1 // int lastUnixPos
         3: .line 706
            aload 0 /* filename */
            bipush 92
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 2 /* lastWindowsPos */
        start local 2 // int lastWindowsPos
         4: .line 707
            iload 1 /* lastUnixPos */
            iload 2 /* lastWindowsPos */
            invokestatic java.lang.Math.max:(II)I
            ireturn
        end local 2 // int lastWindowsPos
        end local 1 // int lastUnixPos
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0        filename  Ljava/lang/String;
            3    5     1     lastUnixPos  I
            4    5     2  lastWindowsPos  I
    MethodParameters:
          Name  Flags
      filename  final

  public static int indexOfExtension(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.lang.String filename
         0: .line 725
            aload 0 /* filename */
            ifnonnull 2
         1: .line 726
            iconst_m1
            ireturn
         2: .line 728
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 1 /* extensionPos */
        start local 1 // int extensionPos
         3: .line 729
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfLastSeparator:(Ljava/lang/String;)I
            istore 2 /* lastSeparator */
        start local 2 // int lastSeparator
         4: .line 730
            iload 2 /* lastSeparator */
            iload 1 /* extensionPos */
            if_icmple 5
            iconst_m1
            goto 6
      StackMap locals: int int
      StackMap stack:
         5: iload 1 /* extensionPos */
      StackMap locals:
      StackMap stack: int
         6: ireturn
        end local 2 // int lastSeparator
        end local 1 // int extensionPos
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0       filename  Ljava/lang/String;
            3    7     1   extensionPos  I
            4    7     2  lastSeparator  I
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String getPrefix(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String filename
         0: .line 764
            aload 0 /* filename */
            ifnonnull 2
         1: .line 765
            aconst_null
            areturn
         2: .line 767
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getPrefixLength:(Ljava/lang/String;)I
            istore 1 /* len */
        start local 1 // int len
         3: .line 768
            iload 1 /* len */
            ifge 5
         4: .line 769
            aconst_null
            areturn
         5: .line 771
      StackMap locals: int
      StackMap stack:
            iload 1 /* len */
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            if_icmple 8
         6: .line 772
            new java.lang.StringBuilder
            dup
            aload 0 /* filename */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
         7: .line 773
            new java.lang.StringBuilder
            dup
            aload 0 /* filename */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         8: .line 775
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            iconst_0
            iload 1 /* len */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* path */
        start local 2 // java.lang.String path
         9: .line 776
            aload 2 /* path */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
        10: .line 777
            aload 2 /* path */
            areturn
        end local 2 // java.lang.String path
        end local 1 // int len
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0  filename  Ljava/lang/String;
            3   11     1       len  I
            9   11     2      path  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String getPath(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 804
            aload 0 /* filename */
            iconst_1
            invokestatic org.apache.commons.io.FilenameUtils.doGetPath:(Ljava/lang/String;I)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String getPathNoEndSeparator(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 832
            aload 0 /* filename */
            iconst_0
            invokestatic org.apache.commons.io.FilenameUtils.doGetPath:(Ljava/lang/String;I)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  private static java.lang.String doGetPath(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // int separatorAdd
         0: .line 843
            aload 0 /* filename */
            ifnonnull 2
         1: .line 844
            aconst_null
            areturn
         2: .line 846
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getPrefixLength:(Ljava/lang/String;)I
            istore 2 /* prefix */
        start local 2 // int prefix
         3: .line 847
            iload 2 /* prefix */
            ifge 5
         4: .line 848
            aconst_null
            areturn
         5: .line 850
      StackMap locals: int
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfLastSeparator:(Ljava/lang/String;)I
            istore 3 /* index */
        start local 3 // int index
         6: .line 851
            iload 3 /* index */
            iload 1 /* separatorAdd */
            iadd
            istore 4 /* endIndex */
        start local 4 // int endIndex
         7: .line 852
            iload 2 /* prefix */
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            if_icmpge 8
            iload 3 /* index */
            iflt 8
            iload 2 /* prefix */
            iload 4 /* endIndex */
            if_icmplt 9
         8: .line 853
      StackMap locals: int int
      StackMap stack:
            ldc ""
            areturn
         9: .line 855
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            iload 2 /* prefix */
            iload 4 /* endIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 5 /* path */
        start local 5 // java.lang.String path
        10: .line 856
            aload 5 /* path */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
        11: .line 857
            aload 5 /* path */
            areturn
        end local 5 // java.lang.String path
        end local 4 // int endIndex
        end local 3 // int index
        end local 2 // int prefix
        end local 1 // int separatorAdd
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0      filename  Ljava/lang/String;
            0   12     1  separatorAdd  I
            3   12     2        prefix  I
            6   12     3         index  I
            7   12     4      endIndex  I
           10   12     5          path  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      filename      final
      separatorAdd  final

  public static java.lang.String getFullPath(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 886
            aload 0 /* filename */
            iconst_1
            invokestatic org.apache.commons.io.FilenameUtils.doGetFullPath:(Ljava/lang/String;Z)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String getFullPathNoEndSeparator(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 916
            aload 0 /* filename */
            iconst_0
            invokestatic org.apache.commons.io.FilenameUtils.doGetFullPath:(Ljava/lang/String;Z)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  private static java.lang.String doGetFullPath(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // boolean includeSeparator
         0: .line 927
            aload 0 /* filename */
            ifnonnull 2
         1: .line 928
            aconst_null
            areturn
         2: .line 930
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getPrefixLength:(Ljava/lang/String;)I
            istore 2 /* prefix */
        start local 2 // int prefix
         3: .line 931
            iload 2 /* prefix */
            ifge 5
         4: .line 932
            aconst_null
            areturn
         5: .line 934
      StackMap locals: int
      StackMap stack:
            iload 2 /* prefix */
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            if_icmplt 9
         6: .line 935
            iload 1 /* includeSeparator */
            ifeq 8
         7: .line 936
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getPrefix:(Ljava/lang/String;)Ljava/lang/String;
            areturn
         8: .line 938
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            areturn
         9: .line 941
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfLastSeparator:(Ljava/lang/String;)I
            istore 3 /* index */
        start local 3 // int index
        10: .line 942
            iload 3 /* index */
            ifge 12
        11: .line 943
            aload 0 /* filename */
            iconst_0
            iload 2 /* prefix */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
        12: .line 945
      StackMap locals: int
      StackMap stack:
            iload 3 /* index */
            iload 1 /* includeSeparator */
            ifeq 13
            iconst_1
            goto 14
      StackMap locals:
      StackMap stack: int
        13: iconst_0
      StackMap locals: java.lang.String int int int
      StackMap stack: int int
        14: iadd
            istore 4 /* end */
        start local 4 // int end
        15: .line 946
            iload 4 /* end */
            ifne 17
        16: .line 947
            iinc 4 /* end */ 1
        17: .line 949
      StackMap locals: int
      StackMap stack:
            aload 0 /* filename */
            iconst_0
            iload 4 /* end */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
        end local 4 // int end
        end local 3 // int index
        end local 2 // int prefix
        end local 1 // boolean includeSeparator
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   18     0          filename  Ljava/lang/String;
            0   18     1  includeSeparator  Z
            3   18     2            prefix  I
           10   18     3             index  I
           15   18     4               end  I
    MethodParameters:
                  Name  Flags
      filename          final
      includeSeparator  final

  public static java.lang.String getName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String filename
         0: .line 971
            aload 0 /* filename */
            ifnonnull 2
         1: .line 972
            aconst_null
            areturn
         2: .line 974
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
         3: .line 975
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfLastSeparator:(Ljava/lang/String;)I
            istore 1 /* index */
        start local 1 // int index
         4: .line 976
            aload 0 /* filename */
            iload 1 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            areturn
        end local 1 // int index
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0  filename  Ljava/lang/String;
            4    5     1     index  I
    MethodParameters:
          Name  Flags
      filename  final

  private static void failIfNullBytePresent(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.lang.String path
         0: .line 986
            aload 0 /* path */
            invokevirtual java.lang.String.length:()I
            istore 1 /* len */
        start local 1 // int len
         1: .line 987
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 6
         3: .line 988
      StackMap locals: int int
      StackMap stack:
            aload 0 /* path */
            iload 2 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            ifne 5
         4: .line 989
            new java.lang.IllegalArgumentException
            dup
            ldc "Null byte present in file/path name. There are no known legitimate use cases for such data, but several injection attacks may use it"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 987
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            iload 1 /* len */
            if_icmplt 3
        end local 2 // int i
         7: .line 993
            return
        end local 1 // int len
        end local 0 // java.lang.String path
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  path  Ljava/lang/String;
            1    8     1   len  I
            2    7     2     i  I
    MethodParameters:
      Name  Flags
      path  final

  public static java.lang.String getBaseName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String filename
         0: .line 1014
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getName:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic org.apache.commons.io.FilenameUtils.removeExtension:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String getExtension(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String filename
         0: .line 1036
            aload 0 /* filename */
            ifnonnull 2
         1: .line 1037
            aconst_null
            areturn
         2: .line 1039
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfExtension:(Ljava/lang/String;)I
            istore 1 /* index */
        start local 1 // int index
         3: .line 1040
            iload 1 /* index */
            iconst_m1
            if_icmpne 5
         4: .line 1041
            ldc ""
            areturn
         5: .line 1043
      StackMap locals: int
      StackMap stack:
            aload 0 /* filename */
            iload 1 /* index */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            areturn
        end local 1 // int index
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0  filename  Ljava/lang/String;
            3    6     1     index  I
    MethodParameters:
          Name  Flags
      filename  final

  public static java.lang.String removeExtension(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String filename
         0: .line 1066
            aload 0 /* filename */
            ifnonnull 2
         1: .line 1067
            aconst_null
            areturn
         2: .line 1069
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
         3: .line 1071
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfExtension:(Ljava/lang/String;)I
            istore 1 /* index */
        start local 1 // int index
         4: .line 1072
            iload 1 /* index */
            iconst_m1
            if_icmpne 6
         5: .line 1073
            aload 0 /* filename */
            areturn
         6: .line 1075
      StackMap locals: int
      StackMap stack:
            aload 0 /* filename */
            iconst_0
            iload 1 /* index */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
        end local 1 // int index
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0  filename  Ljava/lang/String;
            4    7     1     index  I
    MethodParameters:
          Name  Flags
      filename  final

  public static boolean equals(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String filename1
        start local 1 // java.lang.String filename2
         0: .line 1092
            aload 0 /* filename1 */
            aload 1 /* filename2 */
            iconst_0
            getstatic org.apache.commons.io.IOCase.SENSITIVE:Lorg/apache/commons/io/IOCase;
            invokestatic org.apache.commons.io.FilenameUtils.equals:(Ljava/lang/String;Ljava/lang/String;ZLorg/apache/commons/io/IOCase;)Z
            ireturn
        end local 1 // java.lang.String filename2
        end local 0 // java.lang.String filename1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  filename1  Ljava/lang/String;
            0    1     1  filename2  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      filename1  final
      filename2  final

  public static boolean equalsOnSystem(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String filename1
        start local 1 // java.lang.String filename2
         0: .line 1107
            aload 0 /* filename1 */
            aload 1 /* filename2 */
            iconst_0
            getstatic org.apache.commons.io.IOCase.SYSTEM:Lorg/apache/commons/io/IOCase;
            invokestatic org.apache.commons.io.FilenameUtils.equals:(Ljava/lang/String;Ljava/lang/String;ZLorg/apache/commons/io/IOCase;)Z
            ireturn
        end local 1 // java.lang.String filename2
        end local 0 // java.lang.String filename1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  filename1  Ljava/lang/String;
            0    1     1  filename2  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      filename1  final
      filename2  final

  public static boolean equalsNormalized(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String filename1
        start local 1 // java.lang.String filename2
         0: .line 1123
            aload 0 /* filename1 */
            aload 1 /* filename2 */
            iconst_1
            getstatic org.apache.commons.io.IOCase.SENSITIVE:Lorg/apache/commons/io/IOCase;
            invokestatic org.apache.commons.io.FilenameUtils.equals:(Ljava/lang/String;Ljava/lang/String;ZLorg/apache/commons/io/IOCase;)Z
            ireturn
        end local 1 // java.lang.String filename2
        end local 0 // java.lang.String filename1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  filename1  Ljava/lang/String;
            0    1     1  filename2  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      filename1  final
      filename2  final

  public static boolean equalsNormalizedOnSystem(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String filename1
        start local 1 // java.lang.String filename2
         0: .line 1140
            aload 0 /* filename1 */
            aload 1 /* filename2 */
            iconst_1
            getstatic org.apache.commons.io.IOCase.SYSTEM:Lorg/apache/commons/io/IOCase;
            invokestatic org.apache.commons.io.FilenameUtils.equals:(Ljava/lang/String;Ljava/lang/String;ZLorg/apache/commons/io/IOCase;)Z
            ireturn
        end local 1 // java.lang.String filename2
        end local 0 // java.lang.String filename1
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  filename1  Ljava/lang/String;
            0    1     1  filename2  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      filename1  final
      filename2  final

  public static boolean equals(java.lang.String, java.lang.String, boolean, org.apache.commons.io.IOCase);
    descriptor: (Ljava/lang/String;Ljava/lang/String;ZLorg/apache/commons/io/IOCase;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // java.lang.String filename1
        start local 1 // java.lang.String filename2
        start local 2 // boolean normalized
        start local 3 // org.apache.commons.io.IOCase caseSensitivity
         0: .line 1158
            aload 0 /* filename1 */
            ifnull 1
            aload 1 /* filename2 */
            ifnonnull 3
         1: .line 1159
      StackMap locals:
      StackMap stack:
            aload 0 /* filename1 */
            ifnonnull 2
            aload 1 /* filename2 */
            ifnonnull 2
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
         3: .line 1161
      StackMap locals:
      StackMap stack:
            iload 2 /* normalized */
            ifeq 10
         4: .line 1162
            aload 0 /* filename1 */
            invokestatic org.apache.commons.io.FilenameUtils.normalize:(Ljava/lang/String;)Ljava/lang/String;
            astore 0 /* filename1 */
         5: .line 1163
            aload 1 /* filename2 */
            invokestatic org.apache.commons.io.FilenameUtils.normalize:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* filename2 */
         6: .line 1164
            aload 0 /* filename1 */
            ifnull 7
            aload 1 /* filename2 */
            ifnonnull 10
         7: .line 1165
      StackMap locals:
      StackMap stack:
            new java.lang.NullPointerException
            dup
         8: .line 1166
            ldc "Error normalizing one or both of the file names"
         9: .line 1165
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 1169
      StackMap locals:
      StackMap stack:
            aload 3 /* caseSensitivity */
            ifnonnull 12
        11: .line 1170
            getstatic org.apache.commons.io.IOCase.SENSITIVE:Lorg/apache/commons/io/IOCase;
            astore 3 /* caseSensitivity */
        12: .line 1172
      StackMap locals:
      StackMap stack:
            aload 3 /* caseSensitivity */
            aload 0 /* filename1 */
            aload 1 /* filename2 */
            invokevirtual org.apache.commons.io.IOCase.checkEquals:(Ljava/lang/String;Ljava/lang/String;)Z
            ireturn
        end local 3 // org.apache.commons.io.IOCase caseSensitivity
        end local 2 // boolean normalized
        end local 1 // java.lang.String filename2
        end local 0 // java.lang.String filename1
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0        filename1  Ljava/lang/String;
            0   13     1        filename2  Ljava/lang/String;
            0   13     2       normalized  Z
            0   13     3  caseSensitivity  Lorg/apache/commons/io/IOCase;
    MethodParameters:
                 Name  Flags
      filename1        
      filename2        
      normalized       final
      caseSensitivity  

  public static boolean isExtension(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // java.lang.String extension
         0: .line 1189
            aload 0 /* filename */
            ifnonnull 2
         1: .line 1190
            iconst_0
            ireturn
         2: .line 1192
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
         3: .line 1194
            aload 1 /* extension */
            ifnull 4
            aload 1 /* extension */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 6
         4: .line 1195
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfExtension:(Ljava/lang/String;)I
            iconst_m1
            if_icmpne 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
         6: .line 1197
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getExtension:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* fileExt */
        start local 2 // java.lang.String fileExt
         7: .line 1198
            aload 2 /* fileExt */
            aload 1 /* extension */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 2 // java.lang.String fileExt
        end local 1 // java.lang.String extension
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0   filename  Ljava/lang/String;
            0    8     1  extension  Ljava/lang/String;
            7    8     2    fileExt  Ljava/lang/String;
    MethodParameters:
           Name  Flags
      filename   final
      extension  final

  public static boolean isExtension(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // java.lang.String[] extensions
         0: .line 1214
            aload 0 /* filename */
            ifnonnull 2
         1: .line 1215
            iconst_0
            ireturn
         2: .line 1217
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
         3: .line 1219
            aload 1 /* extensions */
            ifnull 4
            aload 1 /* extensions */
            arraylength
            ifne 6
         4: .line 1220
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfExtension:(Ljava/lang/String;)I
            iconst_m1
            if_icmpne 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
         6: .line 1222
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getExtension:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* fileExt */
        start local 2 // java.lang.String fileExt
         7: .line 1223
            aload 1 /* extensions */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 12
      StackMap locals: java.lang.String java.lang.String[] java.lang.String top int int java.lang.String[]
      StackMap stack:
         8: aload 6
            iload 4
            aaload
            astore 3 /* extension */
        start local 3 // java.lang.String extension
         9: .line 1224
            aload 2 /* fileExt */
            aload 3 /* extension */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
        10: .line 1225
            iconst_1
            ireturn
        end local 3 // java.lang.String extension
        11: .line 1223
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        12: iload 4
            iload 5
            if_icmplt 8
        13: .line 1228
            iconst_0
            ireturn
        end local 2 // java.lang.String fileExt
        end local 1 // java.lang.String[] extensions
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0    filename  Ljava/lang/String;
            0   14     1  extensions  [Ljava/lang/String;
            7   14     2     fileExt  Ljava/lang/String;
            9   11     3   extension  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      filename    final
      extensions  final

  public static boolean isExtension(java.lang.String, java.util.Collection<java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/util/Collection;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // java.util.Collection extensions
         0: .line 1244
            aload 0 /* filename */
            ifnonnull 2
         1: .line 1245
            iconst_0
            ireturn
         2: .line 1247
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.failIfNullBytePresent:(Ljava/lang/String;)V
         3: .line 1249
            aload 1 /* extensions */
            ifnull 4
            aload 1 /* extensions */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 6
         4: .line 1250
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.indexOfExtension:(Ljava/lang/String;)I
            iconst_m1
            if_icmpne 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
         6: .line 1252
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            invokestatic org.apache.commons.io.FilenameUtils.getExtension:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* fileExt */
        start local 2 // java.lang.String fileExt
         7: .line 1253
            aload 1 /* extensions */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 11
      StackMap locals: java.lang.String java.util.Collection java.lang.String top java.util.Iterator
      StackMap stack:
         8: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* extension */
        start local 3 // java.lang.String extension
         9: .line 1254
            aload 2 /* fileExt */
            aload 3 /* extension */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 11
        10: .line 1255
            iconst_1
            ireturn
        end local 3 // java.lang.String extension
        11: .line 1253
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        12: .line 1258
            iconst_0
            ireturn
        end local 2 // java.lang.String fileExt
        end local 1 // java.util.Collection extensions
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0    filename  Ljava/lang/String;
            0   13     1  extensions  Ljava/util/Collection<Ljava/lang/String;>;
            7   13     2     fileExt  Ljava/lang/String;
            9   11     3   extension  Ljava/lang/String;
    Signature: (Ljava/lang/String;Ljava/util/Collection<Ljava/lang/String;>;)Z
    MethodParameters:
            Name  Flags
      filename    final
      extensions  final

  public static boolean wildcardMatch(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // java.lang.String wildcardMatcher
         0: .line 1285
            aload 0 /* filename */
            aload 1 /* wildcardMatcher */
            getstatic org.apache.commons.io.IOCase.SENSITIVE:Lorg/apache/commons/io/IOCase;
            invokestatic org.apache.commons.io.FilenameUtils.wildcardMatch:(Ljava/lang/String;Ljava/lang/String;Lorg/apache/commons/io/IOCase;)Z
            ireturn
        end local 1 // java.lang.String wildcardMatcher
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0         filename  Ljava/lang/String;
            0    1     1  wildcardMatcher  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      filename         final
      wildcardMatcher  final

  public static boolean wildcardMatchOnSystem(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.lang.String filename
        start local 1 // java.lang.String wildcardMatcher
         0: .line 1311
            aload 0 /* filename */
            aload 1 /* wildcardMatcher */
            getstatic org.apache.commons.io.IOCase.SYSTEM:Lorg/apache/commons/io/IOCase;
            invokestatic org.apache.commons.io.FilenameUtils.wildcardMatch:(Ljava/lang/String;Ljava/lang/String;Lorg/apache/commons/io/IOCase;)Z
            ireturn
        end local 1 // java.lang.String wildcardMatcher
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0         filename  Ljava/lang/String;
            0    1     1  wildcardMatcher  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      filename         final
      wildcardMatcher  final

  public static boolean wildcardMatch(java.lang.String, java.lang.String, org.apache.commons.io.IOCase);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/apache/commons/io/IOCase;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // java.lang.String filename
        start local 1 // java.lang.String wildcardMatcher
        start local 2 // org.apache.commons.io.IOCase caseSensitivity
         0: .line 1329
            aload 0 /* filename */
            ifnonnull 2
            aload 1 /* wildcardMatcher */
            ifnonnull 2
         1: .line 1330
            iconst_1
            ireturn
         2: .line 1332
      StackMap locals:
      StackMap stack:
            aload 0 /* filename */
            ifnull 3
            aload 1 /* wildcardMatcher */
            ifnonnull 4
         3: .line 1333
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         4: .line 1335
      StackMap locals:
      StackMap stack:
            aload 2 /* caseSensitivity */
            ifnonnull 6
         5: .line 1336
            getstatic org.apache.commons.io.IOCase.SENSITIVE:Lorg/apache/commons/io/IOCase;
            astore 2 /* caseSensitivity */
         6: .line 1338
      StackMap locals:
      StackMap stack:
            aload 1 /* wildcardMatcher */
            invokestatic org.apache.commons.io.FilenameUtils.splitOnTokens:(Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* wcs */
        start local 3 // java.lang.String[] wcs
         7: .line 1339
            iconst_0
            istore 4 /* anyChars */
        start local 4 // boolean anyChars
         8: .line 1340
            iconst_0
            istore 5 /* textIdx */
        start local 5 // int textIdx
         9: .line 1341
            iconst_0
            istore 6 /* wcsIdx */
        start local 6 // int wcsIdx
        10: .line 1342
            new java.util.Stack
            dup
            invokespecial java.util.Stack.<init>:()V
            astore 7 /* backtrack */
        start local 7 // java.util.Stack backtrack
        11: .line 1346
      StackMap locals: java.lang.String java.lang.String org.apache.commons.io.IOCase java.lang.String[] int int int java.util.Stack
      StackMap stack:
            aload 7 /* backtrack */
            invokevirtual java.util.Stack.size:()I
            ifle 41
        12: .line 1347
            aload 7 /* backtrack */
            invokevirtual java.util.Stack.pop:()Ljava/lang/Object;
            checkcast int[]
            astore 8 /* array */
        start local 8 // int[] array
        13: .line 1348
            aload 8 /* array */
            iconst_0
            iaload
            istore 6 /* wcsIdx */
        14: .line 1349
            aload 8 /* array */
            iconst_1
            iaload
            istore 5 /* textIdx */
        15: .line 1350
            iconst_1
            istore 4 /* anyChars */
        end local 8 // int[] array
        16: .line 1354
            goto 41
        17: .line 1356
      StackMap locals:
      StackMap stack:
            aload 3 /* wcs */
            iload 6 /* wcsIdx */
            aaload
            ldc "?"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 23
        18: .line 1358
            iinc 5 /* textIdx */ 1
        19: .line 1359
            iload 5 /* textIdx */
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            if_icmple 21
        20: .line 1360
            goto 42
        21: .line 1362
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* anyChars */
        22: .line 1364
            goto 40
      StackMap locals:
      StackMap stack:
        23: aload 3 /* wcs */
            iload 6 /* wcsIdx */
            aaload
            ldc "*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 28
        24: .line 1366
            iconst_1
            istore 4 /* anyChars */
        25: .line 1367
            iload 6 /* wcsIdx */
            aload 3 /* wcs */
            arraylength
            iconst_1
            isub
            if_icmpne 40
        26: .line 1368
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            istore 5 /* textIdx */
        27: .line 1371
            goto 40
        28: .line 1373
      StackMap locals:
      StackMap stack:
            iload 4 /* anyChars */
            ifeq 36
        29: .line 1375
            aload 2 /* caseSensitivity */
            aload 0 /* filename */
            iload 5 /* textIdx */
            aload 3 /* wcs */
            iload 6 /* wcsIdx */
            aaload
            invokevirtual org.apache.commons.io.IOCase.checkIndexOf:(Ljava/lang/String;ILjava/lang/String;)I
            istore 5 /* textIdx */
        30: .line 1376
            iload 5 /* textIdx */
            iconst_m1
            if_icmpne 32
        31: .line 1378
            goto 42
        32: .line 1380
      StackMap locals:
      StackMap stack:
            aload 2 /* caseSensitivity */
            aload 0 /* filename */
            iload 5 /* textIdx */
            iconst_1
            iadd
            aload 3 /* wcs */
            iload 6 /* wcsIdx */
            aaload
            invokevirtual org.apache.commons.io.IOCase.checkIndexOf:(Ljava/lang/String;ILjava/lang/String;)I
            istore 8 /* repeat */
        start local 8 // int repeat
        33: .line 1381
            iload 8 /* repeat */
            iflt 38
        34: .line 1382
            aload 7 /* backtrack */
            iconst_2
            newarray 10
            dup
            iconst_0
            iload 6 /* wcsIdx */
            iastore
            dup
            iconst_1
            iload 8 /* repeat */
            iastore
            invokevirtual java.util.Stack.push:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // int repeat
        35: .line 1384
            goto 38
        36: .line 1386
      StackMap locals:
      StackMap stack:
            aload 2 /* caseSensitivity */
            aload 0 /* filename */
            iload 5 /* textIdx */
            aload 3 /* wcs */
            iload 6 /* wcsIdx */
            aaload
            invokevirtual org.apache.commons.io.IOCase.checkRegionMatches:(Ljava/lang/String;ILjava/lang/String;)Z
            ifne 38
        37: .line 1388
            goto 42
        38: .line 1393
      StackMap locals:
      StackMap stack:
            iload 5 /* textIdx */
            aload 3 /* wcs */
            iload 6 /* wcsIdx */
            aaload
            invokevirtual java.lang.String.length:()I
            iadd
            istore 5 /* textIdx */
        39: .line 1394
            iconst_0
            istore 4 /* anyChars */
        40: .line 1397
      StackMap locals:
      StackMap stack:
            iinc 6 /* wcsIdx */ 1
        41: .line 1354
      StackMap locals:
      StackMap stack:
            iload 6 /* wcsIdx */
            aload 3 /* wcs */
            arraylength
            if_icmplt 17
        42: .line 1401
      StackMap locals:
      StackMap stack:
            iload 6 /* wcsIdx */
            aload 3 /* wcs */
            arraylength
            if_icmpne 44
            iload 5 /* textIdx */
            aload 0 /* filename */
            invokevirtual java.lang.String.length:()I
            if_icmpne 44
        43: .line 1402
            iconst_1
            ireturn
        44: .line 1405
      StackMap locals:
      StackMap stack:
            aload 7 /* backtrack */
            invokevirtual java.util.Stack.size:()I
        45: .line 1345
            ifgt 11
        46: .line 1407
            iconst_0
            ireturn
        end local 7 // java.util.Stack backtrack
        end local 6 // int wcsIdx
        end local 5 // int textIdx
        end local 4 // boolean anyChars
        end local 3 // java.lang.String[] wcs
        end local 2 // org.apache.commons.io.IOCase caseSensitivity
        end local 1 // java.lang.String wildcardMatcher
        end local 0 // java.lang.String filename
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   47     0         filename  Ljava/lang/String;
            0   47     1  wildcardMatcher  Ljava/lang/String;
            0   47     2  caseSensitivity  Lorg/apache/commons/io/IOCase;
            7   47     3              wcs  [Ljava/lang/String;
            8   47     4         anyChars  Z
            9   47     5          textIdx  I
           10   47     6           wcsIdx  I
           11   47     7        backtrack  Ljava/util/Stack<[I>;
           13   16     8            array  [I
           33   35     8           repeat  I
    MethodParameters:
                 Name  Flags
      filename         final
      wildcardMatcher  final
      caseSensitivity  

  static java.lang.String[] splitOnTokens(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=9, args_size=1
        start local 0 // java.lang.String text
         0: .line 1422
            aload 0 /* text */
            bipush 63
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 2
            aload 0 /* text */
            bipush 42
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 2
         1: .line 1423
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 0 /* text */
            aastore
            areturn
         2: .line 1426
      StackMap locals:
      StackMap stack:
            aload 0 /* text */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 1 /* array */
        start local 1 // char[] array
         3: .line 1427
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* list */
        start local 2 // java.util.ArrayList list
         4: .line 1428
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* buffer */
        start local 3 // java.lang.StringBuilder buffer
         5: .line 1429
            iconst_0
            istore 4 /* prevChar */
        start local 4 // char prevChar
         6: .line 1430
            aload 1 /* array */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 21
      StackMap locals: java.lang.String char[] java.util.ArrayList java.lang.StringBuilder int top int int char[]
      StackMap stack:
         7: aload 8
            iload 6
            caload
            istore 5 /* ch */
        start local 5 // char ch
         8: .line 1431
            iload 5 /* ch */
            bipush 63
            if_icmpeq 9
            iload 5 /* ch */
            bipush 42
            if_icmpne 18
         9: .line 1432
      StackMap locals: java.lang.String char[] java.util.ArrayList java.lang.StringBuilder int int int int char[]
      StackMap stack:
            aload 3 /* buffer */
            invokevirtual java.lang.StringBuilder.length:()I
            ifeq 12
        10: .line 1433
            aload 2 /* list */
            aload 3 /* buffer */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        11: .line 1434
            aload 3 /* buffer */
            iconst_0
            invokevirtual java.lang.StringBuilder.setLength:(I)V
        12: .line 1436
      StackMap locals:
      StackMap stack:
            iload 5 /* ch */
            bipush 63
            if_icmpne 15
        13: .line 1437
            aload 2 /* list */
            ldc "?"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        14: .line 1438
            goto 19
      StackMap locals:
      StackMap stack:
        15: iload 4 /* prevChar */
            bipush 42
            if_icmpeq 19
        16: .line 1439
            aload 2 /* list */
            ldc "*"
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        17: .line 1441
            goto 19
        18: .line 1442
      StackMap locals:
      StackMap stack:
            aload 3 /* buffer */
            iload 5 /* ch */
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        19: .line 1444
      StackMap locals:
      StackMap stack:
            iload 5 /* ch */
            istore 4 /* prevChar */
        end local 5 // char ch
        20: .line 1430
            iinc 6 1
      StackMap locals: java.lang.String char[] java.util.ArrayList java.lang.StringBuilder int top int int char[]
      StackMap stack:
        21: iload 6
            iload 7
            if_icmplt 7
        22: .line 1446
            aload 3 /* buffer */
            invokevirtual java.lang.StringBuilder.length:()I
            ifeq 24
        23: .line 1447
            aload 2 /* list */
            aload 3 /* buffer */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        24: .line 1450
      StackMap locals: java.lang.String char[] java.util.ArrayList java.lang.StringBuilder int
      StackMap stack:
            aload 2 /* list */
            aload 2 /* list */
            invokevirtual java.util.ArrayList.size:()I
            anewarray java.lang.String
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            areturn
        end local 4 // char prevChar
        end local 3 // java.lang.StringBuilder buffer
        end local 2 // java.util.ArrayList list
        end local 1 // char[] array
        end local 0 // java.lang.String text
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0      text  Ljava/lang/String;
            3   25     1     array  [C
            4   25     2      list  Ljava/util/ArrayList<Ljava/lang/String;>;
            5   25     3    buffer  Ljava/lang/StringBuilder;
            6   25     4  prevChar  C
            8   20     5        ch  C
    MethodParameters:
      Name  Flags
      text  final
}
SourceFile: "FilenameUtils.java"