public final class com.oracle.graalvm.locator.GraalVMLocator extends com.oracle.truffle.api.impl.TruffleLocator implements java.util.concurrent.Callable<java.lang.ClassLoader>
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.graalvm.locator.GraalVMLocator
  super_class: com.oracle.truffle.api.impl.TruffleLocator
{
  private static final boolean LOCATOR_TRACE;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static java.net.URLClassLoader loader;
    descriptor: Ljava/net/URLClassLoader;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 65
            ldc "truffle.class.path.trace"
            ldc "false"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Boolean.parseBoolean:(Ljava/lang/String;)Z
            putstatic com.oracle.graalvm.locator.GraalVMLocator.LOCATOR_TRACE:Z
         1: .line 67
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.graalvm.locator.GraalVMLocator this
         0: .line 69
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.impl.TruffleLocator.<init>:()V
         1: .line 70
            return
        end local 0 // com.oracle.graalvm.locator.GraalVMLocator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/graalvm/locator/GraalVMLocator;

  private static void setGraalVMProperties(org.graalvm.home.HomeFinder);
    descriptor: (Lorg/graalvm/home/HomeFinder;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // org.graalvm.home.HomeFinder homeFinder
         0: .line 73
            aload 0 /* homeFinder */
            invokevirtual org.graalvm.home.HomeFinder.getHomeFolder:()Ljava/nio/file/Path;
            astore 1 /* homePath */
        start local 1 // java.nio.file.Path homePath
         1: .line 74
            aload 1 /* homePath */
            ifnull 5
         2: .line 75
            aload 1 /* homePath */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            astore 2 /* home */
        start local 2 // java.lang.String home
         3: .line 76
            ldc "org.graalvm.home"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            ifnonnull 5
         4: .line 78
            ldc "org.graalvm.home"
            aload 2 /* home */
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
        end local 2 // java.lang.String home
         5: .line 81
      StackMap locals: java.nio.file.Path
      StackMap stack:
            aload 0 /* homeFinder */
            invokevirtual org.graalvm.home.HomeFinder.getVersion:()Ljava/lang/String;
            astore 2 /* version */
        start local 2 // java.lang.String version
         6: .line 82
            ldc "org.graalvm.version"
            aload 2 /* version */
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
         7: .line 83
            aload 0 /* homeFinder */
            invokevirtual org.graalvm.home.HomeFinder.getLanguageHomes:()Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 10
      StackMap locals: org.graalvm.home.HomeFinder java.nio.file.Path java.lang.String top java.util.Iterator
      StackMap stack:
         8: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* languageHome */
        start local 3 // java.util.Map$Entry languageHome
         9: .line 84
            aload 3 /* languageHome */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 3 /* languageHome */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.setLanguageHomeProperty:(Ljava/lang/String;Ljava/nio/file/Path;)V
        end local 3 // java.util.Map$Entry languageHome
        10: .line 83
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 86
            aload 0 /* homeFinder */
            invokevirtual org.graalvm.home.HomeFinder.getToolHomes:()Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 14
      StackMap locals:
      StackMap stack:
        12: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 3 /* toolHome */
        start local 3 // java.util.Map$Entry toolHome
        13: .line 87
            aload 3 /* toolHome */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            aload 3 /* toolHome */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.setToolHomeProperty:(Ljava/lang/String;Ljava/nio/file/Path;)V
        end local 3 // java.util.Map$Entry toolHome
        14: .line 86
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        15: .line 89
            return
        end local 2 // java.lang.String version
        end local 1 // java.nio.file.Path homePath
        end local 0 // org.graalvm.home.HomeFinder homeFinder
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   16     0    homeFinder  Lorg/graalvm/home/HomeFinder;
            1   16     1      homePath  Ljava/nio/file/Path;
            3    5     2          home  Ljava/lang/String;
            6   16     2       version  Ljava/lang/String;
            9   10     3  languageHome  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/nio/file/Path;>;
           13   14     3      toolHome  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/nio/file/Path;>;
    MethodParameters:
            Name  Flags
      homeFinder  

  private static void setLanguageHomeProperty(java.lang.String, java.nio.file.Path);
    descriptor: (Ljava/lang/String;Ljava/nio/file/Path;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.String languageId
        start local 1 // java.nio.file.Path languageLocation
         0: .line 92
            aload 1 /* languageLocation */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 7
         1: .line 93
            new java.lang.StringBuilder
            dup
            ldc "org.graalvm.language."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* languageId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ".home"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* homeFolderKey */
        start local 2 // java.lang.String homeFolderKey
         2: .line 94
            aload 2 /* homeFolderKey */
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            ifnonnull 4
         3: .line 95
            aload 2 /* homeFolderKey */
            aload 1 /* languageLocation */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
         4: .line 97
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* languageId */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".home"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* legacyHomeFolderKey */
        start local 3 // java.lang.String legacyHomeFolderKey
         5: .line 98
            aload 3 /* legacyHomeFolderKey */
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            ifnonnull 7
         6: .line 99
            aload 3 /* legacyHomeFolderKey */
            aload 1 /* languageLocation */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
        end local 3 // java.lang.String legacyHomeFolderKey
        end local 2 // java.lang.String homeFolderKey
         7: .line 102
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.file.Path languageLocation
        end local 0 // java.lang.String languageId
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    8     0           languageId  Ljava/lang/String;
            0    8     1     languageLocation  Ljava/nio/file/Path;
            2    7     2        homeFolderKey  Ljava/lang/String;
            5    7     3  legacyHomeFolderKey  Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      languageId        
      languageLocation  

  private static void setToolHomeProperty(java.lang.String, java.nio.file.Path);
    descriptor: (Ljava/lang/String;Ljava/nio/file/Path;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.lang.String toolId
        start local 1 // java.nio.file.Path toolLocation
         0: .line 105
            aload 1 /* toolLocation */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 7
         1: .line 106
            new java.lang.StringBuilder
            dup
            ldc "org.graalvm.tool."
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* toolId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ".home"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 2 /* homeFolderKey */
        start local 2 // java.lang.String homeFolderKey
         2: .line 107
            aload 2 /* homeFolderKey */
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            ifnonnull 4
         3: .line 108
            aload 2 /* homeFolderKey */
            aload 1 /* toolLocation */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
         4: .line 110
      StackMap locals: java.lang.String
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* toolId */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ".home"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* legacyHomeFolderKey */
        start local 3 // java.lang.String legacyHomeFolderKey
         5: .line 111
            aload 3 /* legacyHomeFolderKey */
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            ifnonnull 7
         6: .line 112
            aload 3 /* legacyHomeFolderKey */
            aload 1 /* toolLocation */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            invokestatic java.lang.System.setProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            pop
        end local 3 // java.lang.String legacyHomeFolderKey
        end local 2 // java.lang.String homeFolderKey
         7: .line 115
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.file.Path toolLocation
        end local 0 // java.lang.String toolId
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    8     0               toolId  Ljava/lang/String;
            0    8     1         toolLocation  Ljava/nio/file/Path;
            2    7     2        homeFolderKey  Ljava/lang/String;
            5    7     3  legacyHomeFolderKey  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      toolId        
      toolLocation  

  private static java.util.List<java.net.URL> collectClassPath(org.graalvm.home.HomeFinder);
    descriptor: (Lorg/graalvm/home/HomeFinder;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=1
        start local 0 // org.graalvm.home.HomeFinder homeFinder
         0: .line 118
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* classPath */
        start local 1 // java.util.List classPath
         1: .line 119
            aload 0 /* homeFinder */
            invokevirtual org.graalvm.home.HomeFinder.getLanguageHomes:()Ljava/util/Map;
            aload 1 /* classPath */
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.collectLanguageJars:(Ljava/util/Map;Ljava/util/List;)V
         2: .line 120
            aload 0 /* homeFinder */
            invokevirtual org.graalvm.home.HomeFinder.getToolHomes:()Ljava/util/Map;
            aload 1 /* classPath */
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.collectLanguageJars:(Ljava/util/Map;Ljava/util/List;)V
         3: .line 122
            ldc "truffle.class.path.append"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* append */
        start local 2 // java.lang.String append
         4: .line 123
            aload 2 /* append */
            ifnull 11
         5: .line 124
            aload 2 /* append */
            ldc "path.separator"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 3 /* files */
        start local 3 // java.lang.String[] files
         6: .line 125
            aload 3 /* files */
            dup
            astore 7
            arraylength
            istore 6
            iconst_0
            istore 5
            goto 10
      StackMap locals: org.graalvm.home.HomeFinder java.util.List java.lang.String java.lang.String[] top int int java.lang.String[]
      StackMap stack:
         7: aload 7
            iload 5
            aaload
            astore 4 /* file */
        start local 4 // java.lang.String file
         8: .line 126
            aload 1 /* classPath */
            aload 4 /* file */
            iconst_0
            anewarray java.lang.String
            invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.addJarOrDir:(Ljava/util/List;Ljava/nio/file/Path;)V
        end local 4 // java.lang.String file
         9: .line 125
            iinc 5 1
      StackMap locals:
      StackMap stack:
        10: iload 5
            iload 6
            if_icmplt 7
        end local 3 // java.lang.String[] files
        11: .line 129
      StackMap locals: org.graalvm.home.HomeFinder java.util.List java.lang.String
      StackMap stack:
            getstatic com.oracle.graalvm.locator.GraalVMLocator.LOCATOR_TRACE:Z
            ifeq 18
        12: .line 130
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            astore 3 /* out */
        start local 3 // java.io.PrintStream out
        13: .line 131
            aload 3 /* out */
            ldc "Setting up Truffle GuestLanguageTools classpath:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        14: .line 132
            aload 1 /* classPath */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 17
      StackMap locals: org.graalvm.home.HomeFinder java.util.List java.lang.String java.io.PrintStream top java.util.Iterator
      StackMap stack:
        15: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.URL
            astore 4 /* url */
        start local 4 // java.net.URL url
        16: .line 133
            aload 3 /* out */
            aload 4 /* url */
            invokevirtual java.io.PrintStream.println:(Ljava/lang/Object;)V
        end local 4 // java.net.URL url
        17: .line 132
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 15
        end local 3 // java.io.PrintStream out
        18: .line 136
      StackMap locals: org.graalvm.home.HomeFinder java.util.List java.lang.String
      StackMap stack:
            aload 1 /* classPath */
            areturn
        end local 2 // java.lang.String append
        end local 1 // java.util.List classPath
        end local 0 // org.graalvm.home.HomeFinder homeFinder
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   19     0  homeFinder  Lorg/graalvm/home/HomeFinder;
            1   19     1   classPath  Ljava/util/List<Ljava/net/URL;>;
            4   19     2      append  Ljava/lang/String;
            6   11     3       files  [Ljava/lang/String;
            8    9     4        file  Ljava/lang/String;
           13   18     3         out  Ljava/io/PrintStream;
           16   17     4         url  Ljava/net/URL;
    Signature: (Lorg/graalvm/home/HomeFinder;)Ljava/util/List<Ljava/net/URL;>;
    MethodParameters:
            Name  Flags
      homeFinder  

  public static java.lang.ClassLoader getLanguagesLoader();
    descriptor: ()Ljava/lang/ClassLoader;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=0
         0: .line 140
            getstatic com.oracle.graalvm.locator.GraalVMLocator.loader:Ljava/net/URLClassLoader;
            ifnonnull 8
         1: .line 141
            invokestatic org.graalvm.home.HomeFinder.getInstance:()Lorg/graalvm/home/HomeFinder;
            astore 0 /* homeFinder */
        start local 0 // org.graalvm.home.HomeFinder homeFinder
         2: .line 142
            aload 0 /* homeFinder */
            ifnonnull 4
         3: .line 143
            new java.lang.IllegalStateException
            dup
            ldc "No HomeFinder instance."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 145
      StackMap locals: org.graalvm.home.HomeFinder
      StackMap stack:
            aload 0 /* homeFinder */
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.setGraalVMProperties:(Lorg/graalvm/home/HomeFinder;)V
         5: .line 146
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifne 8
         6: .line 147
            aload 0 /* homeFinder */
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.collectClassPath:(Lorg/graalvm/home/HomeFinder;)Ljava/util/List;
            astore 1 /* classPath */
        start local 1 // java.util.List classPath
         7: .line 148
            new com.oracle.graalvm.locator.GraalVMLocator$GuestLangToolsLoader
            dup
            aload 1 /* classPath */
            iconst_0
            anewarray java.net.URL
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.net.URL[]
            ldc Lcom/oracle/graalvm/locator/GraalVMLocator;
            invokestatic com.oracle.graalvm.locator.JDKServices.getLocatorBaseClassLoader:(Ljava/lang/Class;)Ljava/lang/ClassLoader;
            invokespecial com.oracle.graalvm.locator.GraalVMLocator$GuestLangToolsLoader.<init>:([Ljava/net/URL;Ljava/lang/ClassLoader;)V
            putstatic com.oracle.graalvm.locator.GraalVMLocator.loader:Ljava/net/URLClassLoader;
        end local 1 // java.util.List classPath
        end local 0 // org.graalvm.home.HomeFinder homeFinder
         8: .line 151
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.graalvm.locator.GraalVMLocator.loader:Ljava/net/URLClassLoader;
            areturn
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            2    8     0  homeFinder  Lorg/graalvm/home/HomeFinder;
            7    8     1   classPath  Ljava/util/List<Ljava/net/URL;>;

  private static void collectLanguageJars(java.util.Map<java.lang.String, java.nio.file.Path>, java.util.List<java.net.URL>);
    descriptor: (Ljava/util/Map;Ljava/util/List;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=10, args_size=2
        start local 0 // java.util.Map homes
        start local 1 // java.util.List classPath
         0: .line 163
            aload 0 /* homes */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 19
      StackMap locals: java.util.Map java.util.List top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 2 /* languageHome */
        start local 2 // java.util.Map$Entry languageHome
         2: .line 164
            aload 2 /* languageHome */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 4 /* languageLocation */
        start local 4 // java.nio.file.Path languageLocation
         3: .line 165
            aload 4 /* languageLocation */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 18
         4: .line 166
            aconst_null
            astore 5
            aconst_null
            astore 6
         5: aload 4 /* languageLocation */
            invokestatic java.nio.file.Files.newDirectoryStream:(Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream;
            astore 7 /* dirStream */
        start local 7 // java.nio.file.DirectoryStream dirStream
         6: .line 167
            aload 7 /* dirStream */
            invokeinterface java.nio.file.DirectoryStream.iterator:()Ljava/util/Iterator;
            astore 9
            goto 9
      StackMap locals: java.util.Map java.util.List java.util.Map$Entry java.util.Iterator java.nio.file.Path java.lang.Throwable java.lang.Throwable java.nio.file.DirectoryStream top java.util.Iterator
      StackMap stack:
         7: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.nio.file.Path
            astore 8 /* file */
        start local 8 // java.nio.file.Path file
         8: .line 168
            aload 1 /* classPath */
            aload 8 /* file */
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.addJar:(Ljava/util/List;Ljava/nio/file/Path;)V
        end local 8 // java.nio.file.Path file
         9: .line 167
      StackMap locals:
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        10: .line 170
            aload 7 /* dirStream */
            ifnull 19
            aload 7 /* dirStream */
            invokeinterface java.nio.file.DirectoryStream.close:()V
            goto 19
      StackMap locals: java.util.Map java.util.List java.util.Map$Entry java.util.Iterator java.nio.file.Path java.lang.Throwable java.lang.Throwable java.nio.file.DirectoryStream
      StackMap stack: java.lang.Throwable
        11: astore 5
            aload 7 /* dirStream */
            ifnull 12
            aload 7 /* dirStream */
            invokeinterface java.nio.file.DirectoryStream.close:()V
        end local 7 // java.nio.file.DirectoryStream dirStream
      StackMap locals:
      StackMap stack:
        12: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 6
            aload 5
            ifnonnull 14
            aload 6
            astore 5
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 5
            aload 6
            if_acmpeq 15
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 5
            athrow
      StackMap locals: java.util.Map java.util.List java.util.Map$Entry java.util.Iterator java.nio.file.Path
      StackMap stack: java.io.IOException
        16: astore 5 /* ioe */
        start local 5 // java.io.IOException ioe
        17: .line 171
            new java.lang.RuntimeException
            dup
            aload 5 /* ioe */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException ioe
        18: .line 174
      StackMap locals:
      StackMap stack:
            aload 1 /* classPath */
            aload 4 /* languageLocation */
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.addJar:(Ljava/util/List;Ljava/nio/file/Path;)V
        end local 4 // java.nio.file.Path languageLocation
        end local 2 // java.util.Map$Entry languageHome
        19: .line 163
      StackMap locals: java.util.Map java.util.List top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        20: .line 177
            return
        end local 1 // java.util.List classPath
        end local 0 // java.util.Map homes
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   21     0             homes  Ljava/util/Map<Ljava/lang/String;Ljava/nio/file/Path;>;
            0   21     1         classPath  Ljava/util/List<Ljava/net/URL;>;
            2   19     2      languageHome  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/nio/file/Path;>;
            3   19     4  languageLocation  Ljava/nio/file/Path;
            6   12     7         dirStream  Ljava/nio/file/DirectoryStream<Ljava/nio/file/Path;>;
            8    9     8              file  Ljava/nio/file/Path;
           17   18     5               ioe  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           6    10      11  any
           5    13      13  any
           4    16      16  Class java.io.IOException
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/nio/file/Path;>;Ljava/util/List<Ljava/net/URL;>;)V
    MethodParameters:
           Name  Flags
      homes      
      classPath  

  private static void addJarOrDir(java.util.List<java.net.URL>, java.nio.file.Path);
    descriptor: (Ljava/util/List;Ljava/nio/file/Path;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.util.List classPath
        start local 1 // java.nio.file.Path file
         0: .line 180
            aload 1 /* file */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.isDirectory:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 5
         1: .line 182
            aload 0 /* classPath */
            aload 1 /* file */
            invokeinterface java.nio.file.Path.toUri:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 183
            goto 6
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
         3: astore 2 /* ex */
        start local 2 // java.net.MalformedURLException ex
         4: .line 184
            new java.lang.IllegalStateException
            dup
            aload 2 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.net.MalformedURLException ex
         5: .line 187
      StackMap locals:
      StackMap stack:
            aload 0 /* classPath */
            aload 1 /* file */
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.addJar:(Ljava/util/List;Ljava/nio/file/Path;)V
         6: .line 189
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.nio.file.Path file
        end local 0 // java.util.List classPath
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0  classPath  Ljava/util/List<Ljava/net/URL;>;
            0    7     1       file  Ljava/nio/file/Path;
            4    5     2         ex  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.net.MalformedURLException
    Signature: (Ljava/util/List<Ljava/net/URL;>;Ljava/nio/file/Path;)V
    MethodParameters:
           Name  Flags
      classPath  
      file       

  private static void addJar(java.util.List<java.net.URL>, java.nio.file.Path);
    descriptor: (Ljava/util/List;Ljava/nio/file/Path;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.util.List classPath
        start local 1 // java.nio.file.Path jar
         0: .line 192
            aload 1 /* jar */
            invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
            astore 2 /* filename */
        start local 2 // java.nio.file.Path filename
         1: .line 193
            aload 2 /* filename */
            ifnull 6
            aload 2 /* filename */
            invokeinterface java.nio.file.Path.toString:()Ljava/lang/String;
            ldc ".jar"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 6
            aload 1 /* jar */
            iconst_0
            anewarray java.nio.file.LinkOption
            invokestatic java.nio.file.Files.exists:(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
            ifeq 6
         2: .line 195
            aload 0 /* classPath */
            aload 1 /* jar */
            invokeinterface java.nio.file.Path.toUri:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 196
            goto 6
      StackMap locals: java.util.List java.nio.file.Path java.nio.file.Path
      StackMap stack: java.net.MalformedURLException
         4: astore 3 /* ex */
        start local 3 // java.net.MalformedURLException ex
         5: .line 197
            new java.lang.IllegalStateException
            dup
            aload 3 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.net.MalformedURLException ex
         6: .line 200
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.nio.file.Path filename
        end local 1 // java.nio.file.Path jar
        end local 0 // java.util.List classPath
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0  classPath  Ljava/util/List<Ljava/net/URL;>;
            0    7     1        jar  Ljava/nio/file/Path;
            1    7     2   filename  Ljava/nio/file/Path;
            5    6     3         ex  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           2     3       4  Class java.net.MalformedURLException
    Signature: (Ljava/util/List<Ljava/net/URL;>;Ljava/nio/file/Path;)V
    MethodParameters:
           Name  Flags
      classPath  
      jar        

  public void locate(com.oracle.truffle.api.impl.TruffleLocator$Response);
    descriptor: (Lcom/oracle/truffle/api/impl/TruffleLocator$Response;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.graalvm.locator.GraalVMLocator this
        start local 1 // com.oracle.truffle.api.impl.TruffleLocator$Response response
         0: .line 204
            ldc "true"
            ldc "graalvm.locatorDisabled"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 4
         1: .line 205
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.getLanguagesLoader:()Ljava/lang/ClassLoader;
            astore 2 /* cl */
        start local 2 // java.lang.ClassLoader cl
         2: .line 206
            aload 2 /* cl */
            ifnull 4
         3: .line 207
            aload 1 /* response */
            aload 2 /* cl */
            invokevirtual com.oracle.truffle.api.impl.TruffleLocator$Response.registerClassLoader:(Ljava/lang/ClassLoader;)V
        end local 2 // java.lang.ClassLoader cl
         4: .line 210
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.api.impl.TruffleLocator$Response response
        end local 0 // com.oracle.graalvm.locator.GraalVMLocator this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lcom/oracle/graalvm/locator/GraalVMLocator;
            0    5     1  response  Lcom/oracle/truffle/api/impl/TruffleLocator$Response;
            2    4     2        cl  Ljava/lang/ClassLoader;
    MethodParameters:
          Name  Flags
      response  

  public java.lang.ClassLoader call();
    descriptor: ()Ljava/lang/ClassLoader;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.graalvm.locator.GraalVMLocator this
         0: .line 214
            invokestatic com.oracle.graalvm.locator.GraalVMLocator.getLanguagesLoader:()Ljava/lang/ClassLoader;
            areturn
        end local 0 // com.oracle.graalvm.locator.GraalVMLocator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/graalvm/locator/GraalVMLocator;
    Exceptions:
      throws java.lang.Exception

  public java.lang.Object call();
    descriptor: ()Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.oracle.graalvm.locator.GraalVMLocator.call:()Ljava/lang/ClassLoader;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
Signature: Lcom/oracle/truffle/api/impl/TruffleLocator;Ljava/util/concurrent/Callable<Ljava/lang/ClassLoader;>;
SourceFile: "GraalVMLocator.java"
NestMembers:
  com.oracle.graalvm.locator.GraalVMLocator$GuestLangToolsLoader
InnerClasses:
  private GuestLangToolsLoader = com.oracle.graalvm.locator.GraalVMLocator$GuestLangToolsLoader of com.oracle.graalvm.locator.GraalVMLocator
  public final Response = com.oracle.truffle.api.impl.TruffleLocator$Response of com.oracle.truffle.api.impl.TruffleLocator
  public abstract Entry = java.util.Map$Entry of java.util.Map