public class org.springframework.util.AntPathMatcher implements org.springframework.util.PathMatcher
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.util.AntPathMatcher
  super_class: java.lang.Object
{
  public static final java.lang.String DEFAULT_PATH_SEPARATOR;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "/"

  private static final int CACHE_TURNOFF_THRESHOLD;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 65536

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

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

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

  private org.springframework.util.AntPathMatcher$PathSeparatorPatternCache pathSeparatorPatternCache;
    descriptor: Lorg/springframework/util/AntPathMatcher$PathSeparatorPatternCache;
    flags: (0x0002) ACC_PRIVATE

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

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

  private volatile java.lang.Boolean cachePatterns;
    descriptor: Ljava/lang/Boolean;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private final java.util.Map<java.lang.String, java.lang.String[]> tokenizedPatternCache;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;[Ljava/lang/String;>;

  final java.util.Map<java.lang.String, org.springframework.util.AntPathMatcher$AntPathStringMatcher> stringMatcherCache;
    descriptor: Ljava/util/Map;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 80
            ldc "\\{[^/]+?\\}"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.springframework.util.AntPathMatcher.VARIABLE_PATTERN:Ljava/util/regex/Pattern;
         1: .line 82
            iconst_3
            newarray 5
            dup
            iconst_0
            bipush 42
            castore
            dup
            iconst_1
            bipush 63
            castore
            dup
            iconst_2
            bipush 123
            castore
            putstatic org.springframework.util.AntPathMatcher.WILDCARD_CHARS:[C
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.springframework.util.AntPathMatcher this
         0: .line 104
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 89
            aload 0 /* this */
            iconst_1
            putfield org.springframework.util.AntPathMatcher.caseSensitive:Z
         2: .line 91
            aload 0 /* this */
            iconst_0
            putfield org.springframework.util.AntPathMatcher.trimTokens:Z
         3: .line 96
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            sipush 256
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.springframework.util.AntPathMatcher.tokenizedPatternCache:Ljava/util/Map;
         4: .line 98
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            sipush 256
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.springframework.util.AntPathMatcher.stringMatcherCache:Ljava/util/Map;
         5: .line 105
            aload 0 /* this */
            ldc "/"
            putfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
         6: .line 106
            aload 0 /* this */
            new org.springframework.util.AntPathMatcher$PathSeparatorPatternCache
            dup
            ldc "/"
            invokespecial org.springframework.util.AntPathMatcher$PathSeparatorPatternCache.<init>:(Ljava/lang/String;)V
            putfield org.springframework.util.AntPathMatcher.pathSeparatorPatternCache:Lorg/springframework/util/AntPathMatcher$PathSeparatorPatternCache;
         7: .line 107
            return
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/springframework/util/AntPathMatcher;

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pathSeparator
         0: .line 114
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 89
            aload 0 /* this */
            iconst_1
            putfield org.springframework.util.AntPathMatcher.caseSensitive:Z
         2: .line 91
            aload 0 /* this */
            iconst_0
            putfield org.springframework.util.AntPathMatcher.trimTokens:Z
         3: .line 96
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            sipush 256
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.springframework.util.AntPathMatcher.tokenizedPatternCache:Ljava/util/Map;
         4: .line 98
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            sipush 256
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.springframework.util.AntPathMatcher.stringMatcherCache:Ljava/util/Map;
         5: .line 115
            aload 1 /* pathSeparator */
            ldc "'pathSeparator' is required"
            invokestatic org.springframework.util.Assert.notNull:(Ljava/lang/Object;Ljava/lang/String;)V
         6: .line 116
            aload 0 /* this */
            aload 1 /* pathSeparator */
            putfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
         7: .line 117
            aload 0 /* this */
            new org.springframework.util.AntPathMatcher$PathSeparatorPatternCache
            dup
            aload 1 /* pathSeparator */
            invokespecial org.springframework.util.AntPathMatcher$PathSeparatorPatternCache.<init>:(Ljava/lang/String;)V
            putfield org.springframework.util.AntPathMatcher.pathSeparatorPatternCache:Lorg/springframework/util/AntPathMatcher$PathSeparatorPatternCache;
         8: .line 118
            return
        end local 1 // java.lang.String pathSeparator
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Lorg/springframework/util/AntPathMatcher;
            0    9     1  pathSeparator  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      pathSeparator  

  public void setPathSeparator(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pathSeparator
         0: .line 126
            aload 0 /* this */
            aload 1 /* pathSeparator */
            ifnull 1
            aload 1 /* pathSeparator */
            goto 2
      StackMap locals:
      StackMap stack: org.springframework.util.AntPathMatcher
         1: ldc "/"
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String
      StackMap stack: org.springframework.util.AntPathMatcher java.lang.String
         2: putfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
         3: .line 127
            aload 0 /* this */
            new org.springframework.util.AntPathMatcher$PathSeparatorPatternCache
            dup
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokespecial org.springframework.util.AntPathMatcher$PathSeparatorPatternCache.<init>:(Ljava/lang/String;)V
            putfield org.springframework.util.AntPathMatcher.pathSeparatorPatternCache:Lorg/springframework/util/AntPathMatcher$PathSeparatorPatternCache;
         4: .line 128
            return
        end local 1 // java.lang.String pathSeparator
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    5     0           this  Lorg/springframework/util/AntPathMatcher;
            0    5     1  pathSeparator  Ljava/lang/String;
    RuntimeVisibleParameterAnnotations: 
      0:
        org.springframework.lang.Nullable()
    MethodParameters:
               Name  Flags
      pathSeparator  

  public void setCaseSensitive(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // boolean caseSensitive
         0: .line 136
            aload 0 /* this */
            iload 1 /* caseSensitive */
            putfield org.springframework.util.AntPathMatcher.caseSensitive:Z
         1: .line 137
            return
        end local 1 // boolean caseSensitive
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/springframework/util/AntPathMatcher;
            0    2     1  caseSensitive  Z
    MethodParameters:
               Name  Flags
      caseSensitive  

  public void setTrimTokens(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // boolean trimTokens
         0: .line 144
            aload 0 /* this */
            iload 1 /* trimTokens */
            putfield org.springframework.util.AntPathMatcher.trimTokens:Z
         1: .line 145
            return
        end local 1 // boolean trimTokens
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lorg/springframework/util/AntPathMatcher;
            0    2     1  trimTokens  Z
    MethodParameters:
            Name  Flags
      trimTokens  

  public void setCachePatterns(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // boolean cachePatterns
         0: .line 160
            aload 0 /* this */
            iload 1 /* cachePatterns */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            putfield org.springframework.util.AntPathMatcher.cachePatterns:Ljava/lang/Boolean;
         1: .line 161
            return
        end local 1 // boolean cachePatterns
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/springframework/util/AntPathMatcher;
            0    2     1  cachePatterns  Z
    MethodParameters:
               Name  Flags
      cachePatterns  

  private void deactivatePatternCache();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.springframework.util.AntPathMatcher this
         0: .line 164
            aload 0 /* this */
            iconst_0
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            putfield org.springframework.util.AntPathMatcher.cachePatterns:Ljava/lang/Boolean;
         1: .line 165
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.tokenizedPatternCache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         2: .line 166
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.stringMatcherCache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         3: .line 167
            return
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/springframework/util/AntPathMatcher;

  public boolean isPattern(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String path
         0: .line 172
            aload 1 /* path */
            bipush 42
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 1
            aload 1 /* path */
            bipush 63
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // java.lang.String path
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/springframework/util/AntPathMatcher;
            0    2     1  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  

  public boolean match(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String path
         0: .line 177
            aload 0 /* this */
            aload 1 /* pattern */
            aload 2 /* path */
            iconst_1
            aconst_null
            invokevirtual org.springframework.util.AntPathMatcher.doMatch:(Ljava/lang/String;Ljava/lang/String;ZLjava/util/Map;)Z
            ireturn
        end local 2 // java.lang.String path
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/springframework/util/AntPathMatcher;
            0    1     1  pattern  Ljava/lang/String;
            0    1     2     path  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      pattern  
      path     

  public boolean matchStart(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String path
         0: .line 182
            aload 0 /* this */
            aload 1 /* pattern */
            aload 2 /* path */
            iconst_0
            aconst_null
            invokevirtual org.springframework.util.AntPathMatcher.doMatch:(Ljava/lang/String;Ljava/lang/String;ZLjava/util/Map;)Z
            ireturn
        end local 2 // java.lang.String path
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/springframework/util/AntPathMatcher;
            0    1     1  pattern  Ljava/lang/String;
            0    1     2     path  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      pattern  
      path     

  protected boolean doMatch(java.lang.String, java.lang.String, boolean, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/lang/String;ZLjava/util/Map;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=19, args_size=5
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String path
        start local 3 // boolean fullMatch
        start local 4 // java.util.Map uriTemplateVariables
         0: .line 196
            aload 2 /* path */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            aload 1 /* pattern */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            if_icmpeq 2
         1: .line 197
            iconst_0
            ireturn
         2: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* pattern */
            invokevirtual org.springframework.util.AntPathMatcher.tokenizePattern:(Ljava/lang/String;)[Ljava/lang/String;
            astore 5 /* pattDirs */
        start local 5 // java.lang.String[] pattDirs
         3: .line 201
            iload 3 /* fullMatch */
            ifeq 5
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.caseSensitive:Z
            ifeq 5
            aload 0 /* this */
            aload 2 /* path */
            aload 5 /* pattDirs */
            invokevirtual org.springframework.util.AntPathMatcher.isPotentialMatch:(Ljava/lang/String;[Ljava/lang/String;)Z
            ifne 5
         4: .line 202
            iconst_0
            ireturn
         5: .line 205
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 0 /* this */
            aload 2 /* path */
            invokevirtual org.springframework.util.AntPathMatcher.tokenizePath:(Ljava/lang/String;)[Ljava/lang/String;
            astore 6 /* pathDirs */
        start local 6 // java.lang.String[] pathDirs
         6: .line 207
            iconst_0
            istore 7 /* pattIdxStart */
        start local 7 // int pattIdxStart
         7: .line 208
            aload 5 /* pattDirs */
            arraylength
            iconst_1
            isub
            istore 8 /* pattIdxEnd */
        start local 8 // int pattIdxEnd
         8: .line 209
            iconst_0
            istore 9 /* pathIdxStart */
        start local 9 // int pathIdxStart
         9: .line 210
            aload 6 /* pathDirs */
            arraylength
            iconst_1
            isub
            istore 10 /* pathIdxEnd */
        start local 10 // int pathIdxEnd
        10: .line 213
            goto 18
        11: .line 214
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String int java.util.Map java.lang.String[] java.lang.String[] int int int int
      StackMap stack:
            aload 5 /* pattDirs */
            iload 7 /* pattIdxStart */
            aaload
            astore 11 /* pattDir */
        start local 11 // java.lang.String pattDir
        12: .line 215
            ldc "**"
            aload 11 /* pattDir */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
        13: .line 216
            goto 19
        14: .line 218
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 11 /* pattDir */
            aload 6 /* pathDirs */
            iload 9 /* pathIdxStart */
            aaload
            aload 4 /* uriTemplateVariables */
            invokevirtual org.springframework.util.AntPathMatcher.matchStrings:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Z
            ifne 16
        15: .line 219
            iconst_0
            ireturn
        16: .line 221
      StackMap locals:
      StackMap stack:
            iinc 7 /* pattIdxStart */ 1
        17: .line 222
            iinc 9 /* pathIdxStart */ 1
        end local 11 // java.lang.String pattDir
        18: .line 213
      StackMap locals:
      StackMap stack:
            iload 7 /* pattIdxStart */
            iload 8 /* pattIdxEnd */
            if_icmpgt 19
            iload 9 /* pathIdxStart */
            iload 10 /* pathIdxEnd */
            if_icmple 11
        19: .line 225
      StackMap locals:
      StackMap stack:
            iload 9 /* pathIdxStart */
            iload 10 /* pathIdxEnd */
            if_icmple 34
        20: .line 227
            iload 7 /* pattIdxStart */
            iload 8 /* pattIdxEnd */
            if_icmple 23
        21: .line 228
            aload 1 /* pattern */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            aload 2 /* path */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            if_icmpne 22
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
        22: iconst_0
            ireturn
        23: .line 230
      StackMap locals:
      StackMap stack:
            iload 3 /* fullMatch */
            ifne 25
        24: .line 231
            iconst_1
            ireturn
        25: .line 233
      StackMap locals:
      StackMap stack:
            iload 7 /* pattIdxStart */
            iload 8 /* pattIdxEnd */
            if_icmpne 27
            aload 5 /* pattDirs */
            iload 7 /* pattIdxStart */
            aaload
            ldc "*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 27
            aload 2 /* path */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 27
        26: .line 234
            iconst_1
            ireturn
        27: .line 236
      StackMap locals:
      StackMap stack:
            iload 7 /* pattIdxStart */
            istore 11 /* i */
        start local 11 // int i
        28: goto 32
        29: .line 237
      StackMap locals: int
      StackMap stack:
            aload 5 /* pattDirs */
            iload 11 /* i */
            aaload
            ldc "**"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 31
        30: .line 238
            iconst_0
            ireturn
        31: .line 236
      StackMap locals:
      StackMap stack:
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 11 /* i */
            iload 8 /* pattIdxEnd */
            if_icmple 29
        end local 11 // int i
        33: .line 241
            iconst_1
            ireturn
        34: .line 243
      StackMap locals:
      StackMap stack:
            iload 7 /* pattIdxStart */
            iload 8 /* pattIdxEnd */
            if_icmple 36
        35: .line 245
            iconst_0
            ireturn
        36: .line 247
      StackMap locals:
      StackMap stack:
            iload 3 /* fullMatch */
            ifne 45
            ldc "**"
            aload 5 /* pattDirs */
            iload 7 /* pattIdxStart */
            aaload
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 45
        37: .line 249
            iconst_1
            ireturn
        38: .line 254
      StackMap locals:
      StackMap stack:
            aload 5 /* pattDirs */
            iload 8 /* pattIdxEnd */
            aaload
            astore 11 /* pattDir */
        start local 11 // java.lang.String pattDir
        39: .line 255
            aload 11 /* pattDir */
            ldc "**"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 41
        40: .line 256
            goto 46
        41: .line 258
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 11 /* pattDir */
            aload 6 /* pathDirs */
            iload 10 /* pathIdxEnd */
            aaload
            aload 4 /* uriTemplateVariables */
            invokevirtual org.springframework.util.AntPathMatcher.matchStrings:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Z
            ifne 43
        42: .line 259
            iconst_0
            ireturn
        43: .line 261
      StackMap locals:
      StackMap stack:
            iinc 8 /* pattIdxEnd */ -1
        44: .line 262
            iinc 10 /* pathIdxEnd */ -1
        end local 11 // java.lang.String pattDir
        45: .line 253
      StackMap locals:
      StackMap stack:
            iload 7 /* pattIdxStart */
            iload 8 /* pattIdxEnd */
            if_icmpgt 46
            iload 9 /* pathIdxStart */
            iload 10 /* pathIdxEnd */
            if_icmple 38
        46: .line 264
      StackMap locals:
      StackMap stack:
            iload 9 /* pathIdxStart */
            iload 10 /* pathIdxEnd */
            if_icmple 86
        47: .line 266
            iload 7 /* pattIdxStart */
            istore 11 /* i */
        start local 11 // int i
        48: goto 52
        49: .line 267
      StackMap locals: int
      StackMap stack:
            aload 5 /* pattDirs */
            iload 11 /* i */
            aaload
            ldc "**"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 51
        50: .line 268
            iconst_0
            ireturn
        51: .line 266
      StackMap locals:
      StackMap stack:
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        52: iload 11 /* i */
            iload 8 /* pattIdxEnd */
            if_icmple 49
        end local 11 // int i
        53: .line 271
            iconst_1
            ireturn
        54: .line 275
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 11 /* patIdxTmp */
        start local 11 // int patIdxTmp
        55: .line 276
            iload 7 /* pattIdxStart */
            iconst_1
            iadd
            istore 12 /* i */
        start local 12 // int i
        56: goto 61
        57: .line 277
      StackMap locals: int int
      StackMap stack:
            aload 5 /* pattDirs */
            iload 12 /* i */
            aaload
            ldc "**"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 60
        58: .line 278
            iload 12 /* i */
            istore 11 /* patIdxTmp */
        59: .line 279
            goto 62
        60: .line 276
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        61: iload 12 /* i */
            iload 8 /* pattIdxEnd */
            if_icmple 57
        end local 12 // int i
        62: .line 282
      StackMap locals:
      StackMap stack:
            iload 11 /* patIdxTmp */
            iload 7 /* pattIdxStart */
            iconst_1
            iadd
            if_icmpne 65
        63: .line 284
            iinc 7 /* pattIdxStart */ 1
        64: .line 285
            goto 86
        65: .line 289
      StackMap locals:
      StackMap stack:
            iload 11 /* patIdxTmp */
            iload 7 /* pattIdxStart */
            isub
            iconst_1
            isub
            istore 12 /* patLength */
        start local 12 // int patLength
        66: .line 290
            iload 10 /* pathIdxEnd */
            iload 9 /* pathIdxStart */
            isub
            iconst_1
            iadd
            istore 13 /* strLength */
        start local 13 // int strLength
        67: .line 291
            iconst_m1
            istore 14 /* foundIdx */
        start local 14 // int foundIdx
        68: .line 294
            iconst_0
            istore 15 /* i */
        start local 15 // int i
        69: goto 81
        70: .line 295
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String int java.util.Map java.lang.String[] java.lang.String[] int int int int int int int int int
      StackMap stack:
            iconst_0
            istore 16 /* j */
        start local 16 // int j
        71: goto 77
        72: .line 296
      StackMap locals: int
      StackMap stack:
            aload 5 /* pattDirs */
            iload 7 /* pattIdxStart */
            iload 16 /* j */
            iadd
            iconst_1
            iadd
            aaload
            astore 17 /* subPat */
        start local 17 // java.lang.String subPat
        73: .line 297
            aload 6 /* pathDirs */
            iload 9 /* pathIdxStart */
            iload 15 /* i */
            iadd
            iload 16 /* j */
            iadd
            aaload
            astore 18 /* subStr */
        start local 18 // java.lang.String subStr
        74: .line 298
            aload 0 /* this */
            aload 17 /* subPat */
            aload 18 /* subStr */
            aload 4 /* uriTemplateVariables */
            invokevirtual org.springframework.util.AntPathMatcher.matchStrings:(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Z
            ifne 76
        75: .line 299
            goto 80
        end local 18 // java.lang.String subStr
        end local 17 // java.lang.String subPat
        76: .line 295
      StackMap locals:
      StackMap stack:
            iinc 16 /* j */ 1
      StackMap locals:
      StackMap stack:
        77: iload 16 /* j */
            iload 12 /* patLength */
            if_icmplt 72
        end local 16 // int j
        78: .line 302
            iload 9 /* pathIdxStart */
            iload 15 /* i */
            iadd
            istore 14 /* foundIdx */
        79: .line 303
            goto 82
        80: .line 294
      StackMap locals:
      StackMap stack:
            iinc 15 /* i */ 1
      StackMap locals:
      StackMap stack:
        81: iload 15 /* i */
            iload 13 /* strLength */
            iload 12 /* patLength */
            isub
            if_icmple 70
        end local 15 // int i
        82: .line 306
      StackMap locals:
      StackMap stack:
            iload 14 /* foundIdx */
            iconst_m1
            if_icmpne 84
        83: .line 307
            iconst_0
            ireturn
        84: .line 310
      StackMap locals:
      StackMap stack:
            iload 11 /* patIdxTmp */
            istore 7 /* pattIdxStart */
        85: .line 311
            iload 14 /* foundIdx */
            iload 12 /* patLength */
            iadd
            istore 9 /* pathIdxStart */
        end local 14 // int foundIdx
        end local 13 // int strLength
        end local 12 // int patLength
        end local 11 // int patIdxTmp
        86: .line 274
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String int java.util.Map java.lang.String[] java.lang.String[] int int int int
      StackMap stack:
            iload 7 /* pattIdxStart */
            iload 8 /* pattIdxEnd */
            if_icmpeq 87
            iload 9 /* pathIdxStart */
            iload 10 /* pathIdxEnd */
            if_icmple 54
        87: .line 314
      StackMap locals:
      StackMap stack:
            iload 7 /* pattIdxStart */
            istore 11 /* i */
        start local 11 // int i
        88: goto 92
        89: .line 315
      StackMap locals: int
      StackMap stack:
            aload 5 /* pattDirs */
            iload 11 /* i */
            aaload
            ldc "**"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 91
        90: .line 316
            iconst_0
            ireturn
        91: .line 314
      StackMap locals:
      StackMap stack:
            iinc 11 /* i */ 1
      StackMap locals:
      StackMap stack:
        92: iload 11 /* i */
            iload 8 /* pattIdxEnd */
            if_icmple 89
        end local 11 // int i
        93: .line 320
            iconst_1
            ireturn
        end local 10 // int pathIdxEnd
        end local 9 // int pathIdxStart
        end local 8 // int pattIdxEnd
        end local 7 // int pattIdxStart
        end local 6 // java.lang.String[] pathDirs
        end local 5 // java.lang.String[] pattDirs
        end local 4 // java.util.Map uriTemplateVariables
        end local 3 // boolean fullMatch
        end local 2 // java.lang.String path
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   94     0                  this  Lorg/springframework/util/AntPathMatcher;
            0   94     1               pattern  Ljava/lang/String;
            0   94     2                  path  Ljava/lang/String;
            0   94     3             fullMatch  Z
            0   94     4  uriTemplateVariables  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            3   94     5              pattDirs  [Ljava/lang/String;
            6   94     6              pathDirs  [Ljava/lang/String;
            7   94     7          pattIdxStart  I
            8   94     8            pattIdxEnd  I
            9   94     9          pathIdxStart  I
           10   94    10            pathIdxEnd  I
           12   18    11               pattDir  Ljava/lang/String;
           28   33    11                     i  I
           39   45    11               pattDir  Ljava/lang/String;
           48   53    11                     i  I
           55   86    11             patIdxTmp  I
           56   62    12                     i  I
           66   86    12             patLength  I
           67   86    13             strLength  I
           68   86    14              foundIdx  I
           69   82    15                     i  I
           71   78    16                     j  I
           73   76    17                subPat  Ljava/lang/String;
           74   76    18                subStr  Ljava/lang/String;
           88   93    11                     i  I
    Signature: (Ljava/lang/String;Ljava/lang/String;ZLjava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Z
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        org.springframework.lang.Nullable()
    MethodParameters:
                      Name  Flags
      pattern               
      path                  
      fullMatch             
      uriTemplateVariables  

  private boolean isPotentialMatch(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String path
        start local 2 // java.lang.String[] pattDirs
         0: .line 324
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.trimTokens:Z
            ifne 14
         1: .line 325
            iconst_0
            istore 3 /* pos */
        start local 3 // int pos
         2: .line 326
            aload 2 /* pattDirs */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 13
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String[] int top int int java.lang.String[]
      StackMap stack:
         3: aload 7
            iload 5
            aaload
            astore 4 /* pattDir */
        start local 4 // java.lang.String pattDir
         4: .line 327
            aload 0 /* this */
            aload 1 /* path */
            iload 3 /* pos */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual org.springframework.util.AntPathMatcher.skipSeparator:(Ljava/lang/String;ILjava/lang/String;)I
            istore 8 /* skipped */
        start local 8 // int skipped
         5: .line 328
            iload 3 /* pos */
            iload 8 /* skipped */
            iadd
            istore 3 /* pos */
         6: .line 329
            aload 0 /* this */
            aload 1 /* path */
            iload 3 /* pos */
            aload 4 /* pattDir */
            invokevirtual org.springframework.util.AntPathMatcher.skipSegment:(Ljava/lang/String;ILjava/lang/String;)I
            istore 8 /* skipped */
         7: .line 330
            iload 8 /* skipped */
            aload 4 /* pattDir */
            invokevirtual java.lang.String.length:()I
            if_icmpge 11
         8: .line 331
            iload 8 /* skipped */
            ifgt 10
            aload 4 /* pattDir */
            invokevirtual java.lang.String.length:()I
            ifle 9
            aload 0 /* this */
            aload 4 /* pattDir */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokevirtual org.springframework.util.AntPathMatcher.isWildcardChar:(C)Z
            ifne 10
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String[] int java.lang.String int int java.lang.String[] int
      StackMap stack:
         9: iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
        10: iconst_1
            ireturn
        11: .line 333
      StackMap locals:
      StackMap stack:
            iload 3 /* pos */
            iload 8 /* skipped */
            iadd
            istore 3 /* pos */
        end local 8 // int skipped
        end local 4 // java.lang.String pattDir
        12: .line 326
            iinc 5 1
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String[] int top int int java.lang.String[]
      StackMap stack:
        13: iload 5
            iload 6
            if_icmplt 3
        end local 3 // int pos
        14: .line 336
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String[]
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // java.lang.String[] pattDirs
        end local 1 // java.lang.String path
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/springframework/util/AntPathMatcher;
            0   15     1      path  Ljava/lang/String;
            0   15     2  pattDirs  [Ljava/lang/String;
            2   14     3       pos  I
            4   12     4   pattDir  Ljava/lang/String;
            5   12     8   skipped  I
    MethodParameters:
          Name  Flags
      path      
      pattDirs  

  private int skipSegment(java.lang.String, int, java.lang.String);
    descriptor: (Ljava/lang/String;ILjava/lang/String;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=8, args_size=4
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String path
        start local 2 // int pos
        start local 3 // java.lang.String prefix
         0: .line 340
            iconst_0
            istore 4 /* skipped */
        start local 4 // int skipped
         1: .line 341
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         2: goto 12
         3: .line 342
      StackMap locals: int int
      StackMap stack:
            aload 3 /* prefix */
            iload 5 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            istore 6 /* c */
        start local 6 // char c
         4: .line 343
            aload 0 /* this */
            iload 6 /* c */
            invokevirtual org.springframework.util.AntPathMatcher.isWildcardChar:(C)Z
            ifeq 6
         5: .line 344
            iload 4 /* skipped */
            ireturn
         6: .line 346
      StackMap locals: int
      StackMap stack:
            iload 2 /* pos */
            iload 4 /* skipped */
            iadd
            istore 7 /* currPos */
        start local 7 // int currPos
         7: .line 347
            iload 7 /* currPos */
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            if_icmplt 9
         8: .line 348
            iconst_0
            ireturn
         9: .line 350
      StackMap locals: int
      StackMap stack:
            iload 6 /* c */
            aload 1 /* path */
            iload 7 /* currPos */
            invokevirtual java.lang.String.charAt:(I)C
            if_icmpne 11
        10: .line 351
            iinc 4 /* skipped */ 1
        end local 7 // int currPos
        end local 6 // char c
        11: .line 341
      StackMap locals:
      StackMap stack:
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 5 /* i */
            aload 3 /* prefix */
            invokevirtual java.lang.String.length:()I
            if_icmplt 3
        end local 5 // int i
        13: .line 354
            iload 4 /* skipped */
            ireturn
        end local 4 // int skipped
        end local 3 // java.lang.String prefix
        end local 2 // int pos
        end local 1 // java.lang.String path
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lorg/springframework/util/AntPathMatcher;
            0   14     1     path  Ljava/lang/String;
            0   14     2      pos  I
            0   14     3   prefix  Ljava/lang/String;
            1   14     4  skipped  I
            2   13     5        i  I
            4   11     6        c  C
            7   11     7  currPos  I
    MethodParameters:
        Name  Flags
      path    
      pos     
      prefix  

  private int skipSeparator(java.lang.String, int, java.lang.String);
    descriptor: (Ljava/lang/String;ILjava/lang/String;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String path
        start local 2 // int pos
        start local 3 // java.lang.String separator
         0: .line 358
            iconst_0
            istore 4 /* skipped */
        start local 4 // int skipped
         1: .line 359
            goto 3
         2: .line 360
      StackMap locals: int
      StackMap stack:
            iload 4 /* skipped */
            aload 3 /* separator */
            invokevirtual java.lang.String.length:()I
            iadd
            istore 4 /* skipped */
         3: .line 359
      StackMap locals:
      StackMap stack:
            aload 1 /* path */
            aload 3 /* separator */
            iload 2 /* pos */
            iload 4 /* skipped */
            iadd
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;I)Z
            ifne 2
         4: .line 362
            iload 4 /* skipped */
            ireturn
        end local 4 // int skipped
        end local 3 // java.lang.String separator
        end local 2 // int pos
        end local 1 // java.lang.String path
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lorg/springframework/util/AntPathMatcher;
            0    5     1       path  Ljava/lang/String;
            0    5     2        pos  I
            0    5     3  separator  Ljava/lang/String;
            1    5     4    skipped  I
    MethodParameters:
           Name  Flags
      path       
      pos        
      separator  

  private boolean isWildcardChar(char);
    descriptor: (C)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // char c
         0: .line 366
            getstatic org.springframework.util.AntPathMatcher.WILDCARD_CHARS:[C
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: org.springframework.util.AntPathMatcher int top int int char[]
      StackMap stack:
         1: aload 5
            iload 3
            caload
            istore 2 /* candidate */
        start local 2 // char candidate
         2: .line 367
            iload 1 /* c */
            iload 2 /* candidate */
            if_icmpne 4
         3: .line 368
            iconst_1
            ireturn
        end local 2 // char candidate
         4: .line 366
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 371
            iconst_0
            ireturn
        end local 1 // char c
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/springframework/util/AntPathMatcher;
            0    7     1          c  C
            2    4     2  candidate  C
    MethodParameters:
      Name  Flags
      c     

  protected java.lang.String[] tokenizePattern(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
         0: .line 382
            aconst_null
            astore 2 /* tokenized */
        start local 2 // java.lang.String[] tokenized
         1: .line 383
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.cachePatterns:Ljava/lang/Boolean;
            astore 3 /* cachePatterns */
        start local 3 // java.lang.Boolean cachePatterns
         2: .line 384
            aload 3 /* cachePatterns */
            ifnull 3
            aload 3 /* cachePatterns */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 4
         3: .line 385
      StackMap locals: java.lang.String[] java.lang.Boolean
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.tokenizedPatternCache:Ljava/util/Map;
            aload 1 /* pattern */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 2 /* tokenized */
         4: .line 387
      StackMap locals:
      StackMap stack:
            aload 2 /* tokenized */
            ifnonnull 11
         5: .line 388
            aload 0 /* this */
            aload 1 /* pattern */
            invokevirtual org.springframework.util.AntPathMatcher.tokenizePath:(Ljava/lang/String;)[Ljava/lang/String;
            astore 2 /* tokenized */
         6: .line 389
            aload 3 /* cachePatterns */
            ifnonnull 9
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.tokenizedPatternCache:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            ldc 65536
            if_icmplt 9
         7: .line 393
            aload 0 /* this */
            invokevirtual org.springframework.util.AntPathMatcher.deactivatePatternCache:()V
         8: .line 394
            aload 2 /* tokenized */
            areturn
         9: .line 396
      StackMap locals:
      StackMap stack:
            aload 3 /* cachePatterns */
            ifnull 10
            aload 3 /* cachePatterns */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 11
        10: .line 397
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.tokenizedPatternCache:Ljava/util/Map;
            aload 1 /* pattern */
            aload 2 /* tokenized */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 400
      StackMap locals:
      StackMap stack:
            aload 2 /* tokenized */
            areturn
        end local 3 // java.lang.Boolean cachePatterns
        end local 2 // java.lang.String[] tokenized
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0           this  Lorg/springframework/util/AntPathMatcher;
            0   12     1        pattern  Ljava/lang/String;
            1   12     2      tokenized  [Ljava/lang/String;
            2   12     3  cachePatterns  Ljava/lang/Boolean;
    MethodParameters:
         Name  Flags
      pattern  

  protected java.lang.String[] tokenizePath(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String path
         0: .line 409
            aload 1 /* path */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.trimTokens:Z
            iconst_1
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;ZZ)[Ljava/lang/String;
            areturn
        end local 1 // java.lang.String path
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/AntPathMatcher;
            0    1     1  path  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      path  

  private boolean matchStrings(java.lang.String, java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String str
        start local 3 // java.util.Map uriTemplateVariables
         0: .line 421
            aload 0 /* this */
            aload 1 /* pattern */
            invokevirtual org.springframework.util.AntPathMatcher.getStringMatcher:(Ljava/lang/String;)Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;
            aload 2 /* str */
            aload 3 /* uriTemplateVariables */
            invokevirtual org.springframework.util.AntPathMatcher$AntPathStringMatcher.matchStrings:(Ljava/lang/String;Ljava/util/Map;)Z
            ireturn
        end local 3 // java.util.Map uriTemplateVariables
        end local 2 // java.lang.String str
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0                  this  Lorg/springframework/util/AntPathMatcher;
            0    1     1               pattern  Ljava/lang/String;
            0    1     2                   str  Ljava/lang/String;
            0    1     3  uriTemplateVariables  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Z
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
      2:
        org.springframework.lang.Nullable()
    MethodParameters:
                      Name  Flags
      pattern               
      str                   
      uriTemplateVariables  

  protected org.springframework.util.AntPathMatcher$AntPathStringMatcher getStringMatcher(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
         0: .line 438
            aconst_null
            astore 2 /* matcher */
        start local 2 // org.springframework.util.AntPathMatcher$AntPathStringMatcher matcher
         1: .line 439
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.cachePatterns:Ljava/lang/Boolean;
            astore 3 /* cachePatterns */
        start local 3 // java.lang.Boolean cachePatterns
         2: .line 440
            aload 3 /* cachePatterns */
            ifnull 3
            aload 3 /* cachePatterns */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 4
         3: .line 441
      StackMap locals: org.springframework.util.AntPathMatcher$AntPathStringMatcher java.lang.Boolean
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.stringMatcherCache:Ljava/util/Map;
            aload 1 /* pattern */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.springframework.util.AntPathMatcher$AntPathStringMatcher
            astore 2 /* matcher */
         4: .line 443
      StackMap locals:
      StackMap stack:
            aload 2 /* matcher */
            ifnonnull 11
         5: .line 444
            new org.springframework.util.AntPathMatcher$AntPathStringMatcher
            dup
            aload 1 /* pattern */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.caseSensitive:Z
            invokespecial org.springframework.util.AntPathMatcher$AntPathStringMatcher.<init>:(Ljava/lang/String;Z)V
            astore 2 /* matcher */
         6: .line 445
            aload 3 /* cachePatterns */
            ifnonnull 9
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.stringMatcherCache:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            ldc 65536
            if_icmplt 9
         7: .line 449
            aload 0 /* this */
            invokevirtual org.springframework.util.AntPathMatcher.deactivatePatternCache:()V
         8: .line 450
            aload 2 /* matcher */
            areturn
         9: .line 452
      StackMap locals:
      StackMap stack:
            aload 3 /* cachePatterns */
            ifnull 10
            aload 3 /* cachePatterns */
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 11
        10: .line 453
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.stringMatcherCache:Ljava/util/Map;
            aload 1 /* pattern */
            aload 2 /* matcher */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 456
      StackMap locals:
      StackMap stack:
            aload 2 /* matcher */
            areturn
        end local 3 // java.lang.Boolean cachePatterns
        end local 2 // org.springframework.util.AntPathMatcher$AntPathStringMatcher matcher
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0           this  Lorg/springframework/util/AntPathMatcher;
            0   12     1        pattern  Ljava/lang/String;
            1   12     2        matcher  Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;
            2   12     3  cachePatterns  Ljava/lang/Boolean;
    MethodParameters:
         Name  Flags
      pattern  

  public java.lang.String extractPathWithinPattern(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String path
         0: .line 474
            aload 1 /* pattern */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.trimTokens:Z
            iconst_1
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;ZZ)[Ljava/lang/String;
            astore 3 /* patternParts */
        start local 3 // java.lang.String[] patternParts
         1: .line 475
            aload 2 /* path */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.trimTokens:Z
            iconst_1
            invokestatic org.springframework.util.StringUtils.tokenizeToStringArray:(Ljava/lang/String;Ljava/lang/String;ZZ)[Ljava/lang/String;
            astore 4 /* pathParts */
        start local 4 // java.lang.String[] pathParts
         2: .line 476
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 5 /* builder */
        start local 5 // java.lang.StringBuilder builder
         3: .line 477
            iconst_0
            istore 6 /* pathStarted */
        start local 6 // boolean pathStarted
         4: .line 479
            iconst_0
            istore 7 /* segment */
        start local 7 // int segment
         5: goto 16
         6: .line 480
      StackMap locals: org.springframework.util.AntPathMatcher java.lang.String java.lang.String java.lang.String[] java.lang.String[] java.lang.StringBuilder int int
      StackMap stack:
            aload 3 /* patternParts */
            iload 7 /* segment */
            aaload
            astore 8 /* patternPart */
        start local 8 // java.lang.String patternPart
         7: .line 481
            aload 8 /* patternPart */
            bipush 42
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpgt 14
            aload 8 /* patternPart */
            bipush 63
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmple 15
         8: .line 482
            goto 14
         9: .line 483
      StackMap locals: java.lang.String
      StackMap stack:
            iload 6 /* pathStarted */
            ifne 10
            iload 7 /* segment */
            ifne 11
            aload 1 /* pattern */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 11
        10: .line 484
      StackMap locals:
      StackMap stack:
            aload 5 /* builder */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        11: .line 486
      StackMap locals:
      StackMap stack:
            aload 5 /* builder */
            aload 4 /* pathParts */
            iload 7 /* segment */
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 487
            iconst_1
            istore 6 /* pathStarted */
        13: .line 482
            iinc 7 /* segment */ 1
      StackMap locals:
      StackMap stack:
        14: iload 7 /* segment */
            aload 4 /* pathParts */
            arraylength
            if_icmplt 9
        end local 8 // java.lang.String patternPart
        15: .line 479
      StackMap locals:
      StackMap stack:
            iinc 7 /* segment */ 1
      StackMap locals:
      StackMap stack:
        16: iload 7 /* segment */
            aload 3 /* patternParts */
            arraylength
            if_icmplt 6
        end local 7 // int segment
        17: .line 492
            aload 5 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 6 // boolean pathStarted
        end local 5 // java.lang.StringBuilder builder
        end local 4 // java.lang.String[] pathParts
        end local 3 // java.lang.String[] patternParts
        end local 2 // java.lang.String path
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0          this  Lorg/springframework/util/AntPathMatcher;
            0   18     1       pattern  Ljava/lang/String;
            0   18     2          path  Ljava/lang/String;
            1   18     3  patternParts  [Ljava/lang/String;
            2   18     4     pathParts  [Ljava/lang/String;
            3   18     5       builder  Ljava/lang/StringBuilder;
            4   18     6   pathStarted  Z
            5   17     7       segment  I
            7   15     8   patternPart  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      pattern  
      path     

  public java.util.Map<java.lang.String, java.lang.String> extractUriTemplateVariables(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern
        start local 2 // java.lang.String path
         0: .line 497
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            astore 3 /* variables */
        start local 3 // java.util.Map variables
         1: .line 498
            aload 0 /* this */
            aload 1 /* pattern */
            aload 2 /* path */
            iconst_1
            aload 3 /* variables */
            invokevirtual org.springframework.util.AntPathMatcher.doMatch:(Ljava/lang/String;Ljava/lang/String;ZLjava/util/Map;)Z
            istore 4 /* result */
        start local 4 // boolean result
         2: .line 499
            iload 4 /* result */
            ifne 4
         3: .line 500
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Pattern \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* pattern */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\" is not a match for \""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 502
      StackMap locals: java.util.Map int
      StackMap stack:
            aload 3 /* variables */
            areturn
        end local 4 // boolean result
        end local 3 // java.util.Map variables
        end local 2 // java.lang.String path
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lorg/springframework/util/AntPathMatcher;
            0    5     1    pattern  Ljava/lang/String;
            0    5     2       path  Ljava/lang/String;
            1    5     3  variables  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            2    5     4     result  Z
    Signature: (Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    MethodParameters:
         Name  Flags
      pattern  
      path     

  public java.lang.String combine(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String pattern1
        start local 2 // java.lang.String pattern2
         0: .line 535
            aload 1 /* pattern1 */
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifne 2
            aload 2 /* pattern2 */
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifne 2
         1: .line 536
            ldc ""
            areturn
         2: .line 538
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern1 */
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifne 4
         3: .line 539
            aload 2 /* pattern2 */
            areturn
         4: .line 541
      StackMap locals:
      StackMap stack:
            aload 2 /* pattern2 */
            invokestatic org.springframework.util.StringUtils.hasText:(Ljava/lang/String;)Z
            ifne 6
         5: .line 542
            aload 1 /* pattern1 */
            areturn
         6: .line 545
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern1 */
            bipush 123
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpeq 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: istore 3 /* pattern1ContainsUriVar */
        start local 3 // boolean pattern1ContainsUriVar
         9: .line 546
            aload 1 /* pattern1 */
            aload 2 /* pattern2 */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            iload 3 /* pattern1ContainsUriVar */
            ifne 11
            aload 0 /* this */
            aload 1 /* pattern1 */
            aload 2 /* pattern2 */
            invokevirtual org.springframework.util.AntPathMatcher.match:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 11
        10: .line 549
            aload 2 /* pattern2 */
            areturn
        11: .line 554
      StackMap locals: int
      StackMap stack:
            aload 1 /* pattern1 */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparatorPatternCache:Lorg/springframework/util/AntPathMatcher$PathSeparatorPatternCache;
            invokevirtual org.springframework.util.AntPathMatcher$PathSeparatorPatternCache.getEndsOnWildCard:()Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 13
        12: .line 555
            aload 0 /* this */
            aload 1 /* pattern1 */
            iconst_0
            aload 1 /* pattern1 */
            invokevirtual java.lang.String.length:()I
            iconst_2
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aload 2 /* pattern2 */
            invokevirtual org.springframework.util.AntPathMatcher.concat:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        13: .line 560
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern1 */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparatorPatternCache:Lorg/springframework/util/AntPathMatcher$PathSeparatorPatternCache;
            invokevirtual org.springframework.util.AntPathMatcher$PathSeparatorPatternCache.getEndsOnDoubleWildCard:()Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 15
        14: .line 561
            aload 0 /* this */
            aload 1 /* pattern1 */
            aload 2 /* pattern2 */
            invokevirtual org.springframework.util.AntPathMatcher.concat:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        15: .line 564
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern1 */
            ldc "*."
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 4 /* starDotPos1 */
        start local 4 // int starDotPos1
        16: .line 565
            iload 3 /* pattern1ContainsUriVar */
            ifne 17
            iload 4 /* starDotPos1 */
            iconst_m1
            if_icmpeq 17
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            ldc "."
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 18
        17: .line 567
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* pattern1 */
            aload 2 /* pattern2 */
            invokevirtual org.springframework.util.AntPathMatcher.concat:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        18: .line 570
      StackMap locals:
      StackMap stack:
            aload 1 /* pattern1 */
            iload 4 /* starDotPos1 */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 5 /* ext1 */
        start local 5 // java.lang.String ext1
        19: .line 571
            aload 2 /* pattern2 */
            bipush 46
            invokevirtual java.lang.String.indexOf:(I)I
            istore 6 /* dotPos2 */
        start local 6 // int dotPos2
        20: .line 572
            iload 6 /* dotPos2 */
            iconst_m1
            if_icmpne 21
            aload 2 /* pattern2 */
            goto 22
      StackMap locals: java.lang.String int
      StackMap stack:
        21: aload 2 /* pattern2 */
            iconst_0
            iload 6 /* dotPos2 */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        22: astore 7 /* file2 */
        start local 7 // java.lang.String file2
        23: .line 573
            iload 6 /* dotPos2 */
            iconst_m1
            if_icmpne 24
            ldc ""
            goto 25
      StackMap locals: java.lang.String
      StackMap stack:
        24: aload 2 /* pattern2 */
            iload 6 /* dotPos2 */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        25: astore 8 /* ext2 */
        start local 8 // java.lang.String ext2
        26: .line 574
            aload 5 /* ext1 */
            ldc ".*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 27
            aload 5 /* ext1 */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 27
            iconst_0
            goto 28
      StackMap locals: java.lang.String
      StackMap stack:
        27: iconst_1
      StackMap locals:
      StackMap stack: int
        28: istore 9 /* ext1All */
        start local 9 // boolean ext1All
        29: .line 575
            aload 8 /* ext2 */
            ldc ".*"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 30
            aload 8 /* ext2 */
            invokevirtual java.lang.String.isEmpty:()Z
            ifne 30
            iconst_0
            goto 31
      StackMap locals: int
      StackMap stack:
        30: iconst_1
      StackMap locals:
      StackMap stack: int
        31: istore 10 /* ext2All */
        start local 10 // boolean ext2All
        32: .line 576
            iload 9 /* ext1All */
            ifne 34
            iload 10 /* ext2All */
            ifne 34
        33: .line 577
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot combine patterns: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* pattern1 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " vs "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* pattern2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        34: .line 579
      StackMap locals: int
      StackMap stack:
            iload 9 /* ext1All */
            ifeq 35
            aload 8 /* ext2 */
            goto 36
      StackMap locals:
      StackMap stack:
        35: aload 5 /* ext1 */
      StackMap locals:
      StackMap stack: java.lang.String
        36: astore 11 /* ext */
        start local 11 // java.lang.String ext
        37: .line 580
            new java.lang.StringBuilder
            dup
            aload 7 /* file2 */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 11 /* ext */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 11 // java.lang.String ext
        end local 10 // boolean ext2All
        end local 9 // boolean ext1All
        end local 8 // java.lang.String ext2
        end local 7 // java.lang.String file2
        end local 6 // int dotPos2
        end local 5 // java.lang.String ext1
        end local 4 // int starDotPos1
        end local 3 // boolean pattern1ContainsUriVar
        end local 2 // java.lang.String pattern2
        end local 1 // java.lang.String pattern1
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   38     0                    this  Lorg/springframework/util/AntPathMatcher;
            0   38     1                pattern1  Ljava/lang/String;
            0   38     2                pattern2  Ljava/lang/String;
            9   38     3  pattern1ContainsUriVar  Z
           16   38     4             starDotPos1  I
           19   38     5                    ext1  Ljava/lang/String;
           20   38     6                 dotPos2  I
           23   38     7                   file2  Ljava/lang/String;
           26   38     8                    ext2  Ljava/lang/String;
           29   38     9                 ext1All  Z
           32   38    10                 ext2All  Z
           37   38    11                     ext  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      pattern1  
      pattern2  

  private java.lang.String concat(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String path1
        start local 2 // java.lang.String path2
         0: .line 584
            aload 1 /* path1 */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            istore 3 /* path1EndsWithSeparator */
        start local 3 // boolean path1EndsWithSeparator
         1: .line 585
            aload 2 /* path2 */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            istore 4 /* path2StartsWithSeparator */
        start local 4 // boolean path2StartsWithSeparator
         2: .line 587
            iload 3 /* path1EndsWithSeparator */
            ifeq 4
            iload 4 /* path2StartsWithSeparator */
            ifeq 4
         3: .line 588
            new java.lang.StringBuilder
            dup
            aload 1 /* path1 */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* path2 */
            iconst_1
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         4: .line 590
      StackMap locals: int int
      StackMap stack:
            iload 3 /* path1EndsWithSeparator */
            ifne 5
            iload 4 /* path2StartsWithSeparator */
            ifeq 6
         5: .line 591
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* path1 */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* path2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
         6: .line 594
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* path1 */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher.pathSeparator:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* path2 */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 4 // boolean path2StartsWithSeparator
        end local 3 // boolean path1EndsWithSeparator
        end local 2 // java.lang.String path2
        end local 1 // java.lang.String path1
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    7     0                      this  Lorg/springframework/util/AntPathMatcher;
            0    7     1                     path1  Ljava/lang/String;
            0    7     2                     path2  Ljava/lang/String;
            1    7     3    path1EndsWithSeparator  Z
            2    7     4  path2StartsWithSeparator  Z
    MethodParameters:
       Name  Flags
      path1  
      path2  

  public java.util.Comparator<java.lang.String> getPatternComparator(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/Comparator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher this
        start local 1 // java.lang.String path
         0: .line 616
            new org.springframework.util.AntPathMatcher$AntPatternComparator
            dup
            aload 1 /* path */
            invokespecial org.springframework.util.AntPathMatcher$AntPatternComparator.<init>:(Ljava/lang/String;)V
            areturn
        end local 1 // java.lang.String path
        end local 0 // org.springframework.util.AntPathMatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/springframework/util/AntPathMatcher;
            0    1     1  path  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/Comparator<Ljava/lang/String;>;
    MethodParameters:
      Name  Flags
      path  
}
SourceFile: "AntPathMatcher.java"
NestMembers:
  org.springframework.util.AntPathMatcher$AntPathStringMatcher  org.springframework.util.AntPathMatcher$AntPatternComparator  org.springframework.util.AntPathMatcher$AntPatternComparator$PatternInfo  org.springframework.util.AntPathMatcher$PathSeparatorPatternCache
InnerClasses:
  protected AntPathStringMatcher = org.springframework.util.AntPathMatcher$AntPathStringMatcher of org.springframework.util.AntPathMatcher
  protected AntPatternComparator = org.springframework.util.AntPathMatcher$AntPatternComparator of org.springframework.util.AntPathMatcher
  private PathSeparatorPatternCache = org.springframework.util.AntPathMatcher$PathSeparatorPatternCache of org.springframework.util.AntPathMatcher