public class org.eclipse.jdt.internal.compiler.batch.ClasspathJmod extends org.eclipse.jdt.internal.compiler.batch.ClasspathJar
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod
  super_class: org.eclipse.jdt.internal.compiler.batch.ClasspathJar
{
  public static char[] CLASSES;
    descriptor: [C
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC

  public static char[] CLASSES_FOLDER;
    descriptor: [C
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 40
            ldc "classes"
            invokevirtual java.lang.String.toCharArray:()[C
            putstatic org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.CLASSES:[C
         1: .line 41
            ldc "classes/"
            invokevirtual java.lang.String.toCharArray:()[C
            putstatic org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.CLASSES_FOLDER:[C
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.io.File, boolean, org.eclipse.jdt.internal.compiler.env.AccessRuleSet, java.lang.String);
    descriptor: (Ljava/io/File;ZLorg/eclipse/jdt/internal/compiler/env/AccessRuleSet;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
        start local 1 // java.io.File file
        start local 2 // boolean closeZipFileAtEnd
        start local 3 // org.eclipse.jdt.internal.compiler.env.AccessRuleSet accessRuleSet
        start local 4 // java.lang.String destinationPath
         0: .line 45
            aload 0 /* this */
            aload 1 /* file */
            iload 2 /* closeZipFileAtEnd */
            aload 3 /* accessRuleSet */
            aload 4 /* destinationPath */
            invokespecial org.eclipse.jdt.internal.compiler.batch.ClasspathJar.<init>:(Ljava/io/File;ZLorg/eclipse/jdt/internal/compiler/env/AccessRuleSet;Ljava/lang/String;)V
         1: .line 46
            return
        end local 4 // java.lang.String destinationPath
        end local 3 // org.eclipse.jdt.internal.compiler.env.AccessRuleSet accessRuleSet
        end local 2 // boolean closeZipFileAtEnd
        end local 1 // java.io.File file
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
            0    2     1               file  Ljava/io/File;
            0    2     2  closeZipFileAtEnd  Z
            0    2     3      accessRuleSet  Lorg/eclipse/jdt/internal/compiler/env/AccessRuleSet;
            0    2     4    destinationPath  Ljava/lang/String;
    MethodParameters:
                   Name  Flags
      file               
      closeZipFileAtEnd  
      accessRuleSet      
      destinationPath    

  public java.util.List<org.eclipse.jdt.internal.compiler.batch.FileSystem$Classpath> fetchLinkedJars(org.eclipse.jdt.internal.compiler.batch.FileSystem$ClasspathSectionProblemReporter);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathSectionProblemReporter;)Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
        start local 1 // org.eclipse.jdt.internal.compiler.batch.FileSystem$ClasspathSectionProblemReporter problemReporter
         0: .line 51
            aconst_null
            areturn
        end local 1 // org.eclipse.jdt.internal.compiler.batch.FileSystem$ClasspathSectionProblemReporter problemReporter
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
            0    1     1  problemReporter  Lorg/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathSectionProblemReporter;
    Signature: (Lorg/eclipse/jdt/internal/compiler/batch/FileSystem$ClasspathSectionProblemReporter;)Ljava/util/List<Lorg/eclipse/jdt/internal/compiler/batch/FileSystem$Classpath;>;
    MethodParameters:
                 Name  Flags
      problemReporter  

  public org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer findClass(char[], java.lang.String, java.lang.String, java.lang.String, boolean);
    descriptor: ([CLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=6
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
        start local 1 // char[] typeName
        start local 2 // java.lang.String qualifiedPackageName
        start local 3 // java.lang.String moduleName
        start local 4 // java.lang.String qualifiedBinaryFileName
        start local 5 // boolean asBinaryOnly
         0: .line 55
            aload 0 /* this */
            aload 2 /* qualifiedPackageName */
            aload 3 /* moduleName */
            invokevirtual org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.isPackage:(Ljava/lang/String;Ljava/lang/String;)Z
            ifne 2
         1: .line 56
            aconst_null
            areturn
         2: .line 59
      StackMap locals:
      StackMap stack:
            new java.lang.String
            dup
            getstatic org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.CLASSES_FOLDER:[C
            aload 4 /* qualifiedBinaryFileName */
            invokevirtual java.lang.String.toCharArray:()[C
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.append:([C[C)[C
            invokespecial java.lang.String.<init>:([C)V
            astore 4 /* qualifiedBinaryFileName */
         3: .line 60
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.zipFile:Ljava/util/zip/ZipFile;
            aload 4 /* qualifiedBinaryFileName */
            invokestatic org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.read:(Ljava/util/zip/ZipFile;Ljava/lang/String;)Lorg/eclipse/jdt/internal/compiler/classfmt/ClassFileReader;
            astore 6 /* reader */
        start local 6 // org.eclipse.jdt.internal.compiler.env.IBinaryType reader
         4: .line 61
            aload 6 /* reader */
            ifnull 28
         5: .line 62
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.module:Lorg/eclipse/jdt/internal/compiler/env/IModule;
            ifnonnull 6
            aconst_null
            goto 7
      StackMap locals: org.eclipse.jdt.internal.compiler.env.IBinaryType
      StackMap stack:
         6: aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.module:Lorg/eclipse/jdt/internal/compiler/env/IModule;
            invokeinterface org.eclipse.jdt.internal.compiler.env.IModule.name:()[C
      StackMap locals:
      StackMap stack: char[]
         7: astore 7 /* modName */
        start local 7 // char[] modName
         8: .line 63
            aload 6 /* reader */
            instanceof org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader
            ifeq 13
         9: .line 64
            aload 6 /* reader */
            checkcast org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader
            astore 8 /* classReader */
        start local 8 // org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader classReader
        10: .line 65
            aload 8 /* classReader */
            getfield org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.moduleName:[C
            ifnonnull 12
        11: .line 66
            aload 8 /* classReader */
            aload 7 /* modName */
            putfield org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.moduleName:[C
            goto 13
        12: .line 68
      StackMap locals: char[] org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader
      StackMap stack:
            aload 8 /* classReader */
            getfield org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.moduleName:[C
            astore 7 /* modName */
        end local 8 // org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader classReader
        13: .line 71
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.annotationPaths:Ljava/util/List;
            ifnull 25
        14: .line 72
            aload 4 /* qualifiedBinaryFileName */
            iconst_0
            aload 4 /* qualifiedBinaryFileName */
            invokevirtual java.lang.String.length:()I
            ldc "CLASS"
            invokevirtual java.lang.String.length:()I
            isub
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 8 /* qualifiedClassName */
        start local 8 // java.lang.String qualifiedClassName
        15: .line 73
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.annotationPaths:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 23
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod char[] java.lang.String java.lang.String java.lang.String int org.eclipse.jdt.internal.compiler.env.IBinaryType char[] java.lang.String top java.util.Iterator
      StackMap stack:
        16: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 9 /* annotationPath */
        start local 9 // java.lang.String annotationPath
        17: .line 75
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.annotationZipFile:Ljava/util/zip/ZipFile;
            ifnonnull 19
        18: .line 76
            aload 0 /* this */
            aload 9 /* annotationPath */
            aconst_null
            invokestatic org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator.getAnnotationZipFile:(Ljava/lang/String;Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationDecorator$ZipFileProducer;)Ljava/util/zip/ZipFile;
            putfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.annotationZipFile:Ljava/util/zip/ZipFile;
        19: .line 78
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod char[] java.lang.String java.lang.String java.lang.String int org.eclipse.jdt.internal.compiler.env.IBinaryType char[] java.lang.String java.lang.String java.util.Iterator
      StackMap stack:
            aload 6 /* reader */
            aload 9 /* annotationPath */
            aload 8 /* qualifiedClassName */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.annotationZipFile:Ljava/util/zip/ZipFile;
            invokestatic org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator.create:(Lorg/eclipse/jdt/internal/compiler/env/IBinaryType;Ljava/lang/String;Ljava/lang/String;Ljava/util/zip/ZipFile;)Lorg/eclipse/jdt/internal/compiler/env/IBinaryType;
            astore 6 /* reader */
        20: .line 80
            aload 6 /* reader */
            invokeinterface org.eclipse.jdt.internal.compiler.env.IBinaryType.getExternalAnnotationStatus:()Lorg/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding$ExternalAnnotationStatus;
            getstatic org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding$ExternalAnnotationStatus.TYPE_IS_ANNOTATED:Lorg/eclipse/jdt/internal/compiler/lookup/BinaryTypeBinding$ExternalAnnotationStatus;
            if_acmpne 23
        21: .line 81
            goto 25
        22: .line 83
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        end local 9 // java.lang.String annotationPath
        23: .line 73
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod char[] java.lang.String java.lang.String java.lang.String int org.eclipse.jdt.internal.compiler.env.IBinaryType char[] java.lang.String top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        24: .line 88
            new org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator
            dup
            aload 6 /* reader */
            aconst_null
            invokespecial org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator.<init>:(Lorg/eclipse/jdt/internal/compiler/env/IBinaryType;Lorg/eclipse/jdt/internal/compiler/classfmt/ExternalAnnotationProvider;)V
            astore 6 /* reader */
        end local 8 // java.lang.String qualifiedClassName
        25: .line 90
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod char[] java.lang.String java.lang.String java.lang.String int org.eclipse.jdt.internal.compiler.env.IBinaryType char[]
      StackMap stack:
            new org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer
            dup
            aload 6 /* reader */
            aload 0 /* this */
            aload 4 /* qualifiedBinaryFileName */
            invokevirtual org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.fetchAccessRestriction:(Ljava/lang/String;)Lorg/eclipse/jdt/internal/compiler/env/AccessRestriction;
            aload 7 /* modName */
            invokespecial org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.<init>:(Lorg/eclipse/jdt/internal/compiler/env/IBinaryType;Lorg/eclipse/jdt/internal/compiler/env/AccessRestriction;[C)V
        26: areturn
        end local 7 // char[] modName
        end local 6 // org.eclipse.jdt.internal.compiler.env.IBinaryType reader
        27: .line 92
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod char[] java.lang.String java.lang.String java.lang.String int
      StackMap stack: java.lang.Exception
            pop
        28: .line 95
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 5 // boolean asBinaryOnly
        end local 4 // java.lang.String qualifiedBinaryFileName
        end local 3 // java.lang.String moduleName
        end local 2 // java.lang.String qualifiedPackageName
        end local 1 // char[] typeName
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   29     0                     this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
            0   29     1                 typeName  [C
            0   29     2     qualifiedPackageName  Ljava/lang/String;
            0   29     3               moduleName  Ljava/lang/String;
            0   29     4  qualifiedBinaryFileName  Ljava/lang/String;
            0   29     5             asBinaryOnly  Z
            4   27     6                   reader  Lorg/eclipse/jdt/internal/compiler/env/IBinaryType;
            8   27     7                  modName  [C
           10   13     8              classReader  Lorg/eclipse/jdt/internal/compiler/classfmt/ClassFileReader;
           15   25     8       qualifiedClassName  Ljava/lang/String;
           17   23     9           annotationPath  Ljava/lang/String;
      Exception table:
        from    to  target  type
          17    21      22  Class java.io.IOException
           2    26      27  Class org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
           2    26      27  Class java.io.IOException
    MethodParameters:
                         Name  Flags
      typeName                 
      qualifiedPackageName     
      moduleName               
      qualifiedBinaryFileName  
      asBinaryOnly             

  public boolean hasAnnotationFileFor(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
        start local 1 // java.lang.String qualifiedTypeName
         0: .line 99
            new java.lang.String
            dup
            getstatic org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.CLASSES_FOLDER:[C
            aload 1 /* qualifiedTypeName */
            invokevirtual java.lang.String.toCharArray:()[C
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.append:([C[C)[C
            invokespecial java.lang.String.<init>:([C)V
            astore 1 /* qualifiedTypeName */
         1: .line 100
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.zipFile:Ljava/util/zip/ZipFile;
            new java.lang.StringBuilder
            dup
            aload 1 /* qualifiedTypeName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".eea"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.zip.ZipFile.getEntry:(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
            ifnull 2
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // java.lang.String qualifiedTypeName
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0               this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
            0    3     1  qualifiedTypeName  Ljava/lang/String;
    MethodParameters:
                   Name  Flags
      qualifiedTypeName  

  public char[][][] findTypeNames(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)[[[C
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=12, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
        start local 1 // java.lang.String qualifiedPackageName
        start local 2 // java.lang.String moduleName
         0: .line 105
            aload 0 /* this */
            aload 1 /* qualifiedPackageName */
            aload 2 /* moduleName */
            invokevirtual org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.isPackage:(Ljava/lang/String;Ljava/lang/String;)Z
            ifne 2
         1: .line 106
            aconst_null
            areturn
         2: .line 107
      StackMap locals:
      StackMap stack:
            aload 1 /* qualifiedPackageName */
            invokevirtual java.lang.String.toCharArray:()[C
            astore 3 /* packageArray */
        start local 3 // char[] packageArray
         3: .line 108
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* answers */
        start local 4 // java.util.ArrayList answers
         4: .line 109
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.zipFile:Ljava/util/zip/ZipFile;
            invokevirtual java.util.zip.ZipFile.entries:()Ljava/util/Enumeration;
            astore 5 /* e */
        start local 5 // java.util.Enumeration e
         5: goto 21
         6: .line 110
      StackMap locals: char[] java.util.ArrayList java.util.Enumeration
      StackMap stack:
            aload 5 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.util.zip.ZipEntry
            invokevirtual java.util.zip.ZipEntry.getName:()Ljava/lang/String;
            astore 6 /* fileName */
        start local 6 // java.lang.String fileName
         7: .line 113
            getstatic org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.CLASSES_FOLDER:[C
            aload 6 /* fileName */
            invokevirtual java.lang.String.toCharArray:()[C
            iconst_0
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.indexOf:([C[CZ)I
            istore 7 /* first */
        start local 7 // int first
         8: .line 114
            aload 6 /* fileName */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 8 /* last */
        start local 8 // int last
         9: .line 115
            iload 8 /* last */
            ifle 21
        10: .line 117
            aload 6 /* fileName */
            iload 7 /* first */
            iconst_1
            iadd
            iload 8 /* last */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 9 /* packageName */
        start local 9 // java.lang.String packageName
        11: .line 118
            aload 1 /* qualifiedPackageName */
            aload 9 /* packageName */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
        12: .line 119
            goto 21
        13: .line 120
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod java.lang.String java.lang.String char[] java.util.ArrayList java.util.Enumeration java.lang.String int int java.lang.String
      StackMap stack:
            aload 6 /* fileName */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 10 /* indexOfDot */
        start local 10 // int indexOfDot
        14: .line 121
            iload 10 /* indexOfDot */
            iconst_m1
            if_icmpeq 21
        15: .line 122
            aload 6 /* fileName */
            iload 8 /* last */
            iconst_1
            iadd
            iload 10 /* indexOfDot */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 11 /* typeName */
        start local 11 // java.lang.String typeName
        16: .line 123
            aload 4 /* answers */
        17: .line 125
            bipush 47
            aload 3 /* packageArray */
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.splitOn:(C[C)[[C
        18: .line 126
            aload 11 /* typeName */
            invokevirtual java.lang.String.toCharArray:()[C
        19: .line 124
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.arrayConcat:([[C[C)[[C
        20: .line 123
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.lang.String typeName
        end local 10 // int indexOfDot
        end local 9 // java.lang.String packageName
        end local 8 // int last
        end local 7 // int first
        end local 6 // java.lang.String fileName
        21: .line 109
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod java.lang.String java.lang.String char[] java.util.ArrayList java.util.Enumeration
      StackMap stack:
            aload 5 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 6
        end local 5 // java.util.Enumeration e
        22: .line 130
            aload 4 /* answers */
            invokevirtual java.util.ArrayList.size:()I
            istore 5 /* size */
        start local 5 // int size
        23: .line 131
            iload 5 /* size */
            ifeq 27
        24: .line 132
            iload 5 /* size */
            anewarray char[][]
            astore 6 /* result */
        start local 6 // char[][][] result
        25: .line 133
            aload 4 /* answers */
            aload 6 /* result */
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            pop
        26: .line 134
            aload 6 /* result */
            areturn
        end local 6 // char[][][] result
        27: .line 136
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod java.lang.String java.lang.String char[] java.util.ArrayList int
      StackMap stack:
            aconst_null
            areturn
        end local 5 // int size
        end local 4 // java.util.ArrayList answers
        end local 3 // char[] packageArray
        end local 2 // java.lang.String moduleName
        end local 1 // java.lang.String qualifiedPackageName
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   28     0                  this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
            0   28     1  qualifiedPackageName  Ljava/lang/String;
            0   28     2            moduleName  Ljava/lang/String;
            3   28     3          packageArray  [C
            4   28     4               answers  Ljava/util/ArrayList;
            5   22     5                     e  Ljava/util/Enumeration;
            7   21     6              fileName  Ljava/lang/String;
            8   21     7                 first  I
            9   21     8                  last  I
           11   21     9           packageName  Ljava/lang/String;
           14   21    10            indexOfDot  I
           16   21    11              typeName  Ljava/lang/String;
           23   28     5                  size  I
           25   27     6                result  [[[C
    MethodParameters:
                      Name  Flags
      qualifiedPackageName  final
      moduleName            

  public synchronized char[][] getModulesDeclaringPackage(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)[[C
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=8, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
        start local 1 // java.lang.String qualifiedPackageName
        start local 2 // java.lang.String moduleName
         0: .line 140
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.packageCache:Ljava/util/Set;
            ifnull 2
         1: .line 141
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.packageCache:Ljava/util/Set;
            aload 1 /* qualifiedPackageName */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            invokevirtual org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.singletonModuleNameIf:(Z)[[C
            areturn
         2: .line 143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.util.HashSet
            dup
            bipush 41
            invokespecial java.util.HashSet.<init>:(I)V
            putfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.packageCache:Ljava/util/Set;
         3: .line 144
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.packageCache:Ljava/util/Set;
            getstatic org.eclipse.jdt.internal.compiler.util.Util.EMPTY_STRING:Ljava/lang/String;
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         4: .line 146
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.zipFile:Ljava/util/zip/ZipFile;
            invokevirtual java.util.zip.ZipFile.entries:()Ljava/util/Enumeration;
            astore 3 /* e */
        start local 3 // java.util.Enumeration e
         5: goto 13
         6: .line 147
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.util.zip.ZipEntry
            invokevirtual java.util.zip.ZipEntry.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.toCharArray:()[C
            astore 4 /* entryName */
        start local 4 // char[] entryName
         7: .line 148
            bipush 47
            aload 4 /* entryName */
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.indexOf:(C[C)I
            istore 5 /* index */
        start local 5 // int index
         8: .line 149
            iload 5 /* index */
            iconst_m1
            if_icmpeq 13
         9: .line 150
            aload 4 /* entryName */
            iconst_0
            iload 5 /* index */
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.subarray:([CII)[C
            astore 6 /* folder */
        start local 6 // char[] folder
        10: .line 151
            getstatic org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.CLASSES:[C
            aload 6 /* folder */
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.equals:([C[C)Z
            ifeq 13
        11: .line 152
            aload 4 /* entryName */
            iload 5 /* index */
            iconst_1
            iadd
            aload 4 /* entryName */
            arraylength
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.subarray:([CII)[C
            astore 7 /* fileName */
        start local 7 // char[] fileName
        12: .line 153
            aload 0 /* this */
            new java.lang.String
            dup
            aload 7 /* fileName */
            invokespecial java.lang.String.<init>:([C)V
            iconst_0
            invokevirtual org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.addToPackageCache:(Ljava/lang/String;Z)V
        end local 7 // char[] fileName
        end local 6 // char[] folder
        end local 5 // int index
        end local 4 // char[] entryName
        13: .line 146
      StackMap locals:
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 6
        end local 3 // java.util.Enumeration e
        14: .line 157
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.packageCache:Ljava/util/Set;
            aload 1 /* qualifiedPackageName */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            invokevirtual org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.singletonModuleNameIf:(Z)[[C
            areturn
        end local 2 // java.lang.String moduleName
        end local 1 // java.lang.String qualifiedPackageName
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   15     0                  this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
            0   15     1  qualifiedPackageName  Ljava/lang/String;
            0   15     2            moduleName  Ljava/lang/String;
            5   14     3                     e  Ljava/util/Enumeration<+Ljava/util/zip/ZipEntry;>;
            7   13     4             entryName  [C
            8   13     5                 index  I
           10   13     6                folder  [C
           12   13     7              fileName  [C
    MethodParameters:
                      Name  Flags
      qualifiedPackageName  
      moduleName            

  public boolean hasCompilationUnit(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=3
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
        start local 1 // java.lang.String qualifiedPackageName
        start local 2 // java.lang.String moduleName
         0: .line 161
            new java.lang.StringBuilder
            dup
            aload 1 /* qualifiedPackageName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 47
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* qualifiedPackageName */
         1: .line 162
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.zipFile:Ljava/util/zip/ZipFile;
            invokevirtual java.util.zip.ZipFile.entries:()Ljava/util/Enumeration;
            astore 3 /* e */
        start local 3 // java.util.Enumeration e
         2: goto 15
         3: .line 163
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.util.zip.ZipEntry
            invokevirtual java.util.zip.ZipEntry.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.toCharArray:()[C
            astore 4 /* entryName */
        start local 4 // char[] entryName
         4: .line 164
            bipush 47
            aload 4 /* entryName */
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.indexOf:(C[C)I
            istore 5 /* index */
        start local 5 // int index
         5: .line 165
            iload 5 /* index */
            iconst_m1
            if_icmpeq 15
         6: .line 166
            aload 4 /* entryName */
            iconst_0
            iload 5 /* index */
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.subarray:([CII)[C
            astore 6 /* folder */
        start local 6 // char[] folder
         7: .line 167
            getstatic org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.CLASSES:[C
            aload 6 /* folder */
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.equals:([C[C)Z
            ifeq 15
         8: .line 168
            new java.lang.String
            dup
            aload 4 /* entryName */
            iload 5 /* index */
            iconst_1
            iadd
            aload 4 /* entryName */
            arraylength
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.subarray:([CII)[C
            invokespecial java.lang.String.<init>:([C)V
            astore 7 /* fileName */
        start local 7 // java.lang.String fileName
         9: .line 169
            aload 7 /* fileName */
            aload 1 /* qualifiedPackageName */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 15
            aload 7 /* fileName */
            invokevirtual java.lang.String.length:()I
            aload 1 /* qualifiedPackageName */
            invokevirtual java.lang.String.length:()I
            if_icmple 15
        10: .line 170
            aload 7 /* fileName */
            aload 1 /* qualifiedPackageName */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 8 /* tail */
        start local 8 // java.lang.String tail
        11: .line 171
            aload 8 /* tail */
            bipush 47
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_m1
            if_icmpeq 13
        12: .line 172
            goto 15
        13: .line 173
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod java.lang.String java.lang.String java.util.Enumeration char[] int char[] java.lang.String java.lang.String
      StackMap stack:
            aload 8 /* tail */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc ".class"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 15
        14: .line 174
            iconst_1
            ireturn
        end local 8 // java.lang.String tail
        end local 7 // java.lang.String fileName
        end local 6 // char[] folder
        end local 5 // int index
        end local 4 // char[] entryName
        15: .line 162
      StackMap locals: org.eclipse.jdt.internal.compiler.batch.ClasspathJmod java.lang.String java.lang.String java.util.Enumeration
      StackMap stack:
            aload 3 /* e */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 3
        end local 3 // java.util.Enumeration e
        16: .line 179
            iconst_0
            ireturn
        end local 2 // java.lang.String moduleName
        end local 1 // java.lang.String qualifiedPackageName
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   17     0                  this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
            0   17     1  qualifiedPackageName  Ljava/lang/String;
            0   17     2            moduleName  Ljava/lang/String;
            2   16     3                     e  Ljava/util/Enumeration<+Ljava/util/zip/ZipEntry;>;
            4   15     4             entryName  [C
            5   15     5                 index  I
            7   15     6                folder  [C
            9   15     7              fileName  Ljava/lang/String;
           11   15     8                  tail  Ljava/lang/String;
    MethodParameters:
                      Name  Flags
      qualifiedPackageName  
      moduleName            

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
         0: .line 183
            new java.lang.StringBuilder
            dup
            ldc "Classpath for JMod file "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.file:Ljava/io/File;
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;

  public org.eclipse.jdt.internal.compiler.env.IModule getModule();
    descriptor: ()Lorg/eclipse/jdt/internal/compiler/env/IModule;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
         0: .line 187
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.compiler.batch.ClasspathJmod.module:Lorg/eclipse/jdt/internal/compiler/env/IModule;
            areturn
        end local 0 // org.eclipse.jdt.internal.compiler.batch.ClasspathJmod this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/compiler/batch/ClasspathJmod;
}
SourceFile: "ClasspathJmod.java"
InnerClasses:
  public abstract Classpath = org.eclipse.jdt.internal.compiler.batch.FileSystem$Classpath of org.eclipse.jdt.internal.compiler.batch.FileSystem
  public abstract ClasspathSectionProblemReporter = org.eclipse.jdt.internal.compiler.batch.FileSystem$ClasspathSectionProblemReporter of org.eclipse.jdt.internal.compiler.batch.FileSystem
  public abstract ZipFileProducer = org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator$ZipFileProducer of org.eclipse.jdt.internal.compiler.classfmt.ExternalAnnotationDecorator
  public final ExternalAnnotationStatus = org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding$ExternalAnnotationStatus of org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding