public class org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment implements org.eclipse.jdt.internal.compiler.env.INameEnvironment, org.eclipse.jdt.internal.compiler.util.SuffixConstants
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment
  super_class: java.lang.Object
{
  private java.util.Map<java.lang.String, org.eclipse.jdt.core.ICompilationUnit> workingCopies;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Lorg/eclipse/jdt/core/ICompilationUnit;>;

  private org.eclipse.jdt.internal.core.nd.util.PathMap<java.lang.Integer> mapPathsToRoots;
    descriptor: Lorg/eclipse/jdt/internal/core/nd/util/PathMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/eclipse/jdt/internal/core/nd/util/PathMap<Ljava/lang/Integer;>;

  private org.eclipse.jdt.core.IPackageFragmentRoot[] roots;
    descriptor: [Lorg/eclipse/jdt/core/IPackageFragmentRoot;
    flags: (0x0002) ACC_PRIVATE

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

  private java.util.List<org.eclipse.jdt.internal.core.builder.ClasspathLocation> unindexedEntries;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lorg/eclipse/jdt/internal/core/builder/ClasspathLocation;>;

  public void <init>(java.util.List<org.eclipse.jdt.core.IJavaProject>, org.eclipse.jdt.core.ICompilationUnit[]);
    descriptor: (Ljava/util/List;[Lorg/eclipse/jdt/core/ICompilationUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=14, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
        start local 1 // java.util.List javaProject
        start local 2 // org.eclipse.jdt.core.ICompilationUnit[] copies
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 57
            aload 0 /* this */
            new org.eclipse.jdt.internal.core.nd.util.PathMap
            dup
            invokespecial org.eclipse.jdt.internal.core.nd.util.PathMap.<init>:()V
            putfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.mapPathsToRoots:Lorg/eclipse/jdt/internal/core/nd/util/PathMap;
         2: .line 60
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.unindexedEntries:Ljava/util/List;
         3: .line 63
            aload 0 /* this */
            aload 2 /* copies */
            invokestatic org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment.getWorkingCopyMap:([Lorg/eclipse/jdt/core/ICompilationUnit;)Ljava/util/Map;
            putfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.workingCopies:Ljava/util/Map;
         4: .line 66
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* localRoots */
        start local 3 // java.util.List localRoots
         5: .line 68
            aload 1 /* javaProject */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 20
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.util.List org.eclipse.jdt.core.ICompilationUnit[] java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.eclipse.jdt.core.IJavaProject
            astore 4 /* next */
        start local 4 // org.eclipse.jdt.core.IJavaProject next
         7: .line 69
            aload 4 /* next */
            invokeinterface org.eclipse.jdt.core.IJavaProject.getAllPackageFragmentRoots:()[Lorg/eclipse/jdt/core/IPackageFragmentRoot;
            dup
            astore 9
            arraylength
            istore 8
            iconst_0
            istore 7
            goto 19
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.util.List org.eclipse.jdt.core.ICompilationUnit[] java.util.List org.eclipse.jdt.core.IJavaProject java.util.Iterator top int int org.eclipse.jdt.core.IPackageFragmentRoot[]
      StackMap stack:
         8: aload 9
            iload 7
            aaload
            astore 6 /* nextRoot */
        start local 6 // org.eclipse.jdt.core.IPackageFragmentRoot nextRoot
         9: .line 70
            aload 6 /* nextRoot */
            invokeinterface org.eclipse.jdt.core.IPackageFragmentRoot.getPath:()Lorg/eclipse/core/runtime/IPath;
            astore 10 /* path */
        start local 10 // org.eclipse.core.runtime.IPath path
        10: .line 71
            aload 6 /* nextRoot */
            invokeinterface org.eclipse.jdt.core.IPackageFragmentRoot.isArchive:()Z
            ifne 17
        11: .line 72
            aload 10 /* path */
            iconst_1
            invokestatic org.eclipse.jdt.internal.core.JavaModel.getTarget:(Lorg/eclipse/core/runtime/IPath;Z)Ljava/lang/Object;
            astore 11 /* target */
        start local 11 // java.lang.Object target
        12: .line 73
            aload 11 /* target */
            ifnull 17
        13: .line 75
            aload 6 /* nextRoot */
            invokeinterface org.eclipse.jdt.core.IPackageFragmentRoot.getKind:()I
            iconst_1
            if_icmpne 17
        14: .line 76
            aload 6 /* nextRoot */
            checkcast org.eclipse.jdt.internal.core.PackageFragmentRoot
            astore 13 /* root */
        start local 13 // org.eclipse.jdt.internal.core.PackageFragmentRoot root
        15: .line 77
            new org.eclipse.jdt.internal.core.search.matching.ClasspathSourceDirectory
            dup
            aload 11 /* target */
            checkcast org.eclipse.core.resources.IContainer
            aload 13 /* root */
            invokevirtual org.eclipse.jdt.internal.core.PackageFragmentRoot.fullExclusionPatternChars:()[[C
            aload 13 /* root */
            invokevirtual org.eclipse.jdt.internal.core.PackageFragmentRoot.fullInclusionPatternChars:()[[C
            invokespecial org.eclipse.jdt.internal.core.search.matching.ClasspathSourceDirectory.<init>:(Lorg/eclipse/core/resources/IContainer;[[C[[C)V
            astore 12 /* cp */
        start local 12 // org.eclipse.jdt.internal.core.builder.ClasspathLocation cp
        16: .line 78
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.unindexedEntries:Ljava/util/List;
            aload 12 /* cp */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 13 // org.eclipse.jdt.internal.core.PackageFragmentRoot root
        end local 12 // org.eclipse.jdt.internal.core.builder.ClasspathLocation cp
        end local 11 // java.lang.Object target
        17: .line 83
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.util.List org.eclipse.jdt.core.ICompilationUnit[] java.util.List org.eclipse.jdt.core.IJavaProject java.util.Iterator org.eclipse.jdt.core.IPackageFragmentRoot int int org.eclipse.jdt.core.IPackageFragmentRoot[] org.eclipse.core.runtime.IPath
      StackMap stack:
            aload 3 /* localRoots */
            aload 6 /* nextRoot */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 10 // org.eclipse.core.runtime.IPath path
        end local 6 // org.eclipse.jdt.core.IPackageFragmentRoot nextRoot
        18: .line 69
            iinc 7 1
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.util.List org.eclipse.jdt.core.ICompilationUnit[] java.util.List org.eclipse.jdt.core.IJavaProject java.util.Iterator top int int org.eclipse.jdt.core.IPackageFragmentRoot[]
      StackMap stack:
        19: iload 7
            iload 8
            if_icmplt 8
        end local 4 // org.eclipse.jdt.core.IJavaProject next
        20: .line 68
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.util.List org.eclipse.jdt.core.ICompilationUnit[] java.util.List top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        21: .line 87
            aload 0 /* this */
            aload 3 /* localRoots */
            iconst_0
            anewarray org.eclipse.jdt.core.IPackageFragmentRoot
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast org.eclipse.jdt.core.IPackageFragmentRoot[]
            putfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.roots:[Lorg/eclipse/jdt/core/IPackageFragmentRoot;
        end local 3 // java.util.List localRoots
        22: .line 88
            goto 25
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.util.List org.eclipse.jdt.core.ICompilationUnit[]
      StackMap stack: org.eclipse.jdt.core.JavaModelException
        23: pop
        24: .line 89
            aload 0 /* this */
            iconst_0
            anewarray org.eclipse.jdt.core.IPackageFragmentRoot
            putfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.roots:[Lorg/eclipse/jdt/core/IPackageFragmentRoot;
        25: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.roots:[Lorg/eclipse/jdt/core/IPackageFragmentRoot;
            arraylength
            istore 3 /* length */
        start local 3 // int length
        26: .line 95
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        27: goto 31
        28: .line 96
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.roots:[Lorg/eclipse/jdt/core/IPackageFragmentRoot;
            iload 4 /* i */
            aaload
            invokestatic org.eclipse.jdt.internal.core.nd.java.JavaIndex.getLocationForElement:(Lorg/eclipse/jdt/core/IJavaElement;)Lorg/eclipse/core/runtime/IPath;
            astore 5 /* nextPath */
        start local 5 // org.eclipse.core.runtime.IPath nextPath
        29: .line 97
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.mapPathsToRoots:Lorg/eclipse/jdt/internal/core/nd/util/PathMap;
            aload 5 /* nextPath */
            iload 4 /* i */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual org.eclipse.jdt.internal.core.nd.util.PathMap.put:(Lorg/eclipse/core/runtime/IPath;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // org.eclipse.core.runtime.IPath nextPath
        30: .line 95
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        31: iload 4 /* i */
            iload 3 /* length */
            if_icmplt 28
        end local 4 // int i
        32: .line 101
            aload 0 /* this */
            ldc 2147483647
            putfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.sourceEntryPosition:I
        33: .line 102
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        34: goto 41
        35: .line 103
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.roots:[Lorg/eclipse/jdt/core/IPackageFragmentRoot;
            iload 4 /* i */
            aaload
            astore 5 /* nextRoot */
        start local 5 // org.eclipse.jdt.core.IPackageFragmentRoot nextRoot
        36: .line 105
            aload 5 /* nextRoot */
            invokeinterface org.eclipse.jdt.core.IPackageFragmentRoot.getKind:()I
            iconst_1
            if_icmpne 40
        37: .line 106
            aload 0 /* this */
            iload 4 /* i */
            putfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.sourceEntryPosition:I
        38: .line 107
            goto 42
        39: .line 109
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.util.List org.eclipse.jdt.core.ICompilationUnit[] int int org.eclipse.jdt.core.IPackageFragmentRoot
      StackMap stack: org.eclipse.jdt.core.JavaModelException
            pop
        end local 5 // org.eclipse.jdt.core.IPackageFragmentRoot nextRoot
        40: .line 102
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        41: iload 4 /* i */
            iload 3 /* length */
            if_icmplt 35
        end local 4 // int i
        42: .line 113
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int length
        end local 2 // org.eclipse.jdt.core.ICompilationUnit[] copies
        end local 1 // java.util.List javaProject
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   43     0         this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;
            0   43     1  javaProject  Ljava/util/List<Lorg/eclipse/jdt/core/IJavaProject;>;
            0   43     2       copies  [Lorg/eclipse/jdt/core/ICompilationUnit;
            5   22     3   localRoots  Ljava/util/List<Lorg/eclipse/jdt/core/IPackageFragmentRoot;>;
            7   20     4         next  Lorg/eclipse/jdt/core/IJavaProject;
            9   18     6     nextRoot  Lorg/eclipse/jdt/core/IPackageFragmentRoot;
           10   18    10         path  Lorg/eclipse/core/runtime/IPath;
           12   17    11       target  Ljava/lang/Object;
           16   17    12           cp  Lorg/eclipse/jdt/internal/core/builder/ClasspathLocation;
           15   17    13         root  Lorg/eclipse/jdt/internal/core/PackageFragmentRoot;
           26   43     3       length  I
           27   32     4            i  I
           29   30     5     nextPath  Lorg/eclipse/core/runtime/IPath;
           34   42     4            i  I
           36   40     5     nextRoot  Lorg/eclipse/jdt/core/IPackageFragmentRoot;
      Exception table:
        from    to  target  type
           4    22      23  Class org.eclipse.jdt.core.JavaModelException
          36    38      39  Class org.eclipse.jdt.core.JavaModelException
    Signature: (Ljava/util/List<Lorg/eclipse/jdt/core/IJavaProject;>;[Lorg/eclipse/jdt/core/ICompilationUnit;)V
    MethodParameters:
             Name  Flags
      javaProject  
      copies       

  public static boolean isEnabled();
    descriptor: ()Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 116
            invokestatic org.eclipse.core.runtime.Platform.getPreferencesService:()Lorg/eclipse/core/runtime/preferences/IPreferencesService;
            ldc "org.eclipse.jdt.core"
            ldc "useIndexBasedSearchEnvironment"
            iconst_0
         1: .line 117
            aconst_null
         2: .line 116
            invokeinterface org.eclipse.core.runtime.preferences.IPreferencesService.getBoolean:(Ljava/lang/String;Ljava/lang/String;Z[Lorg/eclipse/core/runtime/preferences/IScopeContext;)Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer findType(char[][]);
    descriptor: ([[C)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=27, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
        start local 1 // char[][] compoundTypeName
         0: .line 122
            aload 1 /* compoundTypeName */
            bipush 47
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.concatWith:([[CC)[C
            astore 2 /* binaryName */
        start local 2 // char[] binaryName
         1: .line 124
            ldc 2147483647
            istore 3 /* bestEntryPosition */
        start local 3 // int bestEntryPosition
         2: .line 125
            aload 0 /* this */
            new java.lang.String
            dup
            aload 2 /* binaryName */
            invokespecial java.lang.String.<init>:([C)V
            aload 1 /* compoundTypeName */
            aload 1 /* compoundTypeName */
            arraylength
            iconst_1
            isub
            aaload
            invokevirtual org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.findClassInUnindexedLocations:(Ljava/lang/String;[C)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
            astore 4 /* result */
        start local 4 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer result
         3: .line 126
            aload 4 /* result */
            ifnull 5
         4: .line 127
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.sourceEntryPosition:I
            istore 3 /* bestEntryPosition */
         5: .line 130
      StackMap locals: char[] int org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer
      StackMap stack:
            aload 2 /* binaryName */
            invokestatic org.eclipse.jdt.internal.core.nd.java.JavaNames.binaryNameToFieldDescriptor:([C)[C
            astore 5 /* fieldDescriptor */
        start local 5 // char[] fieldDescriptor
         6: .line 131
            invokestatic org.eclipse.jdt.internal.core.nd.java.JavaIndex.getIndex:()Lorg/eclipse/jdt/internal/core/nd/java/JavaIndex;
            astore 6 /* index */
        start local 6 // org.eclipse.jdt.internal.core.nd.java.JavaIndex index
         7: .line 132
            aload 6 /* index */
            invokevirtual org.eclipse.jdt.internal.core.nd.java.JavaIndex.getNd:()Lorg/eclipse/jdt/internal/core/nd/Nd;
            astore 7 /* nd */
        start local 7 // org.eclipse.jdt.internal.core.nd.Nd nd
         8: .line 133
            aconst_null
            astore 8
            aconst_null
            astore 9
         9: aload 7 /* nd */
            invokevirtual org.eclipse.jdt.internal.core.nd.Nd.acquireReadLock:()Lorg/eclipse/jdt/internal/core/nd/IReader;
            astore 10 /* lock */
        start local 10 // org.eclipse.jdt.internal.core.nd.IReader lock
        10: .line 134
            aload 6 /* index */
            aload 5 /* fieldDescriptor */
            invokevirtual org.eclipse.jdt.internal.core.nd.java.JavaIndex.findType:([C)Lorg/eclipse/jdt/internal/core/nd/java/NdTypeId;
            astore 11 /* typeId */
        start local 11 // org.eclipse.jdt.internal.core.nd.java.NdTypeId typeId
        11: .line 136
            aload 11 /* typeId */
            ifnull 34
        12: .line 137
            aload 11 /* typeId */
            invokevirtual org.eclipse.jdt.internal.core.nd.java.NdTypeId.getTypes:()Ljava/util/List;
            astore 12 /* types */
        start local 12 // java.util.List types
        13: .line 138
            aload 12 /* types */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 14
            goto 33
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment char[][] char[] int org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer char[] org.eclipse.jdt.internal.core.nd.java.JavaIndex org.eclipse.jdt.internal.core.nd.Nd java.lang.Throwable java.lang.Throwable org.eclipse.jdt.internal.core.nd.IReader org.eclipse.jdt.internal.core.nd.java.NdTypeId java.util.List top java.util.Iterator
      StackMap stack:
        14: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.eclipse.jdt.internal.core.nd.java.NdType
            astore 13 /* next */
        start local 13 // org.eclipse.jdt.internal.core.nd.java.NdType next
        15: .line 139
            aload 13 /* next */
            invokevirtual org.eclipse.jdt.internal.core.nd.java.NdType.getFile:()Lorg/eclipse/jdt/internal/core/nd/java/NdResourceFile;
            astore 15 /* resource */
        start local 15 // org.eclipse.jdt.internal.core.nd.java.NdResourceFile resource
        16: .line 141
            aload 15 /* resource */
            invokevirtual org.eclipse.jdt.internal.core.nd.java.NdResourceFile.getPath:()Lorg/eclipse/core/runtime/IPath;
            astore 16 /* path */
        start local 16 // org.eclipse.core.runtime.IPath path
        17: .line 142
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.mapPathsToRoots:Lorg/eclipse/jdt/internal/core/nd/util/PathMap;
            aload 16 /* path */
            invokevirtual org.eclipse.jdt.internal.core.nd.util.PathMap.getMostSpecific:(Lorg/eclipse/core/runtime/IPath;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 17 /* nextRoot */
        start local 17 // java.lang.Integer nextRoot
        18: .line 143
            aload 17 /* nextRoot */
            ifnull 33
        19: .line 144
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.roots:[Lorg/eclipse/jdt/core/IPackageFragmentRoot;
            aload 17 /* nextRoot */
            invokevirtual java.lang.Integer.intValue:()I
            aaload
            astore 18 /* root */
        start local 18 // org.eclipse.jdt.core.IPackageFragmentRoot root
        20: .line 146
            aload 18 /* root */
            invokeinterface org.eclipse.jdt.core.IPackageFragmentRoot.getRawClasspathEntry:()Lorg/eclipse/jdt/core/IClasspathEntry;
            checkcast org.eclipse.jdt.internal.core.ClasspathEntry
            astore 19 /* classpathEntry */
        start local 19 // org.eclipse.jdt.internal.core.ClasspathEntry classpathEntry
        21: .line 147
            aload 19 /* classpathEntry */
            invokevirtual org.eclipse.jdt.internal.core.ClasspathEntry.getAccessRuleSet:()Lorg/eclipse/jdt/internal/compiler/env/AccessRuleSet;
            astore 20 /* ruleSet */
        start local 20 // org.eclipse.jdt.internal.compiler.env.AccessRuleSet ruleSet
        22: .line 148
            aload 20 /* ruleSet */
            ifnonnull 23
            aconst_null
            goto 24
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment char[][] char[] int org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer char[] org.eclipse.jdt.internal.core.nd.java.JavaIndex org.eclipse.jdt.internal.core.nd.Nd java.lang.Throwable java.lang.Throwable org.eclipse.jdt.internal.core.nd.IReader org.eclipse.jdt.internal.core.nd.java.NdTypeId java.util.List org.eclipse.jdt.internal.core.nd.java.NdType java.util.Iterator org.eclipse.jdt.internal.core.nd.java.NdResourceFile org.eclipse.core.runtime.IPath java.lang.Integer org.eclipse.jdt.core.IPackageFragmentRoot org.eclipse.jdt.internal.core.ClasspathEntry org.eclipse.jdt.internal.compiler.env.AccessRuleSet
      StackMap stack:
        23: aload 20 /* ruleSet */
            aload 2 /* binaryName */
            invokevirtual org.eclipse.jdt.internal.compiler.env.AccessRuleSet.getViolatedRestriction:([C)Lorg/eclipse/jdt/internal/compiler/env/AccessRestriction;
      StackMap locals:
      StackMap stack: org.eclipse.jdt.internal.compiler.env.AccessRestriction
        24: astore 21 /* accessRestriction */
        start local 21 // org.eclipse.jdt.internal.compiler.env.AccessRestriction accessRestriction
        25: .line 149
            aload 13 /* next */
            invokestatic org.eclipse.jdt.internal.core.nd.java.TypeRef.create:(Lorg/eclipse/jdt/internal/core/nd/java/NdType;)Lorg/eclipse/jdt/internal/core/nd/java/TypeRef;
            astore 22 /* typeRef */
        start local 22 // org.eclipse.jdt.internal.core.nd.java.TypeRef typeRef
        26: .line 150
            new java.lang.StringBuilder
            dup
            new java.lang.String
            dup
            aload 2 /* binaryName */
            invokespecial java.lang.String.<init>:([C)V
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 23 /* fileName */
        start local 23 // java.lang.String fileName
        27: .line 151
            new org.eclipse.jdt.internal.core.nd.java.model.IndexBinaryType
            dup
            aload 22 /* typeRef */
            aload 23 /* fileName */
            invokevirtual java.lang.String.toCharArray:()[C
            invokespecial org.eclipse.jdt.internal.core.nd.java.model.IndexBinaryType.<init>:(Lorg/eclipse/jdt/internal/core/nd/java/TypeRef;[C)V
            astore 24 /* binaryType */
        start local 24 // org.eclipse.jdt.internal.compiler.env.IBinaryType binaryType
        28: .line 152
            new org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer
            dup
            aload 24 /* binaryType */
            aload 21 /* accessRestriction */
            invokespecial org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.<init>:(Lorg/eclipse/jdt/internal/compiler/env/IBinaryType;Lorg/eclipse/jdt/internal/compiler/env/AccessRestriction;)V
            astore 25 /* nextAnswer */
        start local 25 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer nextAnswer
        29: .line 154
            aload 0 /* this */
            aload 4 /* result */
            iload 3 /* bestEntryPosition */
            aload 25 /* nextAnswer */
            aload 17 /* nextRoot */
            invokevirtual java.lang.Integer.intValue:()I
            invokevirtual org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.isBetter:(Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;ILorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;I)Z
            istore 26 /* useNewAnswer */
        start local 26 // boolean useNewAnswer
        30: .line 156
            iload 26 /* useNewAnswer */
            ifeq 33
        31: .line 157
            aload 17 /* nextRoot */
            invokevirtual java.lang.Integer.intValue:()I
            istore 3 /* bestEntryPosition */
        32: .line 158
            aload 25 /* nextAnswer */
            astore 4 /* result */
        end local 26 // boolean useNewAnswer
        end local 25 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer nextAnswer
        end local 24 // org.eclipse.jdt.internal.compiler.env.IBinaryType binaryType
        end local 23 // java.lang.String fileName
        end local 22 // org.eclipse.jdt.internal.core.nd.java.TypeRef typeRef
        end local 21 // org.eclipse.jdt.internal.compiler.env.AccessRestriction accessRestriction
        end local 20 // org.eclipse.jdt.internal.compiler.env.AccessRuleSet ruleSet
        end local 19 // org.eclipse.jdt.internal.core.ClasspathEntry classpathEntry
        end local 18 // org.eclipse.jdt.core.IPackageFragmentRoot root
        end local 17 // java.lang.Integer nextRoot
        end local 16 // org.eclipse.core.runtime.IPath path
        end local 15 // org.eclipse.jdt.internal.core.nd.java.NdResourceFile resource
        end local 13 // org.eclipse.jdt.internal.core.nd.java.NdType next
        33: .line 138
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment char[][] char[] int org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer char[] org.eclipse.jdt.internal.core.nd.java.JavaIndex org.eclipse.jdt.internal.core.nd.Nd java.lang.Throwable java.lang.Throwable org.eclipse.jdt.internal.core.nd.IReader org.eclipse.jdt.internal.core.nd.java.NdTypeId java.util.List top java.util.Iterator
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 14
        end local 12 // java.util.List types
        end local 11 // org.eclipse.jdt.internal.core.nd.java.NdTypeId typeId
        34: .line 163
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment char[][] char[] int org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer char[] org.eclipse.jdt.internal.core.nd.java.JavaIndex org.eclipse.jdt.internal.core.nd.Nd java.lang.Throwable java.lang.Throwable org.eclipse.jdt.internal.core.nd.IReader
      StackMap stack:
            aload 10 /* lock */
            ifnull 41
            aload 10 /* lock */
            invokeinterface org.eclipse.jdt.internal.core.nd.IReader.close:()V
            goto 41
      StackMap locals:
      StackMap stack: java.lang.Throwable
        35: astore 8
            aload 10 /* lock */
            ifnull 36
            aload 10 /* lock */
            invokeinterface org.eclipse.jdt.internal.core.nd.IReader.close:()V
        end local 10 // org.eclipse.jdt.internal.core.nd.IReader lock
      StackMap locals:
      StackMap stack:
        36: aload 8
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        37: astore 9
            aload 8
            ifnonnull 38
            aload 9
            astore 8
            goto 39
      StackMap locals:
      StackMap stack:
        38: aload 8
            aload 9
            if_acmpeq 39
            aload 8
            aload 9
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        39: aload 8
            athrow
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment char[][] char[] int org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer char[] org.eclipse.jdt.internal.core.nd.java.JavaIndex org.eclipse.jdt.internal.core.nd.Nd
      StackMap stack: org.eclipse.jdt.core.JavaModelException
        40: pop
        41: .line 167
      StackMap locals:
      StackMap stack:
            aload 4 /* result */
            areturn
        end local 7 // org.eclipse.jdt.internal.core.nd.Nd nd
        end local 6 // org.eclipse.jdt.internal.core.nd.java.JavaIndex index
        end local 5 // char[] fieldDescriptor
        end local 4 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer result
        end local 3 // int bestEntryPosition
        end local 2 // char[] binaryName
        end local 1 // char[][] compoundTypeName
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   42     0               this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;
            0   42     1   compoundTypeName  [[C
            1   42     2         binaryName  [C
            2   42     3  bestEntryPosition  I
            3   42     4             result  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
            6   42     5    fieldDescriptor  [C
            7   42     6              index  Lorg/eclipse/jdt/internal/core/nd/java/JavaIndex;
            8   42     7                 nd  Lorg/eclipse/jdt/internal/core/nd/Nd;
           10   36    10               lock  Lorg/eclipse/jdt/internal/core/nd/IReader;
           11   34    11             typeId  Lorg/eclipse/jdt/internal/core/nd/java/NdTypeId;
           13   34    12              types  Ljava/util/List<Lorg/eclipse/jdt/internal/core/nd/java/NdType;>;
           15   33    13               next  Lorg/eclipse/jdt/internal/core/nd/java/NdType;
           16   33    15           resource  Lorg/eclipse/jdt/internal/core/nd/java/NdResourceFile;
           17   33    16               path  Lorg/eclipse/core/runtime/IPath;
           18   33    17           nextRoot  Ljava/lang/Integer;
           20   33    18               root  Lorg/eclipse/jdt/core/IPackageFragmentRoot;
           21   33    19     classpathEntry  Lorg/eclipse/jdt/internal/core/ClasspathEntry;
           22   33    20            ruleSet  Lorg/eclipse/jdt/internal/compiler/env/AccessRuleSet;
           25   33    21  accessRestriction  Lorg/eclipse/jdt/internal/compiler/env/AccessRestriction;
           26   33    22            typeRef  Lorg/eclipse/jdt/internal/core/nd/java/TypeRef;
           27   33    23           fileName  Ljava/lang/String;
           28   33    24         binaryType  Lorg/eclipse/jdt/internal/compiler/env/IBinaryType;
           29   33    25         nextAnswer  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
           30   33    26       useNewAnswer  Z
      Exception table:
        from    to  target  type
          10    34      35  any
           9    37      37  any
           8    40      40  Class org.eclipse.jdt.core.JavaModelException
    MethodParameters:
                  Name  Flags
      compoundTypeName  

  private org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer findClassInUnindexedLocations(java.lang.String, char[]);
    descriptor: (Ljava/lang/String;[C)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=13, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
        start local 1 // java.lang.String qualifiedTypeName
        start local 2 // char[] typeName
         0: .line 175
            aconst_null
            astore 3 /* binaryFileName */
        start local 3 // java.lang.String binaryFileName
         1: aconst_null
            astore 4 /* qBinaryFileName */
        start local 4 // java.lang.String qBinaryFileName
         2: .line 176
            aconst_null
            astore 5 /* sourceFileName */
        start local 5 // java.lang.String sourceFileName
         3: aconst_null
            astore 6 /* qSourceFileName */
        start local 6 // java.lang.String qSourceFileName
         4: .line 177
            aconst_null
            astore 7 /* qPackageName */
        start local 7 // java.lang.String qPackageName
         5: .line 178
            aconst_null
            astore 8 /* suggestedAnswer */
        start local 8 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer suggestedAnswer
         6: .line 179
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.unindexedEntries:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9 /* iter */
        start local 9 // java.util.Iterator iter
         7: .line 180
            goto 54
         8: .line 181
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.lang.String char[] java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer java.util.Iterator
      StackMap stack:
            aload 9 /* iter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.eclipse.jdt.internal.core.builder.ClasspathLocation
            astore 10 /* location */
        start local 10 // org.eclipse.jdt.internal.core.builder.ClasspathLocation location
         9: .line 183
            aload 10 /* location */
            instanceof org.eclipse.jdt.internal.core.search.matching.ClasspathSourceDirectory
            ifeq 31
        10: .line 184
            aload 5 /* sourceFileName */
            ifnonnull 18
        11: .line 185
            aload 1 /* qualifiedTypeName */
            astore 6 /* qSourceFileName */
        12: .line 186
            aload 6 /* qSourceFileName */
            astore 5 /* sourceFileName */
        13: .line 187
            ldc ""
            astore 7 /* qPackageName */
        14: .line 188
            aload 1 /* qualifiedTypeName */
            invokevirtual java.lang.String.length:()I
            aload 2 /* typeName */
            arraylength
            if_icmple 18
        15: .line 189
            aload 6 /* qSourceFileName */
            invokevirtual java.lang.String.length:()I
            aload 2 /* typeName */
            arraylength
            isub
            istore 12 /* typeNameStart */
        start local 12 // int typeNameStart
        16: .line 190
            aload 6 /* qSourceFileName */
            iconst_0
            iload 12 /* typeNameStart */
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* qPackageName */
        17: .line 191
            aload 6 /* qSourceFileName */
            iload 12 /* typeNameStart */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 5 /* sourceFileName */
        end local 12 // int typeNameStart
        18: .line 194
      StackMap locals: org.eclipse.jdt.internal.core.builder.ClasspathLocation
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.workingCopies:Ljava/util/Map;
            aload 1 /* qualifiedTypeName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.eclipse.jdt.internal.compiler.env.ICompilationUnit
            astore 12 /* workingCopy */
        start local 12 // org.eclipse.jdt.internal.compiler.env.ICompilationUnit workingCopy
        19: .line 195
            aload 12 /* workingCopy */
            ifnull 22
        20: .line 196
            new org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer
            dup
            aload 12 /* workingCopy */
            aconst_null
            invokespecial org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.<init>:(Lorg/eclipse/jdt/internal/compiler/env/ICompilationUnit;Lorg/eclipse/jdt/internal/compiler/env/AccessRestriction;)V
            astore 11 /* answer */
        start local 11 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer answer
        21: .line 197
            goto 48
        end local 11 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer answer
        22: .line 198
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.lang.String char[] java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer java.util.Iterator org.eclipse.jdt.internal.core.builder.ClasspathLocation top org.eclipse.jdt.internal.compiler.env.ICompilationUnit
      StackMap stack:
            aload 10 /* location */
        23: .line 199
            aload 5 /* sourceFileName */
        24: .line 200
            aload 7 /* qPackageName */
        25: .line 201
            aconst_null
        26: .line 202
            aload 6 /* qSourceFileName */
        27: .line 203
            iconst_0
        28: .line 204
            aconst_null
        29: .line 198
            invokevirtual org.eclipse.jdt.internal.core.builder.ClasspathLocation.findClass:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/util/function/Predicate;)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
            astore 11 /* answer */
        end local 12 // org.eclipse.jdt.internal.compiler.env.ICompilationUnit workingCopy
        start local 11 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer answer
        30: .line 206
            goto 48
        end local 11 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer answer
        31: .line 207
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment java.lang.String char[] java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer java.util.Iterator org.eclipse.jdt.internal.core.builder.ClasspathLocation
      StackMap stack:
            aload 3 /* binaryFileName */
            ifnonnull 39
        32: .line 208
            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 ".class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* qBinaryFileName */
        33: .line 209
            aload 4 /* qBinaryFileName */
            astore 3 /* binaryFileName */
        34: .line 210
            ldc ""
            astore 7 /* qPackageName */
        35: .line 211
            aload 1 /* qualifiedTypeName */
            invokevirtual java.lang.String.length:()I
            aload 2 /* typeName */
            arraylength
            if_icmple 39
        36: .line 212
            aload 4 /* qBinaryFileName */
            invokevirtual java.lang.String.length:()I
            aload 2 /* typeName */
            arraylength
            isub
            bipush 6
            isub
            istore 12 /* typeNameStart */
        start local 12 // int typeNameStart
        37: .line 213
            aload 4 /* qBinaryFileName */
            iconst_0
            iload 12 /* typeNameStart */
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 7 /* qPackageName */
        38: .line 214
            aload 4 /* qBinaryFileName */
            iload 12 /* typeNameStart */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* binaryFileName */
        end local 12 // int typeNameStart
        39: .line 218
      StackMap locals:
      StackMap stack:
            aload 10 /* location */
        40: .line 219
            aload 3 /* binaryFileName */
        41: .line 220
            aload 7 /* qPackageName */
        42: .line 221
            aconst_null
        43: .line 222
            aload 4 /* qBinaryFileName */
        44: .line 223
            iconst_0
        45: .line 224
            aconst_null
        46: .line 218
            invokevirtual org.eclipse.jdt.internal.core.builder.ClasspathLocation.findClass:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/util/function/Predicate;)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
        47: .line 217
            astore 11 /* answer */
        start local 11 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer answer
        48: .line 226
      StackMap locals: org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer
      StackMap stack:
            aload 11 /* answer */
            ifnull 54
        49: .line 227
            aload 11 /* answer */
            invokevirtual org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.ignoreIfBetter:()Z
            ifne 52
        50: .line 228
            aload 11 /* answer */
            aload 8 /* suggestedAnswer */
            invokevirtual org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.isBetter:(Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;)Z
            ifeq 54
        51: .line 229
            aload 11 /* answer */
            areturn
        52: .line 230
      StackMap locals:
      StackMap stack:
            aload 11 /* answer */
            aload 8 /* suggestedAnswer */
            invokevirtual org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.isBetter:(Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;)Z
            ifeq 54
        53: .line 232
            aload 11 /* answer */
            astore 8 /* suggestedAnswer */
        end local 11 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer answer
        end local 10 // org.eclipse.jdt.internal.core.builder.ClasspathLocation location
        54: .line 180
      StackMap locals:
      StackMap stack:
            aload 9 /* iter */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        55: .line 235
            aload 8 /* suggestedAnswer */
            ifnull 57
        56: .line 237
            aload 8 /* suggestedAnswer */
            areturn
        57: .line 238
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 9 // java.util.Iterator iter
        end local 8 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer suggestedAnswer
        end local 7 // java.lang.String qPackageName
        end local 6 // java.lang.String qSourceFileName
        end local 5 // java.lang.String sourceFileName
        end local 4 // java.lang.String qBinaryFileName
        end local 3 // java.lang.String binaryFileName
        end local 2 // char[] typeName
        end local 1 // java.lang.String qualifiedTypeName
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   58     0               this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;
            0   58     1  qualifiedTypeName  Ljava/lang/String;
            0   58     2           typeName  [C
            1   58     3     binaryFileName  Ljava/lang/String;
            2   58     4    qBinaryFileName  Ljava/lang/String;
            3   58     5     sourceFileName  Ljava/lang/String;
            4   58     6    qSourceFileName  Ljava/lang/String;
            5   58     7       qPackageName  Ljava/lang/String;
            6   58     8    suggestedAnswer  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
            7   58     9               iter  Ljava/util/Iterator<Lorg/eclipse/jdt/internal/core/builder/ClasspathLocation;>;
            9   54    10           location  Lorg/eclipse/jdt/internal/core/builder/ClasspathLocation;
           21   22    11             answer  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
           30   31    11             answer  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
           48   54    11             answer  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
           16   18    12      typeNameStart  I
           19   30    12        workingCopy  Lorg/eclipse/jdt/internal/compiler/env/ICompilationUnit;
           37   39    12      typeNameStart  I
    MethodParameters:
                   Name  Flags
      qualifiedTypeName  
      typeName           

  public boolean isBetter(org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer, int, org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer, int);
    descriptor: (Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;ILorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=6, args_size=5
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
        start local 1 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer currentBest
        start local 2 // int currentBestClasspathPosition
        start local 3 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer toTest
        start local 4 // int toTestClasspathPosition
         0: .line 243
            iconst_0
            istore 5 /* useNewAnswer */
        start local 5 // boolean useNewAnswer
         1: .line 245
            aload 1 /* currentBest */
            ifnonnull 4
         2: .line 246
            iconst_1
            istore 5 /* useNewAnswer */
         3: .line 247
            goto 11
         4: .line 248
      StackMap locals: int
      StackMap stack:
            aload 3 /* toTest */
            aload 1 /* currentBest */
            invokevirtual org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.isBetter:(Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;)Z
            ifeq 7
         5: .line 249
            iconst_1
            istore 5 /* useNewAnswer */
         6: .line 250
            goto 11
         7: .line 252
      StackMap locals:
      StackMap stack:
            aload 1 /* currentBest */
            aload 3 /* toTest */
            invokevirtual org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer.isBetter:(Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;)Z
            ifne 11
         8: .line 253
            iload 4 /* toTestClasspathPosition */
            iload 2 /* currentBestClasspathPosition */
            if_icmpge 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 5 /* useNewAnswer */
        11: .line 257
      StackMap locals:
      StackMap stack:
            iload 5 /* useNewAnswer */
            ireturn
        end local 5 // boolean useNewAnswer
        end local 4 // int toTestClasspathPosition
        end local 3 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer toTest
        end local 2 // int currentBestClasspathPosition
        end local 1 // org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer currentBest
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot                          Name  Signature
            0   12     0                          this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;
            0   12     1                   currentBest  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
            0   12     2  currentBestClasspathPosition  I
            0   12     3                        toTest  Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
            0   12     4       toTestClasspathPosition  I
            1   12     5                  useNewAnswer  Z
    MethodParameters:
                              Name  Flags
      currentBest                   
      currentBestClasspathPosition  
      toTest                        
      toTestClasspathPosition       

  public org.eclipse.jdt.internal.compiler.env.NameEnvironmentAnswer findType(char[], char[][]);
    descriptor: ([C[[C)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
        start local 1 // char[] typeName
        start local 2 // char[][] packageName
         0: .line 262
            aload 2 /* packageName */
            arraylength
            iconst_1
            iadd
            anewarray char[]
            astore 3 /* newArray */
        start local 3 // char[][] newArray
         1: .line 263
            iconst_0
            istore 4 /* idx */
        start local 4 // int idx
         2: goto 5
         3: .line 264
      StackMap locals: char[][] int
      StackMap stack:
            aload 3 /* newArray */
            iload 4 /* idx */
            aload 2 /* packageName */
            iload 4 /* idx */
            aaload
            aastore
         4: .line 263
            iinc 4 /* idx */ 1
      StackMap locals:
      StackMap stack:
         5: iload 4 /* idx */
            aload 2 /* packageName */
            arraylength
            if_icmplt 3
        end local 4 // int idx
         6: .line 266
            aload 3 /* newArray */
            aload 2 /* packageName */
            arraylength
            aload 1 /* typeName */
            aastore
         7: .line 267
            aload 0 /* this */
            aload 3 /* newArray */
            invokevirtual org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.findType:([[C)Lorg/eclipse/jdt/internal/compiler/env/NameEnvironmentAnswer;
            areturn
        end local 3 // char[][] newArray
        end local 2 // char[][] packageName
        end local 1 // char[] typeName
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;
            0    8     1     typeName  [C
            0    8     2  packageName  [[C
            1    8     3     newArray  [[C
            2    6     4          idx  I
    MethodParameters:
             Name  Flags
      typeName     
      packageName  

  public boolean isPackage(char[][], char[]);
    descriptor: ([[C[C)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=10, args_size=3
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
        start local 1 // char[][] parentPackageName
        start local 2 // char[] packageName
         0: .line 272
            aload 1 /* parentPackageName */
            bipush 47
            invokestatic org.eclipse.jdt.core.compiler.CharOperation.concatWith:([[CC)[C
            astore 3 /* binaryPackageName */
        start local 3 // char[] binaryPackageName
         1: .line 275
            aload 1 /* parentPackageName */
            ifnull 2
            aload 1 /* parentPackageName */
            arraylength
            ifne 6
         2: .line 276
      StackMap locals: char[]
      StackMap stack:
            getstatic org.eclipse.jdt.internal.core.nd.java.JavaNames.FIELD_DESCRIPTOR_PREFIX:[C
            aload 2 /* packageName */
         3: .line 277
            iconst_1
            newarray 5
            dup
            iconst_0
            bipush 47
            castore
         4: .line 276
            invokestatic org.eclipse.jdt.internal.core.nd.util.CharArrayUtils.concat:([C[C[C)[C
            astore 4 /* fieldDescriptorPrefix */
        start local 4 // char[] fieldDescriptorPrefix
         5: .line 278
            goto 9
        end local 4 // char[] fieldDescriptorPrefix
         6: .line 279
      StackMap locals:
      StackMap stack:
            iconst_5
            anewarray char[]
            dup
            iconst_0
            getstatic org.eclipse.jdt.internal.core.nd.java.JavaNames.FIELD_DESCRIPTOR_PREFIX:[C
            aastore
            dup
            iconst_1
            aload 3 /* binaryPackageName */
            aastore
            dup
            iconst_2
         7: .line 280
            iconst_1
            newarray 5
            dup
            iconst_0
            bipush 47
            castore
            aastore
            dup
            iconst_3
            aload 2 /* packageName */
            aastore
            dup
            iconst_4
            iconst_1
            newarray 5
            dup
            iconst_0
            bipush 47
            castore
            aastore
         8: .line 279
            invokestatic org.eclipse.jdt.internal.core.nd.util.CharArrayUtils.concat:([[C)[C
            astore 4 /* fieldDescriptorPrefix */
        start local 4 // char[] fieldDescriptorPrefix
         9: .line 285
      StackMap locals: char[]
      StackMap stack:
            invokestatic org.eclipse.jdt.internal.core.nd.java.JavaIndex.getIndex:()Lorg/eclipse/jdt/internal/core/nd/java/JavaIndex;
            astore 5 /* index */
        start local 5 // org.eclipse.jdt.internal.core.nd.java.JavaIndex index
        10: .line 286
            aload 5 /* index */
            invokevirtual org.eclipse.jdt.internal.core.nd.java.JavaIndex.getNd:()Lorg/eclipse/jdt/internal/core/nd/Nd;
            astore 6 /* nd */
        start local 6 // org.eclipse.jdt.internal.core.nd.Nd nd
        11: .line 287
            aconst_null
            astore 7
            aconst_null
            astore 8
        12: aload 6 /* nd */
            invokevirtual org.eclipse.jdt.internal.core.nd.Nd.acquireReadLock:()Lorg/eclipse/jdt/internal/core/nd/IReader;
            astore 9 /* lock */
        start local 9 // org.eclipse.jdt.internal.core.nd.IReader lock
        13: .line 288
            aload 5 /* index */
            aload 4 /* fieldDescriptorPrefix */
        14: .line 289
            new org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment$1
            dup
            aload 0 /* this */
            aload 4 /* fieldDescriptorPrefix */
            invokespecial org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment$1.<init>:(Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;[C)V
        15: .line 288
            invokevirtual org.eclipse.jdt.internal.core.nd.java.JavaIndex.visitFieldDescriptorsStartingWith:([CLorg/eclipse/jdt/internal/core/nd/field/FieldSearchIndex$Visitor;)Z
        16: .line 316
            ifeq 18
        17: .line 288
            iconst_0
            goto 19
      StackMap locals: org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment char[][] char[] char[] char[] org.eclipse.jdt.internal.core.nd.java.JavaIndex org.eclipse.jdt.internal.core.nd.Nd java.lang.Throwable java.lang.Throwable org.eclipse.jdt.internal.core.nd.IReader
      StackMap stack:
        18: iconst_1
        19: .line 317
      StackMap locals:
      StackMap stack: int
            aload 9 /* lock */
            ifnull 20
            aload 9 /* lock */
            invokeinterface org.eclipse.jdt.internal.core.nd.IReader.close:()V
        20: .line 288
      StackMap locals:
      StackMap stack: int
            ireturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: astore 7
        22: .line 317
            aload 9 /* lock */
            ifnull 23
            aload 9 /* lock */
            invokeinterface org.eclipse.jdt.internal.core.nd.IReader.close:()V
        end local 9 // org.eclipse.jdt.internal.core.nd.IReader lock
      StackMap locals:
      StackMap stack:
        23: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 8
            aload 7
            ifnonnull 25
            aload 8
            astore 7
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 7
            aload 8
            if_acmpeq 26
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        26: aload 7
            athrow
        end local 6 // org.eclipse.jdt.internal.core.nd.Nd nd
        end local 5 // org.eclipse.jdt.internal.core.nd.java.JavaIndex index
        end local 4 // char[] fieldDescriptorPrefix
        end local 3 // char[] binaryPackageName
        end local 2 // char[] packageName
        end local 1 // char[][] parentPackageName
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   27     0                   this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;
            0   27     1      parentPackageName  [[C
            0   27     2            packageName  [C
            1   27     3      binaryPackageName  [C
            5    6     4  fieldDescriptorPrefix  [C
            9   27     4  fieldDescriptorPrefix  [C
           10   27     5                  index  Lorg/eclipse/jdt/internal/core/nd/java/JavaIndex;
           11   27     6                     nd  Lorg/eclipse/jdt/internal/core/nd/Nd;
           13   23     9                   lock  Lorg/eclipse/jdt/internal/core/nd/IReader;
      Exception table:
        from    to  target  type
          13    19      21  any
          12    20      24  any
          21    24      24  any
    MethodParameters:
                   Name  Flags
      parentPackageName  
      packageName        

  boolean containsPrefixOf(org.eclipse.core.runtime.IPath);
    descriptor: (Lorg/eclipse/core/runtime/IPath;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
        start local 1 // org.eclipse.core.runtime.IPath path
         0: .line 321
            aload 0 /* this */
            getfield org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.mapPathsToRoots:Lorg/eclipse/jdt/internal/core/nd/util/PathMap;
            aload 1 /* path */
            invokevirtual org.eclipse.jdt.internal.core.nd.util.PathMap.containsPrefixOf:(Lorg/eclipse/core/runtime/IPath;)Z
            ireturn
        end local 1 // org.eclipse.core.runtime.IPath path
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;
            0    1     1  path  Lorg/eclipse/core/runtime/IPath;
    MethodParameters:
      Name  Flags
      path  

  public void cleanup();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
         0: .line 327
            return
        end local 0 // org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jdt/internal/core/search/matching/IndexBasedJavaSearchEnvironment;

  public static org.eclipse.jdt.internal.compiler.env.INameEnvironment create(java.util.List<org.eclipse.jdt.core.IJavaProject>, org.eclipse.jdt.core.ICompilationUnit[]);
    descriptor: (Ljava/util/List;[Lorg/eclipse/jdt/core/ICompilationUnit;)Lorg/eclipse/jdt/internal/compiler/env/INameEnvironment;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // java.util.List javaProjects
        start local 1 // org.eclipse.jdt.core.ICompilationUnit[] copies
         0: .line 330
            invokestatic org.eclipse.jdt.internal.core.nd.java.JavaIndex.isEnabled:()Z
            ifeq 2
            invokestatic org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.isEnabled:()Z
            ifeq 2
         1: .line 331
            new org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment
            dup
            aload 0 /* javaProjects */
            aload 1 /* copies */
            invokespecial org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment.<init>:(Ljava/util/List;[Lorg/eclipse/jdt/core/ICompilationUnit;)V
            areturn
         2: .line 333
      StackMap locals:
      StackMap stack:
            aload 0 /* javaProjects */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2 /* next */
        start local 2 // java.util.Iterator next
         3: .line 334
            new org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment
            dup
            aload 2 /* next */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.eclipse.jdt.core.IJavaProject
            aload 1 /* copies */
            invokespecial org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment.<init>:(Lorg/eclipse/jdt/core/IJavaProject;[Lorg/eclipse/jdt/core/ICompilationUnit;)V
            astore 3 /* result */
        start local 3 // org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment result
         4: .line 336
            goto 6
         5: .line 337
      StackMap locals: java.util.Iterator org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment
      StackMap stack:
            aload 3 /* result */
            aload 2 /* next */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.eclipse.jdt.internal.core.JavaProject
            invokevirtual org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment.addProjectClassPath:(Lorg/eclipse/jdt/internal/core/JavaProject;)V
         6: .line 336
      StackMap locals:
      StackMap stack:
            aload 2 /* next */
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         7: .line 339
            aload 3 /* result */
            areturn
        end local 3 // org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment result
        end local 2 // java.util.Iterator next
        end local 1 // org.eclipse.jdt.core.ICompilationUnit[] copies
        end local 0 // java.util.List javaProjects
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0  javaProjects  Ljava/util/List<Lorg/eclipse/jdt/core/IJavaProject;>;
            0    8     1        copies  [Lorg/eclipse/jdt/core/ICompilationUnit;
            3    8     2          next  Ljava/util/Iterator<Lorg/eclipse/jdt/core/IJavaProject;>;
            4    8     3        result  Lorg/eclipse/jdt/internal/core/search/matching/JavaSearchNameEnvironment;
    Signature: (Ljava/util/List<Lorg/eclipse/jdt/core/IJavaProject;>;[Lorg/eclipse/jdt/core/ICompilationUnit;)Lorg/eclipse/jdt/internal/compiler/env/INameEnvironment;
    MethodParameters:
              Name  Flags
      javaProjects  
      copies        
}
SourceFile: "IndexBasedJavaSearchEnvironment.java"
NestMembers:
  org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment$1
InnerClasses:
  public abstract Visitor = org.eclipse.jdt.internal.core.nd.field.FieldSearchIndex$Visitor of org.eclipse.jdt.internal.core.nd.field.FieldSearchIndex
  org.eclipse.jdt.internal.core.search.matching.IndexBasedJavaSearchEnvironment$1