public class com.sun.tools.extcheck.ExtCheck
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.tools.extcheck.ExtCheck
  super_class: java.lang.Object
{
  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

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

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

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

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

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

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

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

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

  static com.sun.tools.extcheck.ExtCheck create(java.io.File, boolean);
    descriptor: (Ljava/io/File;Z)Lcom/sun/tools/extcheck/ExtCheck;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.io.File targetFile
        start local 1 // boolean verbose
         0: .line 79
            new com.sun.tools.extcheck.ExtCheck
            dup
            aload 0 /* targetFile */
            iload 1 /* verbose */
            invokespecial com.sun.tools.extcheck.ExtCheck.<init>:(Ljava/io/File;Z)V
            areturn
        end local 1 // boolean verbose
        end local 0 // java.io.File targetFile
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  targetFile  Ljava/io/File;
            0    1     1     verbose  Z
    MethodParameters:
            Name  Flags
      targetFile  
      verbose     

  private void <init>(java.io.File, boolean);
    descriptor: (Ljava/io/File;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.sun.tools.extcheck.ExtCheck this
        start local 1 // java.io.File targetFile
        start local 2 // boolean verbose
         0: .line 82
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 83
            aload 0 /* this */
            iload 2 /* verbose */
            putfield com.sun.tools.extcheck.ExtCheck.verboseFlag:Z
         2: .line 84
            aload 0 /* this */
            aload 1 /* targetFile */
            invokevirtual com.sun.tools.extcheck.ExtCheck.investigateTarget:(Ljava/io/File;)V
         3: .line 85
            return
        end local 2 // boolean verbose
        end local 1 // java.io.File targetFile
        end local 0 // com.sun.tools.extcheck.ExtCheck this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/sun/tools/extcheck/ExtCheck;
            0    4     1  targetFile  Ljava/io/File;
            0    4     2     verbose  Z
    MethodParameters:
            Name  Flags
      targetFile  
      verbose     

  private void investigateTarget(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // com.sun.tools.extcheck.ExtCheck this
        start local 1 // java.io.File targetFile
         0: .line 89
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Target file:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* targetFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
         1: .line 90
            aconst_null
            astore 2 /* targetManifest */
        start local 2 // java.util.jar.Manifest targetManifest
         2: .line 92
            new java.io.File
            dup
            aload 1 /* targetFile */
            invokevirtual java.io.File.getCanonicalPath:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* canon */
        start local 3 // java.io.File canon
         3: .line 93
            aload 3 /* canon */
            invokestatic sun.net.www.ParseUtil.fileToEncodedURL:(Ljava/io/File;)Ljava/net/URL;
            astore 4 /* url */
        start local 4 // java.net.URL url
         4: .line 94
            aload 4 /* url */
            ifnull 13
         5: .line 95
            new com.sun.tools.extcheck.ExtCheck$JarLoader
            dup
            aload 4 /* url */
            invokespecial com.sun.tools.extcheck.ExtCheck$JarLoader.<init>:(Ljava/net/URL;)V
            astore 5 /* loader */
        start local 5 // com.sun.tools.extcheck.ExtCheck$JarLoader loader
         6: .line 96
            aload 5 /* loader */
            invokevirtual com.sun.tools.extcheck.ExtCheck$JarLoader.getJarFile:()Ljava/util/jar/JarFile;
            astore 6 /* jarFile */
        start local 6 // java.util.jar.JarFile jarFile
         7: .line 97
            aload 6 /* jarFile */
            invokevirtual java.util.jar.JarFile.getManifest:()Ljava/util/jar/Manifest;
            astore 2 /* targetManifest */
        end local 6 // java.util.jar.JarFile jarFile
        end local 5 // com.sun.tools.extcheck.ExtCheck$JarLoader loader
        end local 4 // java.net.URL url
        end local 3 // java.io.File canon
         8: .line 99
            goto 13
      StackMap locals: com.sun.tools.extcheck.ExtCheck java.io.File java.util.jar.Manifest
      StackMap stack: java.net.MalformedURLException
         9: pop
        10: .line 100
            ldc "Malformed URL "
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
            goto 13
        11: .line 101
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        12: .line 102
            ldc "IO Exception "
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
        13: .line 104
      StackMap locals:
      StackMap stack:
            aload 2 /* targetManifest */
            ifnonnull 15
        14: .line 105
            new java.lang.StringBuilder
            dup
            ldc "No manifest available in "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* targetFile */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
        15: .line 106
      StackMap locals:
      StackMap stack:
            aload 2 /* targetManifest */
            invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
            astore 3 /* attr */
        start local 3 // java.util.jar.Attributes attr
        16: .line 107
            aload 3 /* attr */
            ifnull 25
        17: .line 108
            aload 0 /* this */
            aload 3 /* attr */
            getstatic java.util.jar.Attributes$Name.SPECIFICATION_TITLE:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            putfield com.sun.tools.extcheck.ExtCheck.targetSpecTitle:Ljava/lang/String;
        18: .line 109
            aload 0 /* this */
            aload 3 /* attr */
            getstatic java.util.jar.Attributes$Name.SPECIFICATION_VERSION:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            putfield com.sun.tools.extcheck.ExtCheck.targetSpecVersion:Ljava/lang/String;
        19: .line 110
            aload 0 /* this */
            aload 3 /* attr */
            getstatic java.util.jar.Attributes$Name.SPECIFICATION_VENDOR:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            putfield com.sun.tools.extcheck.ExtCheck.targetSpecVendor:Ljava/lang/String;
        20: .line 111
            aload 0 /* this */
            aload 3 /* attr */
            getstatic java.util.jar.Attributes$Name.IMPLEMENTATION_TITLE:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            putfield com.sun.tools.extcheck.ExtCheck.targetImplTitle:Ljava/lang/String;
        21: .line 112
            aload 0 /* this */
            aload 3 /* attr */
            getstatic java.util.jar.Attributes$Name.IMPLEMENTATION_VERSION:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            putfield com.sun.tools.extcheck.ExtCheck.targetImplVersion:Ljava/lang/String;
        22: .line 113
            aload 0 /* this */
            aload 3 /* attr */
            getstatic java.util.jar.Attributes$Name.IMPLEMENTATION_VENDOR:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            putfield com.sun.tools.extcheck.ExtCheck.targetImplVendor:Ljava/lang/String;
        23: .line 114
            aload 0 /* this */
            aload 3 /* attr */
            getstatic java.util.jar.Attributes$Name.SEALED:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            putfield com.sun.tools.extcheck.ExtCheck.targetsealed:Ljava/lang/String;
        24: .line 115
            goto 26
        25: .line 116
      StackMap locals: java.util.jar.Attributes
      StackMap stack:
            ldc "No attributes available in the manifest"
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
        26: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecTitle:Ljava/lang/String;
            ifnonnull 28
        27: .line 119
            ldc "The target file does not have a specification title"
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
        28: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecVersion:Ljava/lang/String;
            ifnonnull 30
        29: .line 121
            ldc "The target file does not have a specification version"
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
        30: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Specification title:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecTitle:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        31: .line 123
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Specification version:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecVersion:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        32: .line 124
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecVendor:Ljava/lang/String;
            ifnull 34
        33: .line 125
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Specification vendor:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecVendor:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        34: .line 126
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetImplVersion:Ljava/lang/String;
            ifnull 36
        35: .line 127
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Implementation version:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetImplVersion:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        36: .line 128
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetImplVendor:Ljava/lang/String;
            ifnull 38
        37: .line 129
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Implementation vendor:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetImplVendor:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        38: .line 130
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc ""
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        39: .line 131
            return
        end local 3 // java.util.jar.Attributes attr
        end local 2 // java.util.jar.Manifest targetManifest
        end local 1 // java.io.File targetFile
        end local 0 // com.sun.tools.extcheck.ExtCheck this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   40     0            this  Lcom/sun/tools/extcheck/ExtCheck;
            0   40     1      targetFile  Ljava/io/File;
            2   40     2  targetManifest  Ljava/util/jar/Manifest;
            3    8     3           canon  Ljava/io/File;
            4    8     4             url  Ljava/net/URL;
            6    8     5          loader  Lcom/sun/tools/extcheck/ExtCheck$JarLoader;
            7    8     6         jarFile  Ljava/util/jar/JarFile;
           16   40     3            attr  Ljava/util/jar/Attributes;
      Exception table:
        from    to  target  type
           2     8       9  Class java.net.MalformedURLException
           2     8      11  Class java.io.IOException
    MethodParameters:
            Name  Flags
      targetFile  

  boolean checkInstalledAgainstTarget();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=5, locals=10, args_size=1
        start local 0 // com.sun.tools.extcheck.ExtCheck this
         0: .line 143
            ldc "java.ext.dirs"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* s */
        start local 1 // java.lang.String s
         1: .line 145
            aload 1 /* s */
            ifnull 12
         2: .line 147
            new java.util.StringTokenizer
            dup
            aload 1 /* s */
            getstatic java.io.File.pathSeparator:Ljava/lang/String;
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;)V
         3: .line 146
            astore 3 /* st */
        start local 3 // java.util.StringTokenizer st
         4: .line 148
            aload 3 /* st */
            invokevirtual java.util.StringTokenizer.countTokens:()I
            istore 4 /* count */
        start local 4 // int count
         5: .line 149
            iload 4 /* count */
            anewarray java.io.File
            astore 2 /* dirs */
        start local 2 // java.io.File[] dirs
         6: .line 150
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         7: goto 10
         8: .line 151
      StackMap locals: com.sun.tools.extcheck.ExtCheck java.lang.String java.io.File[] java.util.StringTokenizer int int
      StackMap stack:
            aload 2 /* dirs */
            iload 5 /* i */
            new java.io.File
            dup
            aload 3 /* st */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            aastore
         9: .line 150
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 5 /* i */
            iload 4 /* count */
            if_icmplt 8
        end local 5 // int i
        end local 4 // int count
        end local 3 // java.util.StringTokenizer st
        11: .line 153
            goto 13
        end local 2 // java.io.File[] dirs
        12: .line 154
      StackMap locals: com.sun.tools.extcheck.ExtCheck java.lang.String
      StackMap stack:
            iconst_0
            anewarray java.io.File
            astore 2 /* dirs */
        start local 2 // java.io.File[] dirs
        13: .line 157
      StackMap locals: java.io.File[]
      StackMap stack:
            iconst_1
            istore 3 /* result */
        start local 3 // boolean result
        14: .line 158
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        15: goto 35
        16: .line 159
      StackMap locals: int int
      StackMap stack:
            aload 2 /* dirs */
            iload 4 /* i */
            aaload
            invokevirtual java.io.File.list:()[Ljava/lang/String;
            astore 5 /* files */
        start local 5 // java.lang.String[] files
        17: .line 160
            aload 5 /* files */
            ifnull 34
        18: .line 161
            iconst_0
            istore 6 /* j */
        start local 6 // int j
        19: goto 33
        20: .line 163
      StackMap locals: java.lang.String[] int
      StackMap stack:
            new java.io.File
            dup
            aload 2 /* dirs */
            iload 4 /* i */
            aaload
            aload 5 /* files */
            iload 6 /* j */
            aaload
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 7 /* f */
        start local 7 // java.io.File f
        21: .line 164
            new java.io.File
            dup
            aload 7 /* f */
            invokevirtual java.io.File.getCanonicalPath:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 8 /* canon */
        start local 8 // java.io.File canon
        22: .line 165
            aload 8 /* canon */
            invokestatic sun.net.www.ParseUtil.fileToEncodedURL:(Ljava/io/File;)Ljava/net/URL;
            astore 9 /* url */
        start local 9 // java.net.URL url
        23: .line 166
            aload 9 /* url */
            ifnull 32
        24: .line 167
            iload 3 /* result */
            ifeq 25
            aload 0 /* this */
            iconst_1
            aload 9 /* url */
            invokevirtual com.sun.tools.extcheck.ExtCheck.checkURLRecursively:(ILjava/net/URL;)Z
            ifeq 25
            iconst_1
            goto 26
      StackMap locals: java.io.File java.io.File java.net.URL
      StackMap stack:
        25: iconst_0
      StackMap locals:
      StackMap stack: int
        26: istore 3 /* result */
        end local 9 // java.net.URL url
        end local 8 // java.io.File canon
        end local 7 // java.io.File f
        27: .line 169
            goto 32
      StackMap locals: com.sun.tools.extcheck.ExtCheck java.lang.String java.io.File[] int int java.lang.String[] int
      StackMap stack: java.net.MalformedURLException
        28: pop
        29: .line 170
            ldc "Malformed URL"
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
            goto 32
        30: .line 171
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        31: .line 172
            ldc "IO Exception"
            invokestatic com.sun.tools.extcheck.ExtCheck.error:(Ljava/lang/String;)V
        32: .line 161
      StackMap locals:
      StackMap stack:
            iinc 6 /* j */ 1
      StackMap locals:
      StackMap stack:
        33: iload 6 /* j */
            aload 5 /* files */
            arraylength
            if_icmplt 20
        end local 6 // int j
        end local 5 // java.lang.String[] files
        34: .line 158
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        35: iload 4 /* i */
            aload 2 /* dirs */
            arraylength
            if_icmplt 16
        end local 4 // int i
        36: .line 177
            iload 3 /* result */
            ifeq 39
        37: .line 178
            aload 0 /* this */
            ldc "No conflicting installed jar found."
            invokevirtual com.sun.tools.extcheck.ExtCheck.generalMessage:(Ljava/lang/String;)V
        38: .line 179
            goto 40
        39: .line 180
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            ldc "Conflicting installed jar found.  Use -verbose for more information."
            invokevirtual com.sun.tools.extcheck.ExtCheck.generalMessage:(Ljava/lang/String;)V
        40: .line 183
      StackMap locals:
      StackMap stack:
            iload 3 /* result */
            ireturn
        end local 3 // boolean result
        end local 2 // java.io.File[] dirs
        end local 1 // java.lang.String s
        end local 0 // com.sun.tools.extcheck.ExtCheck this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   41     0    this  Lcom/sun/tools/extcheck/ExtCheck;
            1   41     1       s  Ljava/lang/String;
            6   12     2    dirs  [Ljava/io/File;
           13   41     2    dirs  [Ljava/io/File;
            4   11     3      st  Ljava/util/StringTokenizer;
            5   11     4   count  I
            7   11     5       i  I
           14   41     3  result  Z
           15   36     4       i  I
           17   34     5   files  [Ljava/lang/String;
           19   34     6       j  I
           21   27     7       f  Ljava/io/File;
           22   27     8   canon  Ljava/io/File;
           23   27     9     url  Ljava/net/URL;
      Exception table:
        from    to  target  type
          20    27      28  Class java.net.MalformedURLException
          20    27      30  Class java.io.IOException

  private boolean checkURLRecursively(int, java.net.URL);
    descriptor: (ILjava/net/URL;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=12, args_size=3
        start local 0 // com.sun.tools.extcheck.ExtCheck this
        start local 1 // int indent
        start local 2 // java.net.URL url
         0: .line 197
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Comparing with "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* url */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
         1: .line 198
            new com.sun.tools.extcheck.ExtCheck$JarLoader
            dup
            aload 2 /* url */
            invokespecial com.sun.tools.extcheck.ExtCheck$JarLoader.<init>:(Ljava/net/URL;)V
            astore 3 /* jarloader */
        start local 3 // com.sun.tools.extcheck.ExtCheck$JarLoader jarloader
         2: .line 199
            aload 3 /* jarloader */
            invokevirtual com.sun.tools.extcheck.ExtCheck$JarLoader.getJarFile:()Ljava/util/jar/JarFile;
            astore 4 /* j */
        start local 4 // java.util.jar.JarFile j
         3: .line 200
            aload 4 /* j */
            invokevirtual java.util.jar.JarFile.getManifest:()Ljava/util/jar/Manifest;
            astore 5 /* man */
        start local 5 // java.util.jar.Manifest man
         4: .line 201
            aload 5 /* man */
            ifnull 39
         5: .line 202
            aload 5 /* man */
            invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
            astore 6 /* attr */
        start local 6 // java.util.jar.Attributes attr
         6: .line 203
            aload 6 /* attr */
            ifnull 39
         7: .line 204
            aload 6 /* attr */
            getstatic java.util.jar.Attributes$Name.SPECIFICATION_TITLE:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            astore 7 /* title */
        start local 7 // java.lang.String title
         8: .line 205
            aload 6 /* attr */
            getstatic java.util.jar.Attributes$Name.SPECIFICATION_VERSION:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            astore 8 /* version */
        start local 8 // java.lang.String version
         9: .line 206
            aload 6 /* attr */
            getstatic java.util.jar.Attributes$Name.SPECIFICATION_VENDOR:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            pop
        10: .line 207
            aload 6 /* attr */
            getstatic java.util.jar.Attributes$Name.IMPLEMENTATION_TITLE:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            astore 9 /* implTitle */
        start local 9 // java.lang.String implTitle
        11: .line 209
            aload 6 /* attr */
            getstatic java.util.jar.Attributes$Name.IMPLEMENTATION_VERSION:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
        12: .line 208
            astore 10 /* implVersion */
        start local 10 // java.lang.String implVersion
        13: .line 210
            aload 6 /* attr */
            getstatic java.util.jar.Attributes$Name.IMPLEMENTATION_VENDOR:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            astore 11 /* implVendor */
        start local 11 // java.lang.String implVendor
        14: .line 211
            aload 6 /* attr */
            getstatic java.util.jar.Attributes$Name.SEALED:Ljava/util/jar/Attributes$Name;
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
            pop
        15: .line 212
            aload 7 /* title */
            ifnull 39
        16: .line 213
            aload 7 /* title */
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecTitle:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 39
        17: .line 214
            aload 8 /* version */
            ifnull 39
        18: .line 215
            aload 8 /* version */
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecVersion:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 20
        19: .line 216
            aload 0 /* this */
            aload 8 /* version */
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.targetSpecVersion:Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.isNotOlderThan:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 39
        20: .line 217
      StackMap locals: com.sun.tools.extcheck.ExtCheck int java.net.URL com.sun.tools.extcheck.ExtCheck$JarLoader java.util.jar.JarFile java.util.jar.Manifest java.util.jar.Attributes java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* this */
            ldc ""
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        21: .line 218
            aload 0 /* this */
            ldc "CONFLICT DETECTED "
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        22: .line 219
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Conflicting file:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* url */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        23: .line 220
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Installed Version:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        24: .line 221
            aload 8 /* version */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        25: .line 220
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        26: .line 222
            aload 9 /* implTitle */
            ifnull 30
        27: .line 223
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Implementation Title:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        28: .line 224
            aload 9 /* implTitle */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        29: .line 223
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        30: .line 225
      StackMap locals:
      StackMap stack:
            aload 10 /* implVersion */
            ifnull 34
        31: .line 226
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Implementation Version:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        32: .line 227
            aload 10 /* implVersion */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        33: .line 226
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        34: .line 228
      StackMap locals:
      StackMap stack:
            aload 11 /* implVendor */
            ifnull 38
        35: .line 229
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            ldc "Implementation Vendor:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        36: .line 230
            aload 11 /* implVendor */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        37: .line 229
            invokevirtual com.sun.tools.extcheck.ExtCheck.verboseMessage:(Ljava/lang/String;)V
        38: .line 231
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 11 // java.lang.String implVendor
        end local 10 // java.lang.String implVersion
        end local 9 // java.lang.String implTitle
        end local 8 // java.lang.String version
        end local 7 // java.lang.String title
        end local 6 // java.util.jar.Attributes attr
        39: .line 238
      StackMap locals: com.sun.tools.extcheck.ExtCheck int java.net.URL com.sun.tools.extcheck.ExtCheck$JarLoader java.util.jar.JarFile java.util.jar.Manifest
      StackMap stack:
            iconst_1
            istore 6 /* result */
        start local 6 // boolean result
        40: .line 239
            aload 3 /* jarloader */
            invokevirtual com.sun.tools.extcheck.ExtCheck$JarLoader.getClassPath:()[Ljava/net/URL;
            astore 7 /* loaderList */
        start local 7 // java.net.URL[] loaderList
        41: .line 240
            aload 7 /* loaderList */
            ifnull 51
        42: .line 241
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        43: goto 50
        44: .line 242
      StackMap locals: int java.net.URL[] int
      StackMap stack:
            aload 2 /* url */
            ifnull 49
        45: .line 243
            aload 0 /* this */
            iload 1 /* indent */
            iconst_1
            iadd
            aload 7 /* loaderList */
            iload 8 /* i */
            aaload
            invokevirtual com.sun.tools.extcheck.ExtCheck.checkURLRecursively:(ILjava/net/URL;)Z
            istore 9 /* res */
        start local 9 // boolean res
        46: .line 244
            iload 9 /* res */
            ifeq 47
            iload 6 /* result */
            ifeq 47
            iconst_1
            goto 48
      StackMap locals: int
      StackMap stack:
        47: iconst_0
      StackMap locals:
      StackMap stack: int
        48: istore 6 /* result */
        end local 9 // boolean res
        49: .line 241
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        50: iload 8 /* i */
            aload 7 /* loaderList */
            arraylength
            if_icmplt 44
        end local 8 // int i
        51: .line 248
      StackMap locals:
      StackMap stack:
            iload 6 /* result */
            ireturn
        end local 7 // java.net.URL[] loaderList
        end local 6 // boolean result
        end local 5 // java.util.jar.Manifest man
        end local 4 // java.util.jar.JarFile j
        end local 3 // com.sun.tools.extcheck.ExtCheck$JarLoader jarloader
        end local 2 // java.net.URL url
        end local 1 // int indent
        end local 0 // com.sun.tools.extcheck.ExtCheck this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   52     0         this  Lcom/sun/tools/extcheck/ExtCheck;
            0   52     1       indent  I
            0   52     2          url  Ljava/net/URL;
            2   52     3    jarloader  Lcom/sun/tools/extcheck/ExtCheck$JarLoader;
            3   52     4            j  Ljava/util/jar/JarFile;
            4   52     5          man  Ljava/util/jar/Manifest;
            6   39     6         attr  Ljava/util/jar/Attributes;
            8   39     7        title  Ljava/lang/String;
            9   39     8      version  Ljava/lang/String;
           11   39     9    implTitle  Ljava/lang/String;
           13   39    10  implVersion  Ljava/lang/String;
           14   39    11   implVendor  Ljava/lang/String;
           40   52     6       result  Z
           41   52     7   loaderList  [Ljava/net/URL;
           43   51     8            i  I
           46   49     9          res  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      indent  
      url     

  private boolean isNotOlderThan(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // com.sun.tools.extcheck.ExtCheck this
        start local 1 // java.lang.String already
        start local 2 // java.lang.String target
         0: .line 259
            aload 1 /* already */
            ifnull 1
            aload 1 /* already */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmpge 2
         1: .line 260
      StackMap locals:
      StackMap stack:
            new java.lang.NumberFormatException
            dup
            ldc "Empty version string"
            invokespecial java.lang.NumberFormatException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 264
      StackMap locals:
      StackMap stack:
            new java.util.StringTokenizer
            dup
            aload 2 /* target */
            ldc "."
            iconst_1
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;Z)V
            astore 3 /* dtok */
        start local 3 // java.util.StringTokenizer dtok
         3: .line 265
            new java.util.StringTokenizer
            dup
            aload 1 /* already */
            ldc "."
            iconst_1
            invokespecial java.util.StringTokenizer.<init>:(Ljava/lang/String;Ljava/lang/String;Z)V
            astore 4 /* stok */
        start local 4 // java.util.StringTokenizer stok
         4: .line 266
            goto 21
         5: .line 269
      StackMap locals: java.util.StringTokenizer java.util.StringTokenizer
      StackMap stack:
            aload 3 /* dtok */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifeq 8
         6: .line 270
            aload 3 /* dtok */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 5 /* dver */
        start local 5 // int dver
         7: .line 271
            goto 9
        end local 5 // int dver
         8: .line 272
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* dver */
        start local 5 // int dver
         9: .line 274
      StackMap locals: int
      StackMap stack:
            aload 4 /* stok */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifeq 12
        10: .line 275
            aload 4 /* stok */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 6 /* sver */
        start local 6 // int sver
        11: .line 276
            goto 13
        end local 6 // int sver
        12: .line 277
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* sver */
        start local 6 // int sver
        13: .line 279
      StackMap locals: int
      StackMap stack:
            iload 6 /* sver */
            iload 5 /* dver */
            if_icmpge 15
        14: .line 280
            iconst_0
            ireturn
        15: .line 281
      StackMap locals:
      StackMap stack:
            iload 6 /* sver */
            iload 5 /* dver */
            if_icmple 17
        16: .line 282
            iconst_1
            ireturn
        17: .line 285
      StackMap locals:
      StackMap stack:
            aload 3 /* dtok */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifeq 19
        18: .line 286
            aload 3 /* dtok */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            pop
        19: .line 287
      StackMap locals:
      StackMap stack:
            aload 4 /* stok */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifeq 21
        20: .line 288
            aload 4 /* stok */
            invokevirtual java.util.StringTokenizer.nextToken:()Ljava/lang/String;
            pop
        end local 6 // int sver
        end local 5 // int dver
        21: .line 266
      StackMap locals:
      StackMap stack:
            aload 3 /* dtok */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 5
            aload 4 /* stok */
            invokevirtual java.util.StringTokenizer.hasMoreTokens:()Z
            ifne 5
        22: .line 292
            iconst_1
            ireturn
        end local 4 // java.util.StringTokenizer stok
        end local 3 // java.util.StringTokenizer dtok
        end local 2 // java.lang.String target
        end local 1 // java.lang.String already
        end local 0 // com.sun.tools.extcheck.ExtCheck this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0     this  Lcom/sun/tools/extcheck/ExtCheck;
            0   23     1  already  Ljava/lang/String;
            0   23     2   target  Ljava/lang/String;
            3   23     3     dtok  Ljava/util/StringTokenizer;
            4   23     4     stok  Ljava/util/StringTokenizer;
            7    8     5     dver  I
            9   21     5     dver  I
           11   12     6     sver  I
           13   21     6     sver  I
    Exceptions:
      throws java.lang.NumberFormatException
    MethodParameters:
         Name  Flags
      already  
      target   

  void verboseMessage(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.tools.extcheck.ExtCheck this
        start local 1 // java.lang.String message
         0: .line 300
            aload 0 /* this */
            getfield com.sun.tools.extcheck.ExtCheck.verboseFlag:Z
            ifeq 2
         1: .line 301
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 1 /* message */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         2: .line 303
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String message
        end local 0 // com.sun.tools.extcheck.ExtCheck this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/sun/tools/extcheck/ExtCheck;
            0    3     1  message  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      message  

  void generalMessage(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.sun.tools.extcheck.ExtCheck this
        start local 1 // java.lang.String message
         0: .line 306
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 1 /* message */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 307
            return
        end local 1 // java.lang.String message
        end local 0 // com.sun.tools.extcheck.ExtCheck this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/sun/tools/extcheck/ExtCheck;
            0    2     1  message  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      message  

  static void error(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String message
         0: .line 313
            new java.lang.RuntimeException
            dup
            aload 0 /* message */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.lang.String message
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  message  Ljava/lang/String;
    Exceptions:
      throws java.lang.RuntimeException
    MethodParameters:
         Name  Flags
      message  
}
SourceFile: "ExtCheck.java"
NestMembers:
  com.sun.tools.extcheck.ExtCheck$JarLoader
InnerClasses:
  private JarLoader = com.sun.tools.extcheck.ExtCheck$JarLoader of com.sun.tools.extcheck.ExtCheck
  public Name = java.util.jar.Attributes$Name of java.util.jar.Attributes