public class org.springframework.util.AntPathMatcher$AntPathStringMatcher
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.springframework.util.AntPathMatcher$AntPathStringMatcher
  super_class: java.lang.Object
{
  private static final java.util.regex.Pattern GLOB_PATTERN;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String DEFAULT_VARIABLE_PATTERN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "((?s).*)"

  private final java.lang.String rawPattern;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean caseSensitive;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean exactMatch;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.regex.Pattern pattern;
    descriptor: Ljava/util/regex/Pattern;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    RuntimeVisibleAnnotations: 
      org.springframework.lang.Nullable()

  private final java.util.List<java.lang.String> variableNames;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/String;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 645
            ldc "\\?|\\*|\\{((?:\\{[^/]+?}|[^/{}]|\\\\[{}])+?)}"
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            putstatic org.springframework.util.AntPathMatcher$AntPathStringMatcher.GLOB_PATTERN:Ljava/util/regex/Pattern;
         1: .line 647
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
        start local 1 // java.lang.String pattern
         0: .line 661
            aload 0 /* this */
            aload 1 /* pattern */
            iconst_1
            invokespecial org.springframework.util.AntPathMatcher$AntPathStringMatcher.<init>:(Ljava/lang/String;Z)V
         1: .line 662
            return
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;
            0    2     1  pattern  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      pattern  

  public void <init>(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
        start local 1 // java.lang.String pattern
        start local 2 // boolean caseSensitive
         0: .line 664
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 658
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.variableNames:Ljava/util/List;
         2: .line 665
            aload 0 /* this */
            aload 1 /* pattern */
            putfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.rawPattern:Ljava/lang/String;
         3: .line 666
            aload 0 /* this */
            iload 2 /* caseSensitive */
            putfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.caseSensitive:Z
         4: .line 667
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 3 /* patternBuilder */
        start local 3 // java.lang.StringBuilder patternBuilder
         5: .line 668
            getstatic org.springframework.util.AntPathMatcher$AntPathStringMatcher.GLOB_PATTERN:Ljava/util/regex/Pattern;
            aload 1 /* pattern */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 4 /* matcher */
        start local 4 // java.util.regex.Matcher matcher
         6: .line 669
            iconst_0
            istore 5 /* end */
        start local 5 // int end
         7: .line 670
            goto 29
         8: .line 671
      StackMap locals: org.springframework.util.AntPathMatcher$AntPathStringMatcher java.lang.String int java.lang.StringBuilder java.util.regex.Matcher int
      StackMap stack:
            aload 3 /* patternBuilder */
            aload 0 /* this */
            aload 1 /* pattern */
            iload 5 /* end */
            aload 4 /* matcher */
            invokevirtual java.util.regex.Matcher.start:()I
            invokevirtual org.springframework.util.AntPathMatcher$AntPathStringMatcher.quote:(Ljava/lang/String;II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 672
            aload 4 /* matcher */
            invokevirtual java.util.regex.Matcher.group:()Ljava/lang/String;
            astore 6 /* match */
        start local 6 // java.lang.String match
        10: .line 673
            ldc "?"
            aload 6 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 674
            aload 3 /* patternBuilder */
            bipush 46
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        12: .line 675
            goto 28
        13: .line 676
      StackMap locals: java.lang.String
      StackMap stack:
            ldc "*"
            aload 6 /* match */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        14: .line 677
            aload 3 /* patternBuilder */
            ldc ".*"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        15: .line 678
            goto 28
        16: .line 679
      StackMap locals:
      StackMap stack:
            aload 6 /* match */
            ldc "{"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 28
            aload 6 /* match */
            ldc "}"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 28
        17: .line 680
            aload 6 /* match */
            bipush 58
            invokevirtual java.lang.String.indexOf:(I)I
            istore 7 /* colonIdx */
        start local 7 // int colonIdx
        18: .line 681
            iload 7 /* colonIdx */
            iconst_m1
            if_icmpne 22
        19: .line 682
            aload 3 /* patternBuilder */
            ldc "((?s).*)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        20: .line 683
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.variableNames:Ljava/util/List;
            aload 4 /* matcher */
            iconst_1
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        21: .line 684
            goto 28
        22: .line 686
      StackMap locals: int
      StackMap stack:
            aload 6 /* match */
            iload 7 /* colonIdx */
            iconst_1
            iadd
            aload 6 /* match */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 8 /* variablePattern */
        start local 8 // java.lang.String variablePattern
        23: .line 687
            aload 3 /* patternBuilder */
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        24: .line 688
            aload 3 /* patternBuilder */
            aload 8 /* variablePattern */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        25: .line 689
            aload 3 /* patternBuilder */
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        26: .line 690
            aload 6 /* match */
            iconst_1
            iload 7 /* colonIdx */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 9 /* variableName */
        start local 9 // java.lang.String variableName
        27: .line 691
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.variableNames:Ljava/util/List;
            aload 9 /* variableName */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.lang.String variableName
        end local 8 // java.lang.String variablePattern
        end local 7 // int colonIdx
        28: .line 694
      StackMap locals:
      StackMap stack:
            aload 4 /* matcher */
            invokevirtual java.util.regex.Matcher.end:()I
            istore 5 /* end */
        end local 6 // java.lang.String match
        29: .line 670
      StackMap locals:
      StackMap stack:
            aload 4 /* matcher */
            invokevirtual java.util.regex.Matcher.find:()Z
            ifne 8
        30: .line 697
            iload 5 /* end */
            ifne 34
        31: .line 698
            aload 0 /* this */
            iconst_1
            putfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.exactMatch:Z
        32: .line 699
            aload 0 /* this */
            aconst_null
            putfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.pattern:Ljava/util/regex/Pattern;
        33: .line 700
            goto 39
        34: .line 702
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.exactMatch:Z
        35: .line 703
            aload 3 /* patternBuilder */
            aload 0 /* this */
            aload 1 /* pattern */
            iload 5 /* end */
            aload 1 /* pattern */
            invokevirtual java.lang.String.length:()I
            invokevirtual org.springframework.util.AntPathMatcher$AntPathStringMatcher.quote:(Ljava/lang/String;II)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        36: .line 704
            aload 0 /* this */
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.caseSensitive:Z
            ifeq 37
            aload 3 /* patternBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;)Ljava/util/regex/Pattern;
            goto 38
        37: .line 705
      StackMap locals:
      StackMap stack: org.springframework.util.AntPathMatcher$AntPathStringMatcher
            aload 3 /* patternBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_2
            invokestatic java.util.regex.Pattern.compile:(Ljava/lang/String;I)Ljava/util/regex/Pattern;
        38: .line 704
      StackMap locals: org.springframework.util.AntPathMatcher$AntPathStringMatcher java.lang.String int java.lang.StringBuilder java.util.regex.Matcher int
      StackMap stack: org.springframework.util.AntPathMatcher$AntPathStringMatcher java.util.regex.Pattern
            putfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.pattern:Ljava/util/regex/Pattern;
        39: .line 707
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int end
        end local 4 // java.util.regex.Matcher matcher
        end local 3 // java.lang.StringBuilder patternBuilder
        end local 2 // boolean caseSensitive
        end local 1 // java.lang.String pattern
        end local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   40     0             this  Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;
            0   40     1          pattern  Ljava/lang/String;
            0   40     2    caseSensitive  Z
            5   40     3   patternBuilder  Ljava/lang/StringBuilder;
            6   40     4          matcher  Ljava/util/regex/Matcher;
            7   40     5              end  I
           10   29     6            match  Ljava/lang/String;
           18   28     7         colonIdx  I
           23   28     8  variablePattern  Ljava/lang/String;
           27   28     9     variableName  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      pattern        
      caseSensitive  

  private java.lang.String quote(java.lang.String, int, int);
    descriptor: (Ljava/lang/String;II)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
        start local 1 // java.lang.String s
        start local 2 // int start
        start local 3 // int end
         0: .line 710
            iload 2 /* start */
            iload 3 /* end */
            if_icmpne 2
         1: .line 711
            ldc ""
            areturn
         2: .line 713
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            iload 2 /* start */
            iload 3 /* end */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokestatic java.util.regex.Pattern.quote:(Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 3 // int end
        end local 2 // int start
        end local 1 // java.lang.String s
        end local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;
            0    3     1      s  Ljava/lang/String;
            0    3     2  start  I
            0    3     3    end  I
    MethodParameters:
       Name  Flags
      s      
      start  
      end    

  public boolean matchStrings(java.lang.String, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/lang/String;Ljava/util/Map;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
        start local 1 // java.lang.String str
        start local 2 // java.util.Map uriTemplateVariables
         0: .line 721
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.exactMatch:Z
            ifeq 4
         1: .line 722
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.caseSensitive:Z
            ifeq 2
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.rawPattern:Ljava/lang/String;
            aload 1 /* str */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            goto 3
      StackMap locals:
      StackMap stack:
         2: aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.rawPattern:Ljava/lang/String;
            aload 1 /* str */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
      StackMap locals:
      StackMap stack: int
         3: ireturn
         4: .line 724
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.pattern:Ljava/util/regex/Pattern;
            ifnull 22
         5: .line 725
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.pattern:Ljava/util/regex/Pattern;
            aload 1 /* str */
            invokevirtual java.util.regex.Pattern.matcher:(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
            astore 3 /* matcher */
        start local 3 // java.util.regex.Matcher matcher
         6: .line 726
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.matches:()Z
            ifeq 22
         7: .line 727
            aload 2 /* uriTemplateVariables */
            ifnull 21
         8: .line 728
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.variableNames:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            if_icmpeq 14
         9: .line 729
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "The number of capturing groups in the pattern segment "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 730
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.pattern:Ljava/util/regex/Pattern;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " does not match the number of URI template variables it defines, "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        11: .line 731
            ldc "which can occur if capturing groups are used in a URI template regex. "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 732
            ldc "Use non-capturing groups instead."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        13: .line 729
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        14: .line 734
      StackMap locals: java.util.regex.Matcher
      StackMap stack:
            iconst_1
            istore 4 /* i */
        start local 4 // int i
        15: goto 20
        16: .line 735
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.springframework.util.AntPathMatcher$AntPathStringMatcher.variableNames:Ljava/util/List;
            iload 4 /* i */
            iconst_1
            isub
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.String
            astore 5 /* name */
        start local 5 // java.lang.String name
        17: .line 736
            aload 3 /* matcher */
            iload 4 /* i */
            invokevirtual java.util.regex.Matcher.group:(I)Ljava/lang/String;
            astore 6 /* value */
        start local 6 // java.lang.String value
        18: .line 737
            aload 2 /* uriTemplateVariables */
            aload 5 /* name */
            aload 6 /* value */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // java.lang.String value
        end local 5 // java.lang.String name
        19: .line 734
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 4 /* i */
            aload 3 /* matcher */
            invokevirtual java.util.regex.Matcher.groupCount:()I
            if_icmple 16
        end local 4 // int i
        21: .line 740
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // java.util.regex.Matcher matcher
        22: .line 743
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // java.util.Map uriTemplateVariables
        end local 1 // java.lang.String str
        end local 0 // org.springframework.util.AntPathMatcher$AntPathStringMatcher this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   23     0                  this  Lorg/springframework/util/AntPathMatcher$AntPathStringMatcher;
            0   23     1                   str  Ljava/lang/String;
            0   23     2  uriTemplateVariables  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            6   22     3               matcher  Ljava/util/regex/Matcher;
           15   21     4                     i  I
           17   19     5                  name  Ljava/lang/String;
           18   19     6                 value  Ljava/lang/String;
    Signature: (Ljava/lang/String;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Z
    RuntimeVisibleParameterAnnotations: 
      0:
      1:
        org.springframework.lang.Nullable()
    MethodParameters:
                      Name  Flags
      str                   
      uriTemplateVariables  
}
SourceFile: "AntPathMatcher.java"
NestHost: org.springframework.util.AntPathMatcher
InnerClasses:
  protected AntPathStringMatcher = org.springframework.util.AntPathMatcher$AntPathStringMatcher of org.springframework.util.AntPathMatcher