final class com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader extends com.oracle.truffle.polyglot.LanguageCache$Loader
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader
  super_class: com.oracle.truffle.polyglot.LanguageCache$Loader
{
  static final com.oracle.truffle.polyglot.LanguageCache$Loader INSTANCE;
    descriptor: Lcom/oracle/truffle/polyglot/LanguageCache$Loader;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 815
            new com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader
            dup
            invokespecial com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader.<init>:()V
            putstatic com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader.INSTANCE:Lcom/oracle/truffle/polyglot/LanguageCache$Loader;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader this
         0: .line 817
            aload 0 /* this */
            invokespecial com.oracle.truffle.polyglot.LanguageCache$Loader.<init>:()V
         1: .line 818
            return
        end local 0 // com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/polyglot/LanguageCache$Loader$ServicesLoader;

  public void loadImpl(java.lang.ClassLoader, java.util.Collection<? super com.oracle.truffle.polyglot.LanguageCache>);
    descriptor: (Ljava/lang/ClassLoader;Ljava/util/Collection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=17, locals=21, args_size=3
        start local 0 // com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader this
        start local 1 // java.lang.ClassLoader loader
        start local 2 // java.util.Collection into
         0: .line 822
            aload 1 /* loader */
            invokestatic com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader.exportTruffle:(Ljava/lang/ClassLoader;)V
         1: .line 823
            ldc Lcom/oracle/truffle/api/TruffleLanguage$Provider;
            aload 1 /* loader */
            invokestatic java.util.ServiceLoader.load:(Ljava/lang/Class;Ljava/lang/ClassLoader;)Ljava/util/ServiceLoader;
            invokevirtual java.util.ServiceLoader.iterator:()Ljava/util/Iterator;
            astore 4
            goto 45
      StackMap locals: com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader java.lang.ClassLoader java.util.Collection top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.TruffleLanguage$Provider
            astore 3 /* provider */
        start local 3 // com.oracle.truffle.api.TruffleLanguage$Provider provider
         3: .line 824
            aload 3 /* provider */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc Lcom/oracle/truffle/api/TruffleLanguage$Registration;
            invokevirtual java.lang.Class.getAnnotation:(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
            checkcast com.oracle.truffle.api.TruffleLanguage$Registration
            astore 5 /* reg */
        start local 5 // com.oracle.truffle.api.TruffleLanguage$Registration reg
         4: .line 825
            aload 5 /* reg */
            ifnonnull 8
         5: .line 826
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            astore 6 /* out */
        start local 6 // java.io.PrintStream out
         6: .line 827
            aload 6 /* out */
            new java.lang.StringBuilder
            dup
            ldc "Provider "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* provider */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is missing @Registration annotation."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         7: .line 828
            goto 45
        end local 6 // java.io.PrintStream out
         8: .line 830
      StackMap locals: com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader java.lang.ClassLoader java.util.Collection com.oracle.truffle.api.TruffleLanguage$Provider java.util.Iterator com.oracle.truffle.api.TruffleLanguage$Registration
      StackMap stack:
            aload 3 /* provider */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Provider.getLanguageClassName:()Ljava/lang/String;
            astore 6 /* className */
        start local 6 // java.lang.String className
         9: .line 831
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.name:()Ljava/lang/String;
            astore 7 /* name */
        start local 7 // java.lang.String name
        10: .line 832
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.id:()Ljava/lang/String;
            astore 8 /* id */
        start local 8 // java.lang.String id
        11: .line 833
            aload 8 /* id */
            ifnull 12
            aload 8 /* id */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 13
        12: .line 834
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
            aload 7 /* name */
            aload 6 /* className */
            invokestatic com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader.defaultId:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            astore 8 /* id */
        13: .line 836
      StackMap locals:
      StackMap stack:
            aload 8 /* id */
            invokestatic com.oracle.truffle.polyglot.LanguageCache.getLanguageHomeImpl:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* languageHome */
        start local 9 // java.lang.String languageHome
        14: .line 837
            aload 9 /* languageHome */
            ifnonnull 20
        15: .line 838
            aload 3 /* provider */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            new java.lang.StringBuilder
            dup
            aload 6 /* className */
            bipush 46
            bipush 47
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            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;
            invokevirtual java.lang.ClassLoader.getResource:(Ljava/lang/String;)Ljava/net/URL;
            astore 10 /* url */
        start local 10 // java.net.URL url
        16: .line 839
            aload 10 /* url */
            ifnull 20
        17: .line 841
            aload 8 /* id */
            aload 10 /* url */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            invokestatic com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader.getLanguageHomeFromURLConnection:(Ljava/lang/String;Ljava/net/URLConnection;)Ljava/lang/String;
            astore 9 /* languageHome */
        18: .line 842
            goto 20
      StackMap locals: com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader java.lang.ClassLoader java.util.Collection com.oracle.truffle.api.TruffleLanguage$Provider java.util.Iterator com.oracle.truffle.api.TruffleLanguage$Registration java.lang.String java.lang.String java.lang.String java.lang.String java.net.URL
      StackMap stack: java.io.IOException
        19: pop
        end local 10 // java.net.URL url
        20: .line 846
      StackMap locals:
      StackMap stack:
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.implementationName:()Ljava/lang/String;
            astore 10 /* implementationName */
        start local 10 // java.lang.String implementationName
        21: .line 847
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.version:()Ljava/lang/String;
            astore 11 /* version */
        start local 11 // java.lang.String version
        22: .line 848
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            astore 12 /* characterMimes */
        start local 12 // java.util.TreeSet characterMimes
        23: .line 849
            aload 12 /* characterMimes */
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.characterMimeTypes:()[Ljava/lang/String;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        24: .line 850
            aload 12 /* characterMimes */
            invokevirtual java.util.TreeSet.isEmpty:()Z
            ifeq 26
        25: .line 851
            aload 12 /* characterMimes */
            aload 5 /* reg */
            invokestatic com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader.getMimeTypesDepecated:(Lcom/oracle/truffle/api/TruffleLanguage$Registration;)[Ljava/lang/String;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        26: .line 853
      StackMap locals: java.lang.String java.lang.String java.util.TreeSet
      StackMap stack:
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            astore 13 /* byteMimeTypes */
        start local 13 // java.util.TreeSet byteMimeTypes
        27: .line 854
            aload 13 /* byteMimeTypes */
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.byteMimeTypes:()[Ljava/lang/String;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        28: .line 855
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.defaultMimeType:()Ljava/lang/String;
            astore 14 /* defaultMime */
        start local 14 // java.lang.String defaultMime
        29: .line 856
            aload 14 /* defaultMime */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 31
        30: .line 857
            aconst_null
            astore 14 /* defaultMime */
        31: .line 859
      StackMap locals: java.util.TreeSet java.lang.String
      StackMap stack:
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            astore 15 /* dependentLanguages */
        start local 15 // java.util.TreeSet dependentLanguages
        32: .line 860
            aload 15 /* dependentLanguages */
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.dependentLanguages:()[Ljava/lang/String;
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
        33: .line 861
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.interactive:()Z
            istore 16 /* interactive */
        start local 16 // boolean interactive
        34: .line 862
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.internal:()Z
            istore 17 /* internal */
        start local 17 // boolean internal
        35: .line 863
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            astore 18 /* servicesClassNames */
        start local 18 // java.util.Set servicesClassNames
        36: .line 864
            aload 3 /* provider */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Provider.getServicesClassNames:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 20
            goto 39
      StackMap locals: com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader java.lang.ClassLoader java.util.Collection com.oracle.truffle.api.TruffleLanguage$Provider java.util.Iterator com.oracle.truffle.api.TruffleLanguage$Registration java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.util.TreeSet java.util.TreeSet java.lang.String java.util.TreeSet int int java.util.Set top java.util.Iterator
      StackMap stack:
        37: aload 20
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 19 /* service */
        start local 19 // java.lang.String service
        38: .line 865
            aload 18 /* servicesClassNames */
            aload 19 /* service */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 19 // java.lang.String service
        39: .line 864
      StackMap locals:
      StackMap stack:
            aload 20
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 37
        40: .line 867
            new com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader$ServiceLoaderLanguageReflection
            dup
            aload 3 /* provider */
            aload 5 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.contextPolicy:()Lcom/oracle/truffle/api/TruffleLanguage$ContextPolicy;
            invokespecial com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader$ServiceLoaderLanguageReflection.<init>:(Lcom/oracle/truffle/api/TruffleLanguage$Provider;Lcom/oracle/truffle/api/TruffleLanguage$ContextPolicy;)V
            astore 19 /* reflection */
        start local 19 // com.oracle.truffle.polyglot.LanguageCache$LanguageReflection reflection
        41: .line 868
            aload 2 /* into */
            new com.oracle.truffle.polyglot.LanguageCache
            dup
            aload 8 /* id */
            aload 7 /* name */
            aload 10 /* implementationName */
            aload 11 /* version */
            aload 6 /* className */
            aload 9 /* languageHome */
        42: .line 869
            aload 12 /* characterMimes */
            aload 13 /* byteMimeTypes */
            aload 14 /* defaultMime */
            aload 15 /* dependentLanguages */
            iload 16 /* interactive */
            iload 17 /* internal */
        43: .line 870
            aload 18 /* servicesClassNames */
            aload 19 /* reflection */
            invokespecial com.oracle.truffle.polyglot.LanguageCache.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;Ljava/util/Set;Ljava/lang/String;Ljava/util/Set;ZZLjava/util/Set;Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;)V
        44: .line 868
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        end local 19 // com.oracle.truffle.polyglot.LanguageCache$LanguageReflection reflection
        end local 18 // java.util.Set servicesClassNames
        end local 17 // boolean internal
        end local 16 // boolean interactive
        end local 15 // java.util.TreeSet dependentLanguages
        end local 14 // java.lang.String defaultMime
        end local 13 // java.util.TreeSet byteMimeTypes
        end local 12 // java.util.TreeSet characterMimes
        end local 11 // java.lang.String version
        end local 10 // java.lang.String implementationName
        end local 9 // java.lang.String languageHome
        end local 8 // java.lang.String id
        end local 7 // java.lang.String name
        end local 6 // java.lang.String className
        end local 5 // com.oracle.truffle.api.TruffleLanguage$Registration reg
        end local 3 // com.oracle.truffle.api.TruffleLanguage$Provider provider
        45: .line 823
      StackMap locals: com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader java.lang.ClassLoader java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        46: .line 872
            return
        end local 2 // java.util.Collection into
        end local 1 // java.lang.ClassLoader loader
        end local 0 // com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   47     0                this  Lcom/oracle/truffle/polyglot/LanguageCache$Loader$ServicesLoader;
            0   47     1              loader  Ljava/lang/ClassLoader;
            0   47     2                into  Ljava/util/Collection<-Lcom/oracle/truffle/polyglot/LanguageCache;>;
            3   45     3            provider  Lcom/oracle/truffle/api/TruffleLanguage$Provider;
            4   45     5                 reg  Lcom/oracle/truffle/api/TruffleLanguage$Registration;
            6    8     6                 out  Ljava/io/PrintStream;
            9   45     6           className  Ljava/lang/String;
           10   45     7                name  Ljava/lang/String;
           11   45     8                  id  Ljava/lang/String;
           14   45     9        languageHome  Ljava/lang/String;
           16   20    10                 url  Ljava/net/URL;
           21   45    10  implementationName  Ljava/lang/String;
           22   45    11             version  Ljava/lang/String;
           23   45    12      characterMimes  Ljava/util/TreeSet<Ljava/lang/String;>;
           27   45    13       byteMimeTypes  Ljava/util/TreeSet<Ljava/lang/String;>;
           29   45    14         defaultMime  Ljava/lang/String;
           32   45    15  dependentLanguages  Ljava/util/TreeSet<Ljava/lang/String;>;
           34   45    16         interactive  Z
           35   45    17            internal  Z
           36   45    18  servicesClassNames  Ljava/util/Set<Ljava/lang/String;>;
           38   39    19             service  Ljava/lang/String;
           41   45    19          reflection  Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
      Exception table:
        from    to  target  type
          17    18      19  Class java.io.IOException
    Signature: (Ljava/lang/ClassLoader;Ljava/util/Collection<-Lcom/oracle/truffle/polyglot/LanguageCache;>;)V
    MethodParameters:
        Name  Flags
      loader  
      into    

  private static java.lang.String[] getMimeTypesDepecated(com.oracle.truffle.api.TruffleLanguage$Registration);
    descriptor: (Lcom/oracle/truffle/api/TruffleLanguage$Registration;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.TruffleLanguage$Registration reg
         0: .line 876
            aload 0 /* reg */
            invokeinterface com.oracle.truffle.api.TruffleLanguage$Registration.mimeType:()[Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.api.TruffleLanguage$Registration reg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   reg  Lcom/oracle/truffle/api/TruffleLanguage$Registration;
    MethodParameters:
      Name  Flags
      reg   
}
SourceFile: "LanguageCache.java"
NestHost: com.oracle.truffle.polyglot.LanguageCache
InnerClasses:
  public final ContextPolicy = com.oracle.truffle.api.TruffleLanguage$ContextPolicy of com.oracle.truffle.api.TruffleLanguage
  public abstract Provider = com.oracle.truffle.api.TruffleLanguage$Provider of com.oracle.truffle.api.TruffleLanguage
  public abstract Registration = com.oracle.truffle.api.TruffleLanguage$Registration of com.oracle.truffle.api.TruffleLanguage
  private abstract LanguageReflection = com.oracle.truffle.polyglot.LanguageCache$LanguageReflection of com.oracle.truffle.polyglot.LanguageCache
  private abstract Loader = com.oracle.truffle.polyglot.LanguageCache$Loader of com.oracle.truffle.polyglot.LanguageCache
  private final ServicesLoader = com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader of com.oracle.truffle.polyglot.LanguageCache$Loader
  private final ServiceLoaderLanguageReflection = com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader$ServiceLoaderLanguageReflection of com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader