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 java.security.cert.PKIXBuilderParameters buildParams;
    descriptor: Ljava/security/cert/PKIXBuilderParameters;
    flags: (0x0010) ACC_FINAL

  final javax.security.auth.x500.X500Principal targetSubjectDN;
    descriptor: Ljavax/security/auth/x500/X500Principal;
    flags: (0x0010) ACC_FINAL

  final java.util.Date date;
    descriptor: Ljava/util/Date;
    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=3, locals=0, args_size=0
         0: .line 57
            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 70
            new sun.security.action.GetBooleanAction
            dup
            ldc "com.sun.security.enableAIAcaIssuers"
            invokespecial sun.security.action.GetBooleanAction.<init>:(Ljava/lang/String;)V
         2: .line 69
            invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            putstatic sun.security.provider.certpath.Builder.USE_AIA:Z
         3: .line 70
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.security.cert.PKIXBuilderParameters, javax.security.auth.x500.X500Principal);
    descriptor: (Ljava/security/cert/PKIXBuilderParameters;Ljavax/security/auth/x500/X500Principal;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.security.provider.certpath.Builder this
        start local 1 // java.security.cert.PKIXBuilderParameters buildParams
        start local 2 // javax.security.auth.x500.X500Principal targetSubjectDN
         0: .line 77
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 78
            aload 0 /* this */
            aload 1 /* buildParams */
            putfield sun.security.provider.certpath.Builder.buildParams:Ljava/security/cert/PKIXBuilderParameters;
         2: .line 79
            aload 0 /* this */
            aload 2 /* targetSubjectDN */
            putfield sun.security.provider.certpath.Builder.targetSubjectDN:Ljavax/security/auth/x500/X500Principal;
         3: .line 81
            aload 1 /* buildParams */
            invokevirtual java.security.cert.PKIXBuilderParameters.getDate:()Ljava/util/Date;
            astore 3 /* paramsDate */
        start local 3 // java.util.Date paramsDate
         4: .line 82
            aload 0 /* this */
            aload 3 /* paramsDate */
            ifnull 5
            aload 3 /* paramsDate */
            goto 6
      StackMap locals: sun.security.provider.certpath.Builder java.security.cert.PKIXBuilderParameters javax.security.auth.x500.X500Principal java.util.Date
      StackMap stack: sun.security.provider.certpath.Builder
         5: new java.util.Date
            dup
            invokespecial java.util.Date.<init>:()V
      StackMap locals: sun.security.provider.certpath.Builder java.security.cert.PKIXBuilderParameters javax.security.auth.x500.X500Principal java.util.Date
      StackMap stack: sun.security.provider.certpath.Builder java.util.Date
         6: putfield sun.security.provider.certpath.Builder.date:Ljava/util/Date;
         7: .line 83
            aload 0 /* this */
         8: .line 84
            aload 1 /* buildParams */
            invokevirtual java.security.cert.PKIXBuilderParameters.getTargetCertConstraints:()Ljava/security/cert/CertSelector;
            checkcast java.security.cert.X509CertSelector
         9: .line 83
            putfield sun.security.provider.certpath.Builder.targetCertConstraints:Ljava/security/cert/X509CertSelector;
        10: .line 85
            return
        end local 3 // java.util.Date paramsDate
        end local 2 // javax.security.auth.x500.X500Principal targetSubjectDN
        end local 1 // java.security.cert.PKIXBuilderParameters buildParams
        end local 0 // sun.security.provider.certpath.Builder this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   11     0             this  Lsun/security/provider/certpath/Builder;
            0   11     1      buildParams  Ljava/security/cert/PKIXBuilderParameters;
            0   11     2  targetSubjectDN  Ljavax/security/auth/x500/X500Principal;
            4   11     3       paramsDate  Ljava/util/Date;
    MethodParameters:
                 Name  Flags
      buildParams      
      targetSubjectDN  

  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 151
            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 153
      StackMap locals:
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 3
         2: .line 154
            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 156
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
         4: .line 158
      StackMap locals:
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 6
         5: .line 159
            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 162
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
         7: .line 164
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         8: .line 166
      StackMap locals:
      StackMap stack:
            goto 11
         9: .line 168
      StackMap locals:
      StackMap stack:
            goto 11
        10: .line 170
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        11: .line 174
      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 196
            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 197
            iload 3 /* baseRtest */
            tableswitch { // -1 - 3
                   -1: 2
                    0: 6
                    1: 8
                    2: 7
                    3: 5
              default: 9
          }
         2: .line 199
      StackMap locals: int
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 4
         3: .line 200
            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 202
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
         5: .line 205
      StackMap locals:
      StackMap stack:
            goto 10
         6: .line 208
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         7: .line 211
      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 214
      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 216
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        10: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* base */
            invokeinterface sun.security.x509.GeneralNameInterface.getType:()I
            iconst_4
            if_icmpeq 14
        11: .line 221
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 13
        12: .line 222
            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 225
      StackMap locals:
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        14: .line 227
      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 228
            aload 1 /* test */
            checkcast sun.security.x509.X500Name
            astore 5 /* testName */
        start local 5 // sun.security.x509.X500Name testName
        16: .line 229
            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 230
            aload 6 /* commonName */
            ifnonnull 21
        18: .line 231
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 20
        19: .line 232
            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 235
      StackMap locals: sun.security.x509.X500Name sun.security.x509.X500Name sun.security.x509.X500Name
      StackMap stack:
            iload 2 /* incomparable */
            ireturn
        21: .line 237
      StackMap locals:
      StackMap stack:
            aload 6 /* commonName */
            invokevirtual sun.security.x509.X500Name.subtreeDepth:()I
            istore 7 /* commonDistance */
        start local 7 // int commonDistance
        22: .line 238
            aload 4 /* baseName */
            invokevirtual sun.security.x509.X500Name.subtreeDepth:()I
            istore 8 /* baseDistance */
        start local 8 // int baseDistance
        23: .line 239
            aload 5 /* testName */
            invokevirtual sun.security.x509.X500Name.subtreeDepth:()I
            istore 9 /* testDistance */
        start local 9 // int testDistance
        24: .line 240
            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 289
            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 290
            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 296
      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 297
            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 298
            new java.io.IOException
            dup
            ldc "Invalid certificate"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            aload 4 /* e */
            invokevirtual java.io.IOException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            checkcast java.io.IOException
            athrow
        end local 4 // java.security.cert.CertificateException e
        start local 3 // sun.security.x509.X509CertImpl certImpl
         6: .line 301
      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 302
            aload 4 /* subject */
            aload 2 /* target */
            invokevirtual sun.security.x509.X500Name.equals:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 304
            iconst_0
            ireturn
         9: .line 308
      StackMap locals: sun.security.x509.X500Name
      StackMap stack:
            aload 3 /* certImpl */
            invokevirtual sun.security.x509.X509CertImpl.getSubjectAlternativeNameExtension:()Lsun/security/x509/SubjectAlternativeNameExtension;
        10: .line 307
            astore 5 /* altNameExt */
        start local 5 // sun.security.x509.SubjectAlternativeNameExtension altNameExt
        11: .line 309
            aload 5 /* altNameExt */
            ifnull 24
        12: .line 310
            aload 5 /* altNameExt */
        13: .line 311
            ldc "subject_name"
        14: .line 310
            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 313
            aload 6 /* altNames */
            ifnull 24
        16: .line 314
            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 315
      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 316
            aload 9 /* altName */
            aload 2 /* target */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 22
        21: .line 317
            iconst_0
            ireturn
        end local 9 // sun.security.x509.GeneralNameInterface altName
        22: .line 314
      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 327
      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 328
            aload 6 /* ncExt */
            ifnonnull 27
        26: .line 329
            iconst_m1
            ireturn
        27: .line 333
      StackMap locals: sun.security.x509.NameConstraintsExtension
      StackMap stack:
            aload 0 /* constraints */
            ifnull 30
        28: .line 334
            aload 0 /* constraints */
            aload 6 /* ncExt */
            invokevirtual sun.security.x509.NameConstraintsExtension.merge:(Lsun/security/x509/NameConstraintsExtension;)V
        29: .line 335
            goto 31
        30: .line 339
      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 342
      StackMap locals:
      StackMap stack:
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 35
        32: .line 343
            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 344
            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 343
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        35: .line 348
      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 347
            astore 7 /* permitted */
        start local 7 // sun.security.x509.GeneralSubtrees permitted
        37: .line 350
            aload 0 /* constraints */
            ldc "excluded_subtrees"
            invokevirtual sun.security.x509.NameConstraintsExtension.get:(Ljava/lang/String;)Lsun/security/x509/GeneralSubtrees;
        38: .line 349
            astore 8 /* excluded */
        start local 8 // sun.security.x509.GeneralSubtrees excluded
        39: .line 351
            aload 7 /* permitted */
            ifnull 41
        40: .line 352
            aload 7 /* permitted */
            aload 8 /* excluded */
            invokevirtual sun.security.x509.GeneralSubtrees.reduce:(Lsun/security/x509/GeneralSubtrees;)V
        41: .line 354
      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 355
            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 356
            aload 7 /* permitted */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        44: .line 355
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        45: .line 359
      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 360
            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 364
      StackMap locals:
      StackMap stack:
            aload 7 /* permitted */
            ifnonnull 49
        48: .line 366
            iconst_m1
            ireturn
        49: .line 368
      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 369
      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 370
            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 371
            iload 12 /* distance */
            iflt 56
        55: .line 372
            iload 12 /* distance */
            iconst_1
            iadd
            ireturn
        end local 12 // int distance
        end local 11 // sun.security.x509.GeneralNameInterface perName
        56: .line 368
      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 376
            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=2, locals=2, args_size=1
        start local 0 // sun.security.provider.certpath.Builder this
         0: .line 400
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.matchingPolicies:Ljava/util/Set;
            ifnull 9
         1: .line 401
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Ljava/security/cert/PKIXBuilderParameters;
            invokevirtual java.security.cert.PKIXBuilderParameters.getInitialPolicies:()Ljava/util/Set;
            astore 1 /* initialPolicies */
        start local 1 // java.util.Set initialPolicies
         2: .line 402
            aload 1 /* initialPolicies */
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 8
         3: .line 403
            aload 1 /* initialPolicies */
            ldc "2.5.29.32.0"
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 8
         4: .line 404
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Ljava/security/cert/PKIXBuilderParameters;
            invokevirtual java.security.cert.PKIXBuilderParameters.isPolicyMappingInhibited:()Z
            ifeq 8
         5: .line 406
            aload 1 /* initialPolicies */
            ldc "2.5.29.32.0"
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         6: .line 407
            aload 0 /* this */
            aload 1 /* initialPolicies */
            putfield sun.security.provider.certpath.Builder.matchingPolicies:Ljava/util/Set;
         7: .line 408
            goto 9
         8: .line 411
      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 414
      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 434
            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 435
            aload 5 /* targetCert */
            ifnull 10
         2: .line 437
            aload 1 /* selector */
            aload 5 /* targetCert */
            invokevirtual java.security.cert.X509CertSelector.match:(Ljava/security/cert/Certificate;)Z
            ifeq 9
         3: .line 438
            aload 5 /* targetCert */
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Ljava/security/cert/PKIXBuilderParameters;
            invokevirtual java.security.cert.PKIXBuilderParameters.getSigProvider:()Ljava/lang/String;
         4: .line 437
            invokestatic sun.security.x509.X509CertImpl.isSelfSigned:(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z
         5: .line 438
            ifne 9
         6: .line 439
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 8
         7: .line 440
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ldc "Builder.addMatchingCerts: adding target cert"
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
         8: .line 442
      StackMap locals: java.security.cert.X509Certificate
      StackMap stack:
            aload 3 /* resultCerts */
            aload 5 /* targetCert */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            ireturn
         9: .line 444
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        10: .line 446
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* add */
        start local 6 // boolean add
        11: .line 447
            aload 2 /* certStores */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 8
            goto 31
      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:
        12: 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
        13: .line 450
            aload 7 /* store */
            aload 1 /* selector */
            invokevirtual java.security.cert.CertStore.getCertificates:(Ljava/security/cert/CertSelector;)Ljava/util/Collection;
        14: .line 449
            astore 9 /* certs */
        start local 9 // java.util.Collection certs
        15: .line 451
            aload 9 /* certs */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 11
            goto 22
      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:
        16: 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
        17: .line 453
            aload 10 /* cert */
            checkcast java.security.cert.X509Certificate
            aload 0 /* this */
            getfield sun.security.provider.certpath.Builder.buildParams:Ljava/security/cert/PKIXBuilderParameters;
            invokevirtual java.security.cert.PKIXBuilderParameters.getSigProvider:()Ljava/lang/String;
        18: .line 452
            invokestatic sun.security.x509.X509CertImpl.isSelfSigned:(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z
        19: .line 453
            ifne 22
        20: .line 454
            aload 3 /* resultCerts */
            aload 10 /* cert */
            checkcast java.security.cert.X509Certificate
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            ifeq 22
        21: .line 455
            iconst_1
            istore 6 /* add */
        end local 10 // java.security.cert.Certificate cert
        22: .line 451
      StackMap locals:
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        23: .line 459
            iload 4 /* checkAll */
            ifne 31
            iload 6 /* add */
            ifeq 31
        24: .line 460
            iconst_1
            ireturn
        end local 9 // java.util.Collection certs
        25: .line 462
      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
        26: .line 465
            getstatic sun.security.provider.certpath.Builder.debug:Lsun/security/util/Debug;
            ifnull 31
        27: .line 466
            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
        28: .line 467
            aload 9 /* cse */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        29: .line 466
            invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
        30: .line 468
            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
        31: .line 447
      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 12
        32: .line 472
            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   33     0         this  Lsun/security/provider/certpath/Builder;
            0   33     1     selector  Ljava/security/cert/X509CertSelector;
            0   33     2   certStores  Ljava/util/Collection<Ljava/security/cert/CertStore;>;
            0   33     3  resultCerts  Ljava/util/Collection<Ljava/security/cert/X509Certificate;>;
            0   33     4     checkAll  Z
            1   33     5   targetCert  Ljava/security/cert/X509Certificate;
           11   33     6          add  Z
           13   31     7        store  Ljava/security/cert/CertStore;
           15   25     9        certs  Ljava/util/Collection<+Ljava/security/cert/Certificate;>;
           17   22    10         cert  Ljava/security/cert/Certificate;
           26   31     9          cse  Ljava/security/cert/CertStoreException;
      Exception table:
        from    to  target  type
          13    24      25  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     

  static boolean isLocalCertStore(java.security.cert.CertStore);
    descriptor: (Ljava/security/cert/CertStore;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.security.cert.CertStore certStore
         0: .line 482
            aload 0 /* certStore */
            invokevirtual java.security.cert.CertStore.getType:()Ljava/lang/String;
            ldc "Collection"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
         1: .line 483
            aload 0 /* certStore */
            invokevirtual java.security.cert.CertStore.getCertStoreParameters:()Ljava/security/cert/CertStoreParameters;
            instanceof java.security.cert.CollectionCertStoreParameters
         2: .line 484
            ifne 4
         3: .line 482
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_1
            ireturn
        end local 0 // java.security.cert.CertStore certStore
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  certStore  Ljava/security/cert/CertStore;
    MethodParameters:
           Name  Flags
      certStore  
}
SourceFile: "Builder.java"