public abstract class sun.security.provider.certpath.Builder
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: sun.security.provider.certpath.Builder
  super_class: java.lang.Object
{
  private static final sun.security.util.Debug debug;
    descriptor: Lsun/security/util/Debug;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.util.Set<java.lang.String> matchingPolicies;
    descriptor: Ljava/util/Set;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  final sun.security.provider.certpath.PKIX$BuilderParams buildParams;
    descriptor: Lsun/security/provider/certpath/PKIX$BuilderParams;
    flags: (0x0010) ACC_FINAL

  final java.security.cert.X509CertSelector targetCertConstraints;
    descriptor: Ljava/security/cert/X509CertSelector;
    flags: (0x0010) ACC_FINAL

  static final boolean USE_AIA;
    descriptor: Z
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 56
            ldc "certpath"
            invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;)Lsun/security/util/Debug;
            putstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
         1: .line 67
            ldc "com.sun.security.enableAIAcaIssuers"
            invokestatic sun.security.action.GetBooleanAction.privilegedGetProperty:(Ljava/lang/String;)Z
         2: .line 66
            putstatic sun.security.provider.certpath.Builder.USE_AIA:Z
         3: .line 67
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(sun.security.provider.certpath.PKIX$BuilderParams);
    descriptor: (Lsun/security/provider/certpath/PKIX$BuilderParams;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.provider.certpath.Builder this
        start local 1 // sun.security.provider.certpath.PKIX$BuilderParams buildParams
         0: .line 74
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 75
            aload 0 /* this */
            aload 1 /* buildParams */
            putfield sun.security.provider.certpath.Builder.buildParams:Lsun/security/provider/certpath/PKIX$BuilderParams;
         2: .line 76
            aload 0 /* this */
         3: .line 77
            aload 1 /* buildParams */
            invokevirtual sun.security.provider.certpath.PKIX$BuilderParams.targetCertConstraints:()Ljava/security/cert/CertSelector;
            checkcast java.security.cert.X509CertSelector
         4: .line 76
            putfield sun.security.provider.certpath.Builder.targetCertConstraints:Ljava/security/cert/X509CertSelector;
         5: .line 78
            return
        end local 1 // sun.security.provider.certpath.PKIX$BuilderParams buildParams
        end local 0 // sun.security.provider.certpath.Builder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lsun/security/provider/certpath/Builder;
            0    6     1  buildParams  Lsun/security/provider/certpath/PKIX$BuilderParams;
    MethodParameters:
             Name  Flags
      buildParams  

  abstract java.util.Collection<java.security.cert.X509Certificate> getMatchingCerts(sun.security.provider.certpath.State, java.util.List<java.security.cert.CertStore>);
    descriptor: (Lsun/security/provider/certpath/State;Ljava/util/List;)Ljava/util/Collection;
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws java.security.cert.CertStoreException, java.security.cert.CertificateException, java.io.IOException
    Signature: (Lsun/security/provider/certpath/State;Ljava/util/List<Ljava/security/cert/CertStore;>;)Ljava/util/Collection<Ljava/security/cert/X509Certificate;>;
    MethodParameters:
              Name  Flags
      currentState  
      certStores    

  abstract void verifyCert(java.security.cert.X509Certificate, sun.security.provider.certpath.State, java.util.List<java.security.cert.X509Certificate>);
    descriptor: (Ljava/security/cert/X509Certificate;Lsun/security/provider/certpath/State;Ljava/util/List;)V
    flags: (0x0400) ACC_ABSTRACT
    Exceptions:
      throws java.security.GeneralSecurityException
    Signature: (Ljava/security/cert/X509Certificate;Lsun/security/provider/certpath/State;Ljava/util/List<Ljava/security/cert/X509Certificate;>;)V
    MethodParameters:
              Name  Flags
      cert          
      currentState  
      certPathList  

  abstract boolean isPathCompleted(java.security.cert.X509Certificate);
    descriptor: (Ljava/security/cert/X509Certificate;)Z
    flags: (0x0400) ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      cert  

  abstract void addCertToPath(java.security.cert.X509Certificate, java.util.LinkedList<java.security.cert.X509Certificate>);
    descriptor: (Ljava/security/cert/X509Certificate;Ljava/util/LinkedList;)V
    flags: (0x0400) ACC_ABSTRACT
    Signature: (Ljava/security/cert/X509Certificate;Ljava/util/LinkedList<Ljava/security/cert/X509Certificate;>;)V
    MethodParameters:
              Name  Flags
      cert          
      certPathList  

  abstract void removeFinalCertFromPath(java.util.LinkedList<java.security.cert.X509Certificate>);
    descriptor: (Ljava/util/LinkedList;)V
    flags: (0x0400) ACC_ABSTRACT
    Signature: (Ljava/util/LinkedList<Ljava/security/cert/X509Certificate;>;)V
    MethodParameters:
              Name  Flags
      certPathList  

  static int distance(sun.security.x509.GeneralNameInterface, sun.security.x509.GeneralNameInterface, int);
    descriptor: (Lsun/security/x509/GeneralNameInterface;Lsun/security/x509/GeneralNameInterface;I)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // sun.security.x509.GeneralNameInterface base
        start local 1 // sun.security.x509.GeneralNameInterface test
        start local 2 // int incomparable
         0: .line 146
            aload 0 /* base */
            aload 1 /* test */
            invokeinterface sun.security.x509.GeneralNameInterface.constrains:(Lsun/security/x509/GeneralNameInterface;)I
            tableswitch { // -1 - 3
                   -1: 1
                    0: 7
                    1: 9
                    2: 8
                    3: 4
              default: 10
          }
         1: .line 148
      StackMap locals:
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 3
         2: .line 149
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ldc "Builder.distance(): Names are different types"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
         3: .line 151
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
         4: .line 153
      StackMap locals:
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 6
         5: .line 154
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ldc "Builder.distance(): Names are same type but in different subtrees"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
         6: .line 157
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
         7: .line 159
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         8: .line 161
      StackMap locals:
      StackMap stack:
            goto 11
         9: .line 163
      StackMap locals:
      StackMap stack:
            goto 11
        10: .line 165
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        11: .line 169
      StackMap locals:
      StackMap stack:
            aload 1 /* test */
            invokeinterface sun.security.x509.GeneralNameInterface.subtreeDepth:()I
            aload 0 /* base */
            invokeinterface sun.security.x509.GeneralNameInterface.subtreeDepth:()I
            isub
            ireturn
        end local 2 // int incomparable
        end local 1 // sun.security.x509.GeneralNameInterface test
        end local 0 // sun.security.x509.GeneralNameInterface base
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   12     0          base  Lsun/security/x509/GeneralNameInterface;
            0   12     1          test  Lsun/security/x509/GeneralNameInterface;
            0   12     2  incomparable  I
    MethodParameters:
              Name  Flags
      base          
      test          
      incomparable  

  static int hops(sun.security.x509.GeneralNameInterface, sun.security.x509.GeneralNameInterface, int);
    descriptor: (Lsun/security/x509/GeneralNameInterface;Lsun/security/x509/GeneralNameInterface;I)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=10, args_size=3
        start local 0 // sun.security.x509.GeneralNameInterface base
        start local 1 // sun.security.x509.GeneralNameInterface test
        start local 2 // int incomparable
         0: .line 192
            aload 0 /* base */
            aload 1 /* test */
            invokeinterface sun.security.x509.GeneralNameInterface.constrains:(Lsun/security/x509/GeneralNameInterface;)I
            istore 3 /* baseRtest */
        start local 3 // int baseRtest
         1: .line 193
            iload 3 /* baseRtest */
            tableswitch { // -1 - 3
                   -1: 2
                    0: 6
                    1: 8
                    2: 7
                    3: 5
              default: 9
          }
         2: .line 195
      StackMap locals: int
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 4
         3: .line 196
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ldc "Builder.hops(): Names are different types"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
         4: .line 198
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
         5: .line 201
      StackMap locals:
      StackMap stack:
            goto 10
         6: .line 204
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         7: .line 207
      StackMap locals:
      StackMap stack:
            aload 1 /* test */
            invokeinterface sun.security.x509.GeneralNameInterface.subtreeDepth:()I
            aload 0 /* base */
            invokeinterface sun.security.x509.GeneralNameInterface.subtreeDepth:()I
            isub
            ireturn
         8: .line 210
      StackMap locals:
      StackMap stack:
            aload 1 /* test */
            invokeinterface sun.security.x509.GeneralNameInterface.subtreeDepth:()I
            aload 0 /* base */
            invokeinterface sun.security.x509.GeneralNameInterface.subtreeDepth:()I
            isub
            ireturn
         9: .line 212
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        10: .line 216
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            invokeinterface sun.security.x509.GeneralNameInterface.getType:()I
            iconst_4
            if_icmpeq 14
        11: .line 217
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 13
        12: .line 218
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ldc "Builder.hops(): hopDistance not implemented for this name type"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        13: .line 221
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        14: .line 223
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            checkcast sun.security.x509.X500Name
            astore 4 /* baseName */
        start local 4 // sun.security.x509.X500Name baseName
        15: .line 224
            aload 1 /* test */
            checkcast sun.security.x509.X500Name
            astore 5 /* testName */
        start local 5 // sun.security.x509.X500Name testName
        16: .line 225
            aload 4 /* baseName */
            aload 5 /* testName */
            invokevirtual sun.security.x509.X500Name.commonAncestor:(Lsun/security/x509/X500Name;)Lsun/security/x509/X500Name;
            astore 6 /* commonName */
        start local 6 // sun.security.x509.X500Name commonName
        17: .line 226
            aload 6 /* commonName */
            ifnonnull 21
        18: .line 227
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 20
        19: .line 228
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ldc "Builder.hops(): Names are in different namespaces"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        20: .line 231
      StackMap locals: sun.security.x509.X500Name sun.security.x509.X500Name sun.security.x509.X500Name
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        21: .line 233
      StackMap locals:
      StackMap stack:
            aload 6 /* commonName */
            invokevirtual sun.security.x509.X500Name.subtreeDepth:()I
            istore 7 /* commonDistance */
        start local 7 // int commonDistance
        22: .line 234
            aload 4 /* baseName */
            invokevirtual sun.security.x509.X500Name.subtreeDepth:()I
            istore 8 /* baseDistance */
        start local 8 // int baseDistance
        23: .line 235
            aload 5 /* testName */
            invokevirtual sun.security.x509.X500Name.subtreeDepth:()I
            istore 9 /* testDistance */
        start local 9 // int testDistance
        24: .line 236
            iload 8 /* baseDistance */
            iload 9 /* testDistance */
            iadd
            iconst_2
            iload 7 /* commonDistance */
            imul
            isub
            ireturn
        end local 9 // int testDistance
        end local 8 // int baseDistance
        end local 7 // int commonDistance
        end local 6 // sun.security.x509.X500Name commonName
        end local 5 // sun.security.x509.X500Name testName
        end local 4 // sun.security.x509.X500Name baseName
        end local 3 // int baseRtest
        end local 2 // int incomparable
        end local 1 // sun.security.x509.GeneralNameInterface test
        end local 0 // sun.security.x509.GeneralNameInterface base
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   25     0            base  Lsun/security/x509/GeneralNameInterface;
            0   25     1            test  Lsun/security/x509/GeneralNameInterface;
            0   25     2    incomparable  I
            1   25     3       baseRtest  I
           15   25     4        baseName  Lsun/security/x509/X500Name;
           16   25     5        testName  Lsun/security/x509/X500Name;
           17   25     6      commonName  Lsun/security/x509/X500Name;
           22   25     7  commonDistance  I
           23   25     8    baseDistance  I
           24   25     9    testDistance  I
    MethodParameters:
              Name  Flags
      base          
      test          
      incomparable  

  static int targetDistance(sun.security.x509.NameConstraintsExtension, java.security.cert.X509Certificate, sun.security.x509.GeneralNameInterface);
    descriptor: (Lsun/security/x509/NameConstraintsExtension;Ljava/security/cert/X509Certificate;Lsun/security/x509/GeneralNameInterface;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=13, args_size=3
        start local 0 // sun.security.x509.NameConstraintsExtension constraints
        start local 1 // java.security.cert.X509Certificate cert
        start local 2 // sun.security.x509.GeneralNameInterface target
         0: .line 285
            aload 0 /* constraints */
            ifnull 2
            aload 0 /* constraints */
            aload 1 /* cert */
            invokevirtual sun.security.x509.NameConstraintsExtension.verify:(Ljava/security/cert/X509Certificate;)Z
            ifne 2
         1: .line 286
            new java.io.IOException
            dup
            ldc "certificate does not satisfy existing name constraints"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 292
      StackMap locals:
      StackMap stack:
            aload 1 /* cert */
            invokestatic sun.security.x509.X509CertImpl.toImpl:(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl;
            astore 3 /* certImpl */
        start local 3 // sun.security.x509.X509CertImpl certImpl
         3: .line 293
            goto 6
        end local 3 // sun.security.x509.X509CertImpl certImpl
      StackMap locals:
      StackMap stack: java.security.cert.CertificateException
         4: astore 4 /* e */
        start local 4 // java.security.cert.CertificateException e
         5: .line 294
            new java.io.IOException
            dup
            ldc "Invalid certificate"
            aload 4 /* e */
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.security.cert.CertificateException e
        start local 3 // sun.security.x509.X509CertImpl certImpl
         6: .line 297
      StackMap locals: sun.security.x509.X509CertImpl
      StackMap stack:
            aload 3 /* certImpl */
            invokevirtual sun.security.x509.X509CertImpl.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
            invokestatic sun.security.x509.X500Name.asX500Name:(Ljavax/security/auth/x500/X500Principal;)Lsun/security/x509/X500Name;
            astore 4 /* subject */
        start local 4 // sun.security.x509.X500Name subject
         7: .line 298
            aload 4 /* subject */
            aload 2 /* target */
            invokevirtual sun.security.x509.X500Name.equals:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 300
            iconst_0
            ireturn
         9: .line 304
      StackMap locals: sun.security.x509.X500Name
      StackMap stack:
            aload 3 /* certImpl */
            invokevirtual sun.security.x509.X509CertImpl.getSubjectAlternativeNameExtension:()Lsun/security/x509/SubjectAlternativeNameExtension;
        10: .line 303
            astore 5 /* altNameExt */
        start local 5 // sun.security.x509.SubjectAlternativeNameExtension altNameExt
        11: .line 305
            aload 5 /* altNameExt */
            ifnull 24
        12: .line 306
            aload 5 /* altNameExt */
        13: .line 307
            ldc "subject_name"
        14: .line 306
            invokevirtual sun.security.x509.SubjectAlternativeNameExtension.get:(Ljava/lang/String;)Lsun/security/x509/GeneralNames;
            astore 6 /* altNames */
        start local 6 // sun.security.x509.GeneralNames altNames
        15: .line 309
            aload 6 /* altNames */
            ifnull 24
        16: .line 310
            iconst_0
            istore 7 /* j */
        start local 7 // int j
        17: aload 6 /* altNames */
            invokevirtual sun.security.x509.GeneralNames.size:()I
            istore 8 /* n */
        start local 8 // int n
        18: goto 23
        19: .line 311
      StackMap locals: sun.security.x509.NameConstraintsExtension java.security.cert.X509Certificate sun.security.x509.GeneralNameInterface sun.security.x509.X509CertImpl sun.security.x509.X500Name sun.security.x509.SubjectAlternativeNameExtension sun.security.x509.GeneralNames int int
      StackMap stack:
            aload 6 /* altNames */
            iload 7 /* j */
            invokevirtual sun.security.x509.GeneralNames.get:(I)Lsun/security/x509/GeneralName;
            invokevirtual sun.security.x509.GeneralName.getName:()Lsun/security/x509/GeneralNameInterface;
            astore 9 /* altName */
        start local 9 // sun.security.x509.GeneralNameInterface altName
        20: .line 312
            aload 9 /* altName */
            aload 2 /* target */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 22
        21: .line 313
            iconst_0
            ireturn
        end local 9 // sun.security.x509.GeneralNameInterface altName
        22: .line 310
      StackMap locals:
      StackMap stack:
            iinc 7 /* j */ 1
      StackMap locals:
      StackMap stack:
        23: iload 7 /* j */
            iload 8 /* n */
            if_icmplt 19
        end local 8 // int n
        end local 7 // int j
        end local 6 // sun.security.x509.GeneralNames altNames
        24: .line 323
      StackMap locals:
      StackMap stack:
            aload 3 /* certImpl */
            invokevirtual sun.security.x509.X509CertImpl.getNameConstraintsExtension:()Lsun/security/x509/NameConstraintsExtension;
            astore 6 /* ncExt */
        start local 6 // sun.security.x509.NameConstraintsExtension ncExt
        25: .line 324
            aload 6 /* ncExt */
            ifnonnull 27
        26: .line 325
            iconst_m1
            ireturn
        27: .line 329
      StackMap locals: sun.security.x509.NameConstraintsExtension
      StackMap stack:
            aload 0 /* constraints */
            ifnull 30
        28: .line 330
            aload 0 /* constraints */
            aload 6 /* ncExt */
            invokevirtual sun.security.x509.NameConstraintsExtension.merge:(Lsun/security/x509/NameConstraintsExtension;)V
        29: .line 331
            goto 31
        30: .line 335
      StackMap locals:
      StackMap stack:
            aload 6 /* ncExt */
            invokevirtual sun.security.x509.NameConstraintsExtension.clone:()Ljava/lang/Object;
            checkcast sun.security.x509.NameConstraintsExtension
            astore 0 /* constraints */
        31: .line 338
      StackMap locals:
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 35
        32: .line 339
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "Builder.targetDistance() merged constraints: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        33: .line 340
            aload 0 /* constraints */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        34: .line 339
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        35: .line 344
      StackMap locals:
      StackMap stack:
            aload 0 /* constraints */
            ldc "permitted_subtrees"
            invokevirtual sun.security.x509.NameConstraintsExtension.get:(Ljava/lang/String;)Lsun/security/x509/GeneralSubtrees;
        36: .line 343
            astore 7 /* permitted */
        start local 7 // sun.security.x509.GeneralSubtrees permitted
        37: .line 346
            aload 0 /* constraints */
            ldc "excluded_subtrees"
            invokevirtual sun.security.x509.NameConstraintsExtension.get:(Ljava/lang/String;)Lsun/security/x509/GeneralSubtrees;
        38: .line 345
            astore 8 /* excluded */
        start local 8 // sun.security.x509.GeneralSubtrees excluded
        39: .line 347
            aload 7 /* permitted */
            ifnull 41
        40: .line 348
            aload 7 /* permitted */
            aload 8 /* excluded */
            invokevirtual sun.security.x509.GeneralSubtrees.reduce:(Lsun/security/x509/GeneralSubtrees;)V
        41: .line 350
      StackMap locals: sun.security.x509.GeneralSubtrees sun.security.x509.GeneralSubtrees
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 45
        42: .line 351
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "Builder.targetDistance() reduced constraints: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        43: .line 352
            aload 7 /* permitted */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        44: .line 351
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        45: .line 355
      StackMap locals:
      StackMap stack:
            aload 0 /* constraints */
            aload 2 /* target */
            invokevirtual sun.security.x509.NameConstraintsExtension.verify:(Lsun/security/x509/GeneralNameInterface;)Z
            ifne 47
        46: .line 356
            new java.io.IOException
            dup
            ldc "New certificate not allowed to sign certificate for target"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        47: .line 360
      StackMap locals:
      StackMap stack:
            aload 7 /* permitted */
            ifnonnull 49
        48: .line 362
            iconst_m1
            ireturn
        49: .line 364
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 9 /* i */
        start local 9 // int i
        50: aload 7 /* permitted */
            invokevirtual sun.security.x509.GeneralSubtrees.size:()I
            istore 10 /* n */
        start local 10 // int n
        51: goto 57
        52: .line 365
      StackMap locals: int int
      StackMap stack:
            aload 7 /* permitted */
            iload 9 /* i */
            invokevirtual sun.security.x509.GeneralSubtrees.get:(I)Lsun/security/x509/GeneralSubtree;
            invokevirtual sun.security.x509.GeneralSubtree.getName:()Lsun/security/x509/GeneralName;
            invokevirtual sun.security.x509.GeneralName.getName:()Lsun/security/x509/GeneralNameInterface;
            astore 11 /* perName */
        start local 11 // sun.security.x509.GeneralNameInterface perName
        53: .line 366
            aload 11 /* perName */
            aload 2 /* target */
            iconst_m1
            invokestatic sun.security.provider.certpath.Builder.distance:(Lsun/security/x509/GeneralNameInterface;Lsun/security/x509/GeneralNameInterface;I)I
            istore 12 /* distance */
        start local 12 // int distance
        54: .line 367
            iload 12 /* distance */
            iflt 56
        55: .line 368
            iload 12 /* distance */
            iconst_1
            iadd
            ireturn
        end local 12 // int distance
        end local 11 // sun.security.x509.GeneralNameInterface perName
        56: .line 364
      StackMap locals:
      StackMap stack:
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        57: iload 9 /* i */
            iload 10 /* n */
            if_icmplt 52
        end local 10 // int n
        end local 9 // int i
        58: .line 372
            iconst_m1
            ireturn
        end local 8 // sun.security.x509.GeneralSubtrees excluded
        end local 7 // sun.security.x509.GeneralSubtrees permitted
        end local 6 // sun.security.x509.NameConstraintsExtension ncExt
        end local 5 // sun.security.x509.SubjectAlternativeNameExtension altNameExt
        end local 4 // sun.security.x509.X500Name subject
        end local 3 // sun.security.x509.X509CertImpl certImpl
        end local 2 // sun.security.x509.GeneralNameInterface target
        end local 1 // java.security.cert.X509Certificate cert
        end local 0 // sun.security.x509.NameConstraintsExtension constraints
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   59     0  constraints  Lsun/security/x509/NameConstraintsExtension;
            0   59     1         cert  Ljava/security/cert/X509Certificate;
            0   59     2       target  Lsun/security/x509/GeneralNameInterface;
            3    4     3     certImpl  Lsun/security/x509/X509CertImpl;
            6   59     3     certImpl  Lsun/security/x509/X509CertImpl;
            5    6     4            e  Ljava/security/cert/CertificateException;
            7   59     4      subject  Lsun/security/x509/X500Name;
           11   59     5   altNameExt  Lsun/security/x509/SubjectAlternativeNameExtension;
           15   24     6     altNames  Lsun/security/x509/GeneralNames;
           17   24     7            j  I
           18   24     8            n  I
           20   22     9      altName  Lsun/security/x509/GeneralNameInterface;
           25   59     6        ncExt  Lsun/security/x509/NameConstraintsExtension;
           37   59     7    permitted  Lsun/security/x509/GeneralSubtrees;
           39   59     8     excluded  Lsun/security/x509/GeneralSubtrees;
           50   58     9            i  I
           51   58    10            n  I
           53   56    11      perName  Lsun/security/x509/GeneralNameInterface;
           54   56    12     distance  I
      Exception table:
        from    to  target  type
           2     3       4  Class java.security.cert.CertificateException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      constraints  
      cert         
      target       

  java.util.Set<java.lang.String> getMatchingPolicies();
    descriptor: ()Ljava/util/Set;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // sun.security.provider.certpath.Builder this
         0: .line 396
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.matchingPolicies:Ljava/util/Set;
            ifnull 9
         1: .line 397
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Lsun/security/provider/certpath/PKIX$BuilderParams;
            invokevirtual sun.security.provider.certpath.PKIX$BuilderParams.initialPolicies:()Ljava/util/Set;
            astore 1 /* initialPolicies */
        start local 1 // java.util.Set initialPolicies
         2: .line 398
            aload 1 /* initialPolicies */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 8
         3: .line 399
            aload 1 /* initialPolicies */
            ldc "2.5.29.32.0"
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 8
         4: .line 400
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Lsun/security/provider/certpath/PKIX$BuilderParams;
            invokevirtual sun.security.provider.certpath.PKIX$BuilderParams.policyMappingInhibited:()Z
            ifeq 8
         5: .line 402
            aload 0 /* this */
            new java.util.HashSet
            dup
            aload 1 /* initialPolicies */
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
            putfield sun.security.provider.certpath.Builder.matchingPolicies:Ljava/util/Set;
         6: .line 403
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.matchingPolicies:Ljava/util/Set;
            ldc "2.5.29.32.0"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         7: .line 404
            goto 9
         8: .line 407
      StackMap locals: java.util.Set
      StackMap stack:
            aload 0 /* this */
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            putfield sun.security.provider.certpath.Builder.matchingPolicies:Ljava/util/Set;
        end local 1 // java.util.Set initialPolicies
         9: .line 410
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.matchingPolicies:Ljava/util/Set;
            areturn
        end local 0 // sun.security.provider.certpath.Builder this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0             this  Lsun/security/provider/certpath/Builder;
            2    9     1  initialPolicies  Ljava/util/Set<Ljava/lang/String;>;
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  boolean addMatchingCerts(java.security.cert.X509CertSelector, java.util.Collection<java.security.cert.CertStore>, java.util.Collection<java.security.cert.X509Certificate>, );
    descriptor: (Ljava/security/cert/X509CertSelector;Ljava/util/Collection;Ljava/util/Collection;Z)Z
    flags: (0x0000) 
    Code:
      stack=4, locals=12, args_size=5
        start local 0 // sun.security.provider.certpath.Builder this
        start local 1 // java.security.cert.X509CertSelector selector
        start local 2 // java.util.Collection certStores
        start local 3 // java.util.Collection resultCerts
        start local 4 // boolean checkAll
         0: .line 432
            aload 1 /* selector */
            invokevirtual java.security.cert.X509CertSelector.getCertificate:()Ljava/security/cert/X509Certificate;
            astore 5 /* targetCert */
        start local 5 // java.security.cert.X509Certificate targetCert
         1: .line 433
            aload 5 /* targetCert */
            ifnull 15
         2: .line 435
            aload 1 /* selector */
            aload 5 /* targetCert */
            invokevirtual java.security.cert.X509CertSelector.match:(Ljava/security/cert/Certificate;)Z
            ifeq 14
         3: .line 436
            aload 5 /* targetCert */
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Lsun/security/provider/certpath/PKIX$BuilderParams;
            invokevirtual sun.security.provider.certpath.PKIX$BuilderParams.sigProvider:()Ljava/lang/String;
         4: .line 435
            invokestatic sun.security.x509.X509CertImpl.isSelfSigned:(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z
         5: .line 436
            ifne 14
         6: .line 437
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 13
         7: .line 438
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "Builder.addMatchingCerts: adding target cert\n  SN: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 441
            aload 5 /* targetCert */
            invokevirtual java.security.cert.X509Certificate.getSerialNumber:()Ljava/math/BigInteger;
         9: .line 440
            invokestatic sun.security.util.Debug.toHexString:(Ljava/math/BigInteger;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        10: .line 442
            ldc "\n  Subject: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* targetCert */
            invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        11: .line 443
            ldc "\n  Issuer: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* targetCert */
            invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        12: .line 438
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        13: .line 445
      StackMap locals: java.security.cert.X509Certificate
      StackMap stack:
            aload 3 /* resultCerts */
            aload 5 /* targetCert */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            ireturn
        14: .line 447
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        15: .line 449
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* add */
        start local 6 // boolean add
        16: .line 450
            aload 2 /* certStores */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 8
            goto 36
      StackMap locals: sun.security.provider.certpath.Builder java.security.cert.X509CertSelector java.util.Collection java.util.Collection int java.security.cert.X509Certificate int top java.util.Iterator
      StackMap stack:
        17: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.cert.CertStore
            astore 7 /* store */
        start local 7 // java.security.cert.CertStore store
        18: .line 453
            aload 7 /* store */
            aload 1 /* selector */
            invokevirtual java.security.cert.CertStore.getCertificates:(Ljava/security/cert/CertSelector;)Ljava/util/Collection;
        19: .line 452
            astore 9 /* certs */
        start local 9 // java.util.Collection certs
        20: .line 454
            aload 9 /* certs */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 11
            goto 27
      StackMap locals: sun.security.provider.certpath.Builder java.security.cert.X509CertSelector java.util.Collection java.util.Collection int java.security.cert.X509Certificate int java.security.cert.CertStore java.util.Iterator java.util.Collection top java.util.Iterator
      StackMap stack:
        21: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.security.cert.Certificate
            astore 10 /* cert */
        start local 10 // java.security.cert.Certificate cert
        22: .line 456
            aload 10 /* cert */
            checkcast java.security.cert.X509Certificate
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Lsun/security/provider/certpath/PKIX$BuilderParams;
            invokevirtual sun.security.provider.certpath.PKIX$BuilderParams.sigProvider:()Ljava/lang/String;
        23: .line 455
            invokestatic sun.security.x509.X509CertImpl.isSelfSigned:(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z
        24: .line 456
            ifne 27
        25: .line 457
            aload 3 /* resultCerts */
            aload 10 /* cert */
            checkcast java.security.cert.X509Certificate
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            ifeq 27
        26: .line 458
            iconst_1
            istore 6 /* add */
        end local 10 // java.security.cert.Certificate cert
        27: .line 454
      StackMap locals:
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        28: .line 462
            iload 4 /* checkAll */
            ifne 36
            iload 6 /* add */
            ifeq 36
        29: .line 463
            iconst_1
            ireturn
        end local 9 // java.util.Collection certs
        30: .line 465
      StackMap locals: sun.security.provider.certpath.Builder java.security.cert.X509CertSelector java.util.Collection java.util.Collection int java.security.cert.X509Certificate int java.security.cert.CertStore java.util.Iterator
      StackMap stack: java.security.cert.CertStoreException
            astore 9 /* cse */
        start local 9 // java.security.cert.CertStoreException cse
        31: .line 468
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 36
        32: .line 469
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            new java.lang.StringBuilder
            dup
            ldc "Builder.addMatchingCerts, non-fatal exception retrieving certs: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        33: .line 470
            aload 9 /* cse */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        34: .line 469
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        35: .line 471
            aload 9 /* cse */
            invokevirtual java.security.cert.CertStoreException.printStackTrace:()V
        end local 9 // java.security.cert.CertStoreException cse
        end local 7 // java.security.cert.CertStore store
        36: .line 450
      StackMap locals: sun.security.provider.certpath.Builder java.security.cert.X509CertSelector java.util.Collection java.util.Collection int java.security.cert.X509Certificate int top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 17
        37: .line 475
            iload 6 /* add */
            ireturn
        end local 6 // boolean add
        end local 5 // java.security.cert.X509Certificate targetCert
        end local 4 // boolean checkAll
        end local 3 // java.util.Collection resultCerts
        end local 2 // java.util.Collection certStores
        end local 1 // java.security.cert.X509CertSelector selector
        end local 0 // sun.security.provider.certpath.Builder this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   38     0         this  Lsun/security/provider/certpath/Builder;
            0   38     1     selector  Ljava/security/cert/X509CertSelector;
            0   38     2   certStores  Ljava/util/Collection<Ljava/security/cert/CertStore;>;
            0   38     3  resultCerts  Ljava/util/Collection<Ljava/security/cert/X509Certificate;>;
            0   38     4     checkAll  Z
            1   38     5   targetCert  Ljava/security/cert/X509Certificate;
           16   38     6          add  Z
           18   36     7        store  Ljava/security/cert/CertStore;
           20   30     9        certs  Ljava/util/Collection<+Ljava/security/cert/Certificate;>;
           22   27    10         cert  Ljava/security/cert/Certificate;
           31   36     9          cse  Ljava/security/cert/CertStoreException;
      Exception table:
        from    to  target  type
          18    29      30  Class java.security.cert.CertStoreException
    Signature: (Ljava/security/cert/X509CertSelector;Ljava/util/Collection<Ljava/security/cert/CertStore;>;Ljava/util/Collection<Ljava/security/cert/X509Certificate;>;Z)Z
    MethodParameters:
             Name  Flags
      selector     
      certStores   
      resultCerts  
      checkAll     
}
SourceFile: "Builder.java"
InnerClasses:
  BuilderParams = sun.security.provider.certpath.PKIX$BuilderParams of sun.security.provider.certpath.PKIX