final class com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter implements com.sun.jndi.toolkit.dir.SearchFilter$StringFilter
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter
  super_class: java.lang.Object
{
  private java.lang.String attrID;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

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

  private int matchType;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  final com.sun.jndi.toolkit.dir.SearchFilter this$0;
    descriptor: Lcom/sun/jndi/toolkit/dir/SearchFilter;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.sun.jndi.toolkit.dir.SearchFilter);
    descriptor: (Lcom/sun/jndi/toolkit/dir/SearchFilter;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
         0: .line 261
            aload 0 /* this */
            aload 1
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jndi/toolkit/dir/SearchFilter$AtomicFilter;
    MethodParameters:
        Name  Flags
      this$0  final

  public void parse();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
         0: .line 268
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.skipWhiteSpace:()V
         1: .line 272
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            bipush 41
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relIndexOf:(I)I
            istore 1 /* endPos */
        start local 1 // int endPos
         2: .line 275
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            bipush 61
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relIndexOf:(I)I
            istore 2 /* i */
        start local 2 // int i
         3: .line 277
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iload 2 /* i */
            iconst_1
            isub
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relCharAt:(I)C
            istore 3 /* qualifier */
        start local 3 // int qualifier
         4: .line 278
            iload 3 /* qualifier */
            lookupswitch { // 4
                   58: 17
                   60: 13
                   62: 9
                  126: 5
              default: 18
          }
         5: .line 281
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.matchType:I
         6: .line 282
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iconst_0
            iload 2 /* i */
            iconst_1
            isub
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.attrID:Ljava/lang/String;
         7: .line 283
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iload 2 /* i */
            iconst_1
            iadd
            iload 1 /* endPos */
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
         8: .line 284
            goto 21
         9: .line 288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_3
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.matchType:I
        10: .line 289
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iconst_0
            iload 2 /* i */
            iconst_1
            isub
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.attrID:Ljava/lang/String;
        11: .line 290
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iload 2 /* i */
            iconst_1
            iadd
            iload 1 /* endPos */
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
        12: .line 291
            goto 21
        13: .line 295
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_4
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.matchType:I
        14: .line 296
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iconst_0
            iload 2 /* i */
            iconst_1
            isub
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.attrID:Ljava/lang/String;
        15: .line 297
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iload 2 /* i */
            iconst_1
            iadd
            iload 1 /* endPos */
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
        16: .line 298
            goto 21
        17: .line 302
      StackMap locals:
      StackMap stack:
            new javax.naming.OperationNotSupportedException
            dup
            ldc "Extensible match not supported"
            invokespecial javax.naming.OperationNotSupportedException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 306
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.matchType:I
        19: .line 307
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iconst_0
            iload 2 /* i */
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.attrID:Ljava/lang/String;
        20: .line 308
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iload 2 /* i */
            iconst_1
            iadd
            iload 1 /* endPos */
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.relSubstring:(II)Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
        21: .line 312
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.attrID:Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.attrID:Ljava/lang/String;
        22: .line 313
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            putfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
        23: .line 316
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            iload 1 /* endPos */
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter.consumeChars:(I)V
        end local 3 // int qualifier
        end local 2 // int i
        end local 1 // int endPos
        24: .line 318
            goto 33
      StackMap locals: com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter
      StackMap stack: java.lang.Exception
        25: astore 1 /* e */
        start local 1 // java.lang.Exception e
        26: .line 322
            new javax.naming.directory.InvalidSearchFilterException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unable to parse character "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        27: .line 323
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            getfield com.sun.jndi.toolkit.dir.SearchFilter.pos:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " in \""
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        28: .line 324
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.this$0:Lcom/sun/jndi/toolkit/dir/SearchFilter;
            getfield com.sun.jndi.toolkit.dir.SearchFilter.filter:Ljava/lang/String;
            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;
        29: .line 322
            invokespecial javax.naming.directory.InvalidSearchFilterException.<init>:(Ljava/lang/String;)V
        30: .line 321
            astore 2 /* sfe */
        start local 2 // javax.naming.directory.InvalidSearchFilterException sfe
        31: .line 325
            aload 2 /* sfe */
            aload 1 /* e */
            invokevirtual javax.naming.directory.InvalidSearchFilterException.setRootCause:(Ljava/lang/Throwable;)V
        32: .line 326
            aload 2 /* sfe */
            athrow
        end local 2 // javax.naming.directory.InvalidSearchFilterException sfe
        end local 1 // java.lang.Exception e
        33: .line 331
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   34     0       this  Lcom/sun/jndi/toolkit/dir/SearchFilter$AtomicFilter;
            2   24     1     endPos  I
            3   24     2          i  I
            4   24     3  qualifier  I
           26   33     1          e  Ljava/lang/Exception;
           31   33     2        sfe  Ljavax/naming/directory/InvalidSearchFilterException;
      Exception table:
        from    to  target  type
           1    24      25  Class java.lang.Exception
    Exceptions:
      throws javax.naming.directory.InvalidSearchFilterException

  public boolean check(javax.naming.directory.Attributes);
    descriptor: (Ljavax/naming/directory/Attributes;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
        start local 1 // javax.naming.directory.Attributes targetAttrs
         0: .line 337
            aload 1 /* targetAttrs */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.attrID:Ljava/lang/String;
            invokeinterface javax.naming.directory.Attributes.get:(Ljava/lang/String;)Ljavax/naming/directory/Attribute;
            astore 3 /* attr */
        start local 3 // javax.naming.directory.Attribute attr
         1: .line 338
            aload 3 /* attr */
            ifnonnull 3
         2: .line 339
            iconst_0
            ireturn
         3: .line 341
      StackMap locals: com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter javax.naming.directory.Attributes top javax.naming.directory.Attribute
      StackMap stack:
            aload 3 /* attr */
            invokeinterface javax.naming.directory.Attribute.getAll:()Ljavax/naming/NamingEnumeration;
            astore 2 /* candidates */
        end local 3 // javax.naming.directory.Attribute attr
        start local 2 // java.util.Enumeration candidates
         4: .line 342
            goto 15
        end local 2 // java.util.Enumeration candidates
      StackMap locals: com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter javax.naming.directory.Attributes
      StackMap stack: javax.naming.NamingException
         5: pop
         6: .line 345
            iconst_0
            ireturn
        start local 2 // java.util.Enumeration candidates
         7: .line 349
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 2 /* candidates */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 3 /* val */
        start local 3 // java.lang.String val
         8: .line 351
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.matchType:I
            tableswitch { // 1 - 4
                    1: 9
                    2: 9
                    3: 11
                    4: 13
              default: 15
          }
         9: .line 354
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
            aload 3 /* val */
            invokevirtual com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.substringMatch:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 15
        10: .line 356
            iconst_1
            ireturn
        11: .line 361
      StackMap locals:
      StackMap stack:
            aload 3 /* val */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            iflt 15
        12: .line 362
            iconst_1
            ireturn
        13: .line 367
      StackMap locals:
      StackMap stack:
            aload 3 /* val */
            aload 0 /* this */
            getfield com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter.value:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            ifgt 15
        14: .line 368
            iconst_1
            ireturn
        end local 3 // java.lang.String val
        15: .line 348
      StackMap locals:
      StackMap stack:
            aload 2 /* candidates */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 7
        16: .line 376
            iconst_0
            ireturn
        end local 2 // java.util.Enumeration candidates
        end local 1 // javax.naming.directory.Attributes targetAttrs
        end local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Lcom/sun/jndi/toolkit/dir/SearchFilter$AtomicFilter;
            0   17     1  targetAttrs  Ljavax/naming/directory/Attributes;
            4    5     2   candidates  Ljava/util/Enumeration<*>;
            7   17     2   candidates  Ljava/util/Enumeration<*>;
            1    4     3         attr  Ljavax/naming/directory/Attribute;
            8   15     3          val  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     2       5  Class javax.naming.NamingException
           3     4       5  Class javax.naming.NamingException
    MethodParameters:
             Name  Flags
      targetAttrs  

  private boolean substringMatch(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
        start local 1 // java.lang.String proto
        start local 2 // java.lang.String value
         0: .line 382
            aload 1 /* proto */
            new java.lang.Character
            dup
            bipush 42
            invokespecial java.lang.Character.<init>:(C)V
            invokevirtual java.lang.Character.toString:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 384
            iconst_1
            ireturn
         2: .line 388
      StackMap locals:
      StackMap stack:
            aload 1 /* proto */
            bipush 42
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpne 4
         3: .line 389
            aload 1 /* proto */
            aload 2 /* value */
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ireturn
         4: .line 394
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* currentPos */
        start local 3 // int currentPos
         5: .line 395
            new java.util.StringTokenizer
            dup
            aload 1 /* proto */
            ldc "*"
            iconst_0
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;Z)V
            astore 4 /* subStrs */
        start local 4 // java.util.StringTokenizer subStrs
         6: .line 398
            aload 1 /* proto */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 42
            if_icmpeq 19
         7: .line 399
            aload 2 /* value */
            invokevirtual java.lang.String.toString:()Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
         8: .line 400
            aload 4 /* subStrs */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
         9: .line 399
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
        10: .line 400
            ifne 19
        11: .line 404
            iconst_0
            ireturn
        12: .line 408
      StackMap locals: int java.util.StringTokenizer
      StackMap stack:
            aload 4 /* subStrs */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            astore 5 /* currentStr */
        start local 5 // java.lang.String currentStr
        13: .line 411
            aload 2 /* value */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
        14: .line 412
            aload 5 /* currentStr */
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
            iload 3 /* currentPos */
        15: .line 411
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;I)I
            istore 3 /* currentPos */
        16: .line 414
            iload 3 /* currentPos */
            iconst_m1
            if_icmpne 18
        17: .line 415
            iconst_0
            ireturn
        18: .line 417
      StackMap locals: java.lang.String
      StackMap stack:
            iload 3 /* currentPos */
            aload 5 /* currentStr */
            invokevirtual java.lang.String.length:()I
            iadd
            istore 3 /* currentPos */
        end local 5 // java.lang.String currentStr
        19: .line 407
      StackMap locals:
      StackMap stack:
            aload 4 /* subStrs */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 12
        20: .line 421
            aload 1 /* proto */
            aload 1 /* proto */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            bipush 42
            if_icmpeq 23
        21: .line 422
            iload 3 /* currentPos */
            aload 2 /* value */
            invokevirtual java.lang.String.length:()I
            if_icmpeq 23
        22: .line 424
            iconst_0
            ireturn
        23: .line 427
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 4 // java.util.StringTokenizer subStrs
        end local 3 // int currentPos
        end local 2 // java.lang.String value
        end local 1 // java.lang.String proto
        end local 0 // com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Lcom/sun/jndi/toolkit/dir/SearchFilter$AtomicFilter;
            0   24     1       proto  Ljava/lang/String;
            0   24     2       value  Ljava/lang/String;
            5   24     3  currentPos  I
            6   24     4     subStrs  Ljava/util/StringTokenizer;
           13   19     5  currentStr  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      proto  
      value  
}
SourceFile: "SearchFilter.java"
NestHost: com.sun.jndi.toolkit.dir.SearchFilter
InnerClasses:
  final AtomicFilter = com.sun.jndi.toolkit.dir.SearchFilter$AtomicFilter of com.sun.jndi.toolkit.dir.SearchFilter
  abstract StringFilter = com.sun.jndi.toolkit.dir.SearchFilter$StringFilter of com.sun.jndi.toolkit.dir.SearchFilter