final class com.oracle.truffle.polyglot.LanguageCache implements java.lang.Comparable<com.oracle.truffle.polyglot.LanguageCache>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.polyglot.LanguageCache
  super_class: java.lang.Object
{
  private static final java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> nativeImageCache;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;

  private static final java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> nativeImageMimes;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;

  private static final java.util.Map<java.util.Collection<com.oracle.truffle.polyglot.EngineAccessor$AbstractClassLoaderSupplier>, java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache>> runtimeCaches;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/util/Collection<Lcom/oracle/truffle/polyglot/EngineAccessor$AbstractClassLoaderSupplier;>;Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;>;

  private static volatile java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> runtimeMimes;
    descriptor: Ljava/util/Map;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
    Signature: Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;

  private final java.lang.String className;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<java.lang.String> mimeTypes;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.util.Set<java.lang.String> characterMimeTypes;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.lang.String defaultMimeType;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<java.lang.String> dependentLanguages;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final java.lang.String id;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String implementationName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String version;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean interactive;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean internal;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Set<java.lang.String> services;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Ljava/lang/String;>;

  private final com.oracle.truffle.polyglot.LanguageCache$LanguageReflection languageReflection;
    descriptor: Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 85
            ldc Lcom/oracle/truffle/polyglot/LanguageCache;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.polyglot.LanguageCache.$assertionsDisabled:Z
         3: .line 86
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifeq 4
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            goto 5
      StackMap locals:
      StackMap stack:
         4: aconst_null
      StackMap locals:
      StackMap stack: java.util.HashMap
         5: putstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
         6: .line 87
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifeq 7
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            goto 8
      StackMap locals:
      StackMap stack:
         7: aconst_null
      StackMap locals:
      StackMap stack: java.util.HashMap
         8: putstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageMimes:Ljava/util/Map;
         9: .line 88
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic com.oracle.truffle.polyglot.LanguageCache.runtimeCaches:Ljava/util/Map;
        10: .line 89
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.util.Set<java.lang.String>, java.util.Set<java.lang.String>, java.lang.String, java.util.Set<java.lang.String>, boolean, boolean, java.util.Set<java.lang.String>, com.oracle.truffle.polyglot.LanguageCache$LanguageReflection);
    descriptor: (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
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=15, args_size=15
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
        start local 1 // java.lang.String id
        start local 2 // java.lang.String name
        start local 3 // java.lang.String implementationName
        start local 4 // java.lang.String version
        start local 5 // java.lang.String className
        start local 6 // java.lang.String languageHome
        start local 7 // java.util.Set characterMimeTypes
        start local 8 // java.util.Set byteMimeTypes
        start local 9 // java.lang.String defaultMimeType
        start local 10 // java.util.Set dependentLanguages
        start local 11 // boolean interactive
        start local 12 // boolean internal
        start local 13 // java.util.Set services
        start local 14 // com.oracle.truffle.polyglot.LanguageCache$LanguageReflection languageReflection
         0: .line 110
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 114
            aload 0 /* this */
            aload 14 /* languageReflection */
            putfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
         2: .line 115
            aload 0 /* this */
            aload 5 /* className */
            putfield com.oracle.truffle.polyglot.LanguageCache.className:Ljava/lang/String;
         3: .line 116
            aload 0 /* this */
            aload 2 /* name */
            putfield com.oracle.truffle.polyglot.LanguageCache.name:Ljava/lang/String;
         4: .line 117
            aload 0 /* this */
            aload 3 /* implementationName */
            putfield com.oracle.truffle.polyglot.LanguageCache.implementationName:Ljava/lang/String;
         5: .line 118
            aload 0 /* this */
            aload 4 /* version */
            putfield com.oracle.truffle.polyglot.LanguageCache.version:Ljava/lang/String;
         6: .line 119
            aload 0 /* this */
            aload 7 /* characterMimeTypes */
            putfield com.oracle.truffle.polyglot.LanguageCache.characterMimeTypes:Ljava/util/Set;
         7: .line 120
            aload 0 /* this */
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            putfield com.oracle.truffle.polyglot.LanguageCache.mimeTypes:Ljava/util/Set;
         8: .line 121
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.mimeTypes:Ljava/util/Set;
            aload 7 /* characterMimeTypes */
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
         9: .line 122
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.mimeTypes:Ljava/util/Set;
            aload 8 /* byteMimeTypes */
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        10: .line 123
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.mimeTypes:Ljava/util/Set;
            invokeinterface java.util.Set.size:()I
            iconst_1
            if_icmpne 11
            aload 9 /* defaultMimeType */
            ifnonnull 11
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.mimeTypes:Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            goto 12
      StackMap locals: com.oracle.truffle.polyglot.LanguageCache java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.util.Set java.util.Set java.lang.String java.util.Set int int java.util.Set com.oracle.truffle.polyglot.LanguageCache$LanguageReflection
      StackMap stack: com.oracle.truffle.polyglot.LanguageCache
        11: aload 9 /* defaultMimeType */
      StackMap locals: com.oracle.truffle.polyglot.LanguageCache java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.lang.String java.util.Set java.util.Set java.lang.String java.util.Set int int java.util.Set com.oracle.truffle.polyglot.LanguageCache$LanguageReflection
      StackMap stack: com.oracle.truffle.polyglot.LanguageCache java.lang.String
        12: putfield com.oracle.truffle.polyglot.LanguageCache.defaultMimeType:Ljava/lang/String;
        13: .line 124
            aload 0 /* this */
            aload 10 /* dependentLanguages */
            putfield com.oracle.truffle.polyglot.LanguageCache.dependentLanguages:Ljava/util/Set;
        14: .line 125
            aload 0 /* this */
            aload 1 /* id */
            putfield com.oracle.truffle.polyglot.LanguageCache.id:Ljava/lang/String;
        15: .line 126
            aload 0 /* this */
            iload 11 /* interactive */
            putfield com.oracle.truffle.polyglot.LanguageCache.interactive:Z
        16: .line 127
            aload 0 /* this */
            iload 12 /* internal */
            putfield com.oracle.truffle.polyglot.LanguageCache.internal:Z
        17: .line 128
            aload 0 /* this */
            aload 6 /* languageHome */
            putfield com.oracle.truffle.polyglot.LanguageCache.languageHome:Ljava/lang/String;
        18: .line 129
            aload 0 /* this */
            aload 13 /* services */
            putfield com.oracle.truffle.polyglot.LanguageCache.services:Ljava/util/Set;
        19: .line 131
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifeq 21
        20: .line 132
            aload 14 /* languageReflection */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.aotInitializeAtBuildTime:()Ljava/lang/Class;
            pop
        21: .line 134
      StackMap locals:
      StackMap stack:
            return
        end local 14 // com.oracle.truffle.polyglot.LanguageCache$LanguageReflection languageReflection
        end local 13 // java.util.Set services
        end local 12 // boolean internal
        end local 11 // boolean interactive
        end local 10 // java.util.Set dependentLanguages
        end local 9 // java.lang.String defaultMimeType
        end local 8 // java.util.Set byteMimeTypes
        end local 7 // java.util.Set characterMimeTypes
        end local 6 // java.lang.String languageHome
        end local 5 // java.lang.String className
        end local 4 // java.lang.String version
        end local 3 // java.lang.String implementationName
        end local 2 // java.lang.String name
        end local 1 // java.lang.String id
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   22     0                this  Lcom/oracle/truffle/polyglot/LanguageCache;
            0   22     1                  id  Ljava/lang/String;
            0   22     2                name  Ljava/lang/String;
            0   22     3  implementationName  Ljava/lang/String;
            0   22     4             version  Ljava/lang/String;
            0   22     5           className  Ljava/lang/String;
            0   22     6        languageHome  Ljava/lang/String;
            0   22     7  characterMimeTypes  Ljava/util/Set<Ljava/lang/String;>;
            0   22     8       byteMimeTypes  Ljava/util/Set<Ljava/lang/String;>;
            0   22     9     defaultMimeType  Ljava/lang/String;
            0   22    10  dependentLanguages  Ljava/util/Set<Ljava/lang/String;>;
            0   22    11         interactive  Z
            0   22    12            internal  Z
            0   22    13            services  Ljava/util/Set<Ljava/lang/String;>;
            0   22    14  languageReflection  Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
    Signature: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;Ljava/util/Set<Ljava/lang/String;>;Ljava/lang/String;Ljava/util/Set<Ljava/lang/String;>;ZZLjava/util/Set<Ljava/lang/String;>;Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;)V
    MethodParameters:
                    Name  Flags
      id                  
      name                
      implementationName  
      version             
      className           
      languageHome        
      characterMimeTypes  
      byteMimeTypes       
      defaultMimeType     
      dependentLanguages  
      interactive         
      internal            
      services            
      languageReflection  

  static com.oracle.truffle.polyglot.LanguageCache createHostLanguageCache(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Lcom/oracle/truffle/polyglot/LanguageCache;
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=18, locals=3, args_size=1
        start local 0 // java.lang.String[] services
         0: .line 137
            new com.oracle.truffle.polyglot.HostLanguage
            dup
            invokespecial com.oracle.truffle.polyglot.HostLanguage.<init>:()V
            astore 1 /* languageInstance */
        start local 1 // com.oracle.truffle.api.TruffleLanguage languageInstance
         1: .line 139
            aload 0 /* services */
            arraylength
            ifne 4
         2: .line 140
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            astore 2 /* servicesClassNames */
        start local 2 // java.util.Set servicesClassNames
         3: .line 141
            goto 7
        end local 2 // java.util.Set servicesClassNames
         4: .line 142
      StackMap locals: com.oracle.truffle.api.TruffleLanguage
      StackMap stack:
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            astore 2 /* servicesClassNames */
        start local 2 // java.util.Set servicesClassNames
         5: .line 143
            aload 2 /* servicesClassNames */
            aload 0 /* services */
            invokestatic java.util.Collections.addAll:(Ljava/util/Collection;[Ljava/lang/Object;)Z
            pop
         6: .line 144
            aload 2 /* servicesClassNames */
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            astore 2 /* servicesClassNames */
         7: .line 146
      StackMap locals: java.util.Set
      StackMap stack:
            new com.oracle.truffle.polyglot.LanguageCache
            dup
         8: .line 147
            ldc "host"
         9: .line 148
            ldc "Host"
        10: .line 149
            ldc "Host"
        11: .line 150
            ldc "java.version"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
        12: .line 151
            aload 1 /* languageInstance */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
        13: .line 152
            aconst_null
        14: .line 153
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
        15: .line 154
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
        16: .line 155
            aconst_null
        17: .line 156
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
        18: .line 157
            iconst_0
            iconst_0
            aload 2 /* servicesClassNames */
        19: .line 158
            new com.oracle.truffle.polyglot.HostLanguage
            dup
            invokespecial com.oracle.truffle.polyglot.HostLanguage.<init>:()V
            getstatic com.oracle.truffle.api.TruffleLanguage$ContextPolicy.SHARED:Lcom/oracle/truffle/api/TruffleLanguage$ContextPolicy;
            iconst_0
            anewarray com.oracle.truffle.api.TruffleFile$FileTypeDetector
            invokestatic com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.forLanguageInstance:(Lcom/oracle/truffle/api/TruffleLanguage;Lcom/oracle/truffle/api/TruffleLanguage$ContextPolicy;[Lcom/oracle/truffle/api/TruffleFile$FileTypeDetector;)Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
        20: .line 146
            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
            areturn
        end local 2 // java.util.Set servicesClassNames
        end local 1 // com.oracle.truffle.api.TruffleLanguage languageInstance
        end local 0 // java.lang.String[] services
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   21     0            services  [Ljava/lang/String;
            1   21     1    languageInstance  Lcom/oracle/truffle/api/TruffleLanguage<*>;
            3    4     2  servicesClassNames  Ljava/util/Set<Ljava/lang/String;>;
            5   21     2  servicesClassNames  Ljava/util/Set<Ljava/lang/String;>;
    MethodParameters:
          Name  Flags
      services  

  static java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> languageMimes();
    descriptor: ()Ljava/util/Map;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 162
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifeq 2
         1: .line 163
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageMimes:Ljava/util/Map;
            areturn
         2: .line 165
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.LanguageCache.runtimeMimes:Ljava/util/Map;
            astore 0 /* cache */
        start local 0 // java.util.Map cache
         3: .line 166
            aload 0 /* cache */
            ifnonnull 12
         4: .line 167
            ldc Lcom/oracle/truffle/polyglot/LanguageCache;
            dup
            astore 1
            monitorenter
         5: .line 168
            getstatic com.oracle.truffle.polyglot.LanguageCache.runtimeMimes:Ljava/util/Map;
            astore 0 /* cache */
         6: .line 169
            aload 0 /* cache */
            ifnonnull 8
         7: .line 170
            invokestatic com.oracle.truffle.polyglot.LanguageCache.createMimes:()Ljava/util/Map;
            dup
            astore 0 /* cache */
            putstatic com.oracle.truffle.polyglot.LanguageCache.runtimeMimes:Ljava/util/Map;
         8: .line 167
      StackMap locals: java.util.Map java.lang.Class
      StackMap stack:
            aload 1
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 1
            monitorexit
        11: athrow
        12: .line 174
      StackMap locals:
      StackMap stack:
            aload 0 /* cache */
            areturn
        end local 0 // java.util.Map cache
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            3   13     0  cache  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
      Exception table:
        from    to  target  type
           5     9      10  any
          10    11      10  any
    Signature: ()Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;

  private static java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> createMimes();
    descriptor: ()Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=0
         0: .line 178
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            astore 0 /* mimes */
        start local 0 // java.util.Map mimes
         1: .line 179
            invokestatic com.oracle.truffle.polyglot.LanguageCache.languages:()Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 7
      StackMap locals: java.util.Map top java.util.Iterator
      StackMap stack:
         2: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.LanguageCache
            astore 1 /* cache */
        start local 1 // com.oracle.truffle.polyglot.LanguageCache cache
         3: .line 180
            aload 1 /* cache */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getMimeTypes:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: java.util.Map com.oracle.truffle.polyglot.LanguageCache java.util.Iterator top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* mime */
        start local 3 // java.lang.String mime
         5: .line 181
            aload 0 /* mimes */
            aload 3 /* mime */
            aload 1 /* cache */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 3 // java.lang.String mime
         6: .line 180
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        end local 1 // com.oracle.truffle.polyglot.LanguageCache cache
         7: .line 179
      StackMap locals: java.util.Map top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 184
            aload 0 /* mimes */
            areturn
        end local 0 // java.util.Map mimes
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            1    9     0  mimes  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
            3    7     1  cache  Lcom/oracle/truffle/polyglot/LanguageCache;
            5    6     3   mime  Ljava/lang/String;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;

  static java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> languages();
    descriptor: ()Ljava/util/Map;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 188
            invokestatic com.oracle.truffle.polyglot.EngineAccessor.locatorOrDefaultLoaders:()Ljava/util/List;
            invokestatic com.oracle.truffle.polyglot.LanguageCache.loadLanguages:(Ljava/util/List;)Ljava/util/Map;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: ()Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;

  private static java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> loadLanguages(java.util.List<com.oracle.truffle.polyglot.EngineAccessor$AbstractClassLoaderSupplier>);
    descriptor: (Ljava/util/List;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // java.util.List classLoaders
         0: .line 192
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifeq 2
         1: .line 193
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            areturn
         2: .line 195
      StackMap locals:
      StackMap stack:
            ldc Lcom/oracle/truffle/polyglot/LanguageCache;
            dup
            astore 1
            monitorenter
         3: .line 196
            getstatic com.oracle.truffle.polyglot.LanguageCache.runtimeCaches:Ljava/util/Map;
            aload 0 /* classLoaders */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 2 /* cache */
        start local 2 // java.util.Map cache
         4: .line 197
            aload 2 /* cache */
            ifnonnull 7
         5: .line 198
            aload 0 /* classLoaders */
            invokestatic com.oracle.truffle.polyglot.LanguageCache.createLanguages:(Ljava/util/List;)Ljava/util/Map;
            astore 2 /* cache */
         6: .line 199
            getstatic com.oracle.truffle.polyglot.LanguageCache.runtimeCaches:Ljava/util/Map;
            aload 0 /* classLoaders */
            aload 2 /* cache */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         7: .line 201
      StackMap locals: java.lang.Class java.util.Map
      StackMap stack:
            aload 2 /* cache */
            aload 1
            monitorexit
         8: areturn
        end local 2 // java.util.Map cache
         9: .line 195
      StackMap locals: java.util.List java.lang.Class
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        10: athrow
        end local 0 // java.util.List classLoaders
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0  classLoaders  Ljava/util/List<Lcom/oracle/truffle/polyglot/EngineAccessor$AbstractClassLoaderSupplier;>;
            4    9     2         cache  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
      Exception table:
        from    to  target  type
           3     8       9  any
           9    10       9  any
    Signature: (Ljava/util/List<Lcom/oracle/truffle/polyglot/EngineAccessor$AbstractClassLoaderSupplier;>;)Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
    MethodParameters:
              Name  Flags
      classLoaders  

  private static java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache> createLanguages(java.util.List<com.oracle.truffle.polyglot.EngineAccessor$AbstractClassLoaderSupplier>);
    descriptor: (Ljava/util/List;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // java.util.List suppliers
         0: .line 206
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* caches */
        start local 1 // java.util.List caches
         1: .line 207
            aload 0 /* suppliers */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: java.util.List java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.function.Supplier
            astore 2 /* supplier */
        start local 2 // java.util.function.Supplier supplier
         3: .line 208
            aload 2 /* supplier */
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            checkcast java.lang.ClassLoader
            aload 1 /* caches */
            invokestatic com.oracle.truffle.polyglot.LanguageCache$Loader.load:(Ljava/lang/ClassLoader;Ljava/util/Collection;)V
        end local 2 // java.util.function.Supplier supplier
         4: .line 207
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 210
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* cacheToId */
        start local 2 // java.util.Map cacheToId
         6: .line 211
            aload 1 /* caches */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 16
      StackMap locals: java.util.List java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
         7: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.LanguageCache
            astore 3 /* languageCache */
        start local 3 // com.oracle.truffle.polyglot.LanguageCache languageCache
         8: .line 212
            aload 2 /* cacheToId */
            aload 3 /* languageCache */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getId:()Ljava/lang/String;
            aload 3 /* languageCache */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.LanguageCache
            astore 5 /* prev */
        start local 5 // com.oracle.truffle.polyglot.LanguageCache prev
         9: .line 213
            aload 5 /* prev */
            ifnull 16
            aload 5 /* prev */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getClassName:()Ljava/lang/String;
            aload 3 /* languageCache */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getClassName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 10
            aload 5 /* prev */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            aload 3 /* languageCache */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.hasSameCodeSource:(Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;)Z
            ifne 16
        10: .line 214
      StackMap locals: java.util.List java.util.List java.util.Map com.oracle.truffle.polyglot.LanguageCache java.util.Iterator com.oracle.truffle.polyglot.LanguageCache
      StackMap stack:
            ldc "Duplicate language id %s. First language [%s]. Second language [%s]."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        11: .line 215
            aload 3 /* languageCache */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getId:()Ljava/lang/String;
            aastore
            dup
            iconst_1
        12: .line 216
            aload 5 /* prev */
            invokestatic com.oracle.truffle.polyglot.LanguageCache.formatLanguageLocation:(Lcom/oracle/truffle/polyglot/LanguageCache;)Ljava/lang/String;
            aastore
            dup
            iconst_2
        13: .line 217
            aload 3 /* languageCache */
            invokestatic com.oracle.truffle.polyglot.LanguageCache.formatLanguageLocation:(Lcom/oracle/truffle/polyglot/LanguageCache;)Ljava/lang/String;
            aastore
        14: .line 214
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 6 /* message */
        start local 6 // java.lang.String message
        15: .line 218
            new java.lang.IllegalStateException
            dup
            aload 6 /* message */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // java.lang.String message
        end local 5 // com.oracle.truffle.polyglot.LanguageCache prev
        end local 3 // com.oracle.truffle.polyglot.LanguageCache languageCache
        16: .line 211
      StackMap locals: java.util.List java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        17: .line 221
            aload 2 /* cacheToId */
            areturn
        end local 2 // java.util.Map cacheToId
        end local 1 // java.util.List caches
        end local 0 // java.util.List suppliers
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0      suppliers  Ljava/util/List<Lcom/oracle/truffle/polyglot/EngineAccessor$AbstractClassLoaderSupplier;>;
            1   18     1         caches  Ljava/util/List<Lcom/oracle/truffle/polyglot/LanguageCache;>;
            3    4     2       supplier  Ljava/util/function/Supplier<Ljava/lang/ClassLoader;>;
            6   18     2      cacheToId  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
            8   16     3  languageCache  Lcom/oracle/truffle/polyglot/LanguageCache;
            9   16     5           prev  Lcom/oracle/truffle/polyglot/LanguageCache;
           15   16     6        message  Ljava/lang/String;
    Signature: (Ljava/util/List<Lcom/oracle/truffle/polyglot/EngineAccessor$AbstractClassLoaderSupplier;>;)Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
    MethodParameters:
           Name  Flags
      suppliers  

  private static java.lang.String formatLanguageLocation(com.oracle.truffle.polyglot.LanguageCache);
    descriptor: (Lcom/oracle/truffle/polyglot/LanguageCache;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache languageCache
         0: .line 225
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 1 /* sb */
        start local 1 // java.lang.StringBuilder sb
         1: .line 226
            aload 1 /* sb */
            ldc "Language class "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* languageCache */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getClassName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 227
            aload 0 /* languageCache */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.getCodeSource:()Ljava/net/URL;
            astore 2 /* url */
        start local 2 // java.net.URL url
         3: .line 228
            aload 2 /* url */
            ifnull 5
         4: .line 229
            aload 1 /* sb */
            new java.lang.StringBuilder
            dup
            ldc ", Loaded from "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* url */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 231
      StackMap locals: java.lang.StringBuilder java.net.URL
      StackMap stack:
            aload 1 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.net.URL url
        end local 1 // java.lang.StringBuilder sb
        end local 0 // com.oracle.truffle.polyglot.LanguageCache languageCache
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0  languageCache  Lcom/oracle/truffle/polyglot/LanguageCache;
            1    6     1             sb  Ljava/lang/StringBuilder;
            3    6     2            url  Ljava/net/URL;
    MethodParameters:
               Name  Flags
      languageCache  

  public int compareTo(com.oracle.truffle.polyglot.LanguageCache);
    descriptor: (Lcom/oracle/truffle/polyglot/LanguageCache;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
        start local 1 // com.oracle.truffle.polyglot.LanguageCache o
         0: .line 235
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.id:Ljava/lang/String;
            aload 1 /* o */
            getfield com.oracle.truffle.polyglot.LanguageCache.id:Ljava/lang/String;
            invokevirtual java.lang.String.compareTo:(Ljava/lang/String;)I
            ireturn
        end local 1 // com.oracle.truffle.polyglot.LanguageCache o
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;
            0    1     1     o  Lcom/oracle/truffle/polyglot/LanguageCache;
    MethodParameters:
      Name  Flags
      o     

  java.lang.String getId();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 239
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.id:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  java.util.Set<java.lang.String> getMimeTypes();
    descriptor: ()Ljava/util/Set;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 243
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.mimeTypes:Ljava/util/Set;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  java.lang.String getDefaultMimeType();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 247
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.defaultMimeType:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  boolean isCharacterMimeType(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
        start local 1 // java.lang.String mimeType
         0: .line 251
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.characterMimeTypes:Ljava/util/Set;
            aload 1 /* mimeType */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.String mimeType
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/polyglot/LanguageCache;
            0    1     1  mimeType  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      mimeType  

  boolean isByteMimeType(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
        start local 1 // java.lang.String mimeType
         0: .line 255
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.characterMimeTypes:Ljava/util/Set;
            aload 1 /* mimeType */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.String mimeType
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/oracle/truffle/polyglot/LanguageCache;
            0    1     1  mimeType  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      mimeType  

  java.lang.String getName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 259
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.name:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  java.lang.String getImplementationName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 263
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.implementationName:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  java.util.Set<java.lang.String> getDependentLanguages();
    descriptor: ()Ljava/util/Set;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 267
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.dependentLanguages:Ljava/util/Set;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;
    Signature: ()Ljava/util/Set<Ljava/lang/String;>;

  java.lang.String getVersion();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 271
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.version:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  java.lang.String getClassName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 275
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.className:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  boolean isInternal();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 279
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.internal:Z
            ireturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  boolean isInteractive();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 283
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.interactive:Z
            ireturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  java.lang.String getLanguageHome();
    descriptor: ()Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 287
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageHome:Ljava/lang/String;
            ifnonnull 2
         1: .line 288
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.id:Ljava/lang/String;
            invokestatic com.oracle.truffle.polyglot.LanguageCache.getLanguageHomeImpl:(Ljava/lang/String;)Ljava/lang/String;
            putfield com.oracle.truffle.polyglot.LanguageCache.languageHome:Ljava/lang/String;
         2: .line 290
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageHome:Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  private static java.lang.String getLanguageHomeImpl(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String languageId
         0: .line 294
            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;
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* home */
        start local 1 // java.lang.String home
         1: .line 295
            aload 1 /* home */
            ifnonnull 3
         2: .line 297
            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;
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 1 /* home */
         3: .line 299
      StackMap locals: java.lang.String
      StackMap stack:
            aload 1 /* home */
            areturn
        end local 1 // java.lang.String home
        end local 0 // java.lang.String languageId
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0  languageId  Ljava/lang/String;
            1    4     1        home  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      languageId  

  com.oracle.truffle.api.TruffleLanguage<?> loadLanguage();
    descriptor: ()Lcom/oracle/truffle/api/TruffleLanguage;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 303
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.newInstance:()Lcom/oracle/truffle/api/TruffleLanguage;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;
    Signature: ()Lcom/oracle/truffle/api/TruffleLanguage<*>;

  java.util.Set<? extends java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>> getProvidedTags();
    descriptor: ()Ljava/util/Set;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 307
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.getProvidedTags:()Ljava/util/Set;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;
    Signature: ()Ljava/util/Set<+Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;

  com.oracle.truffle.api.TruffleLanguage$ContextPolicy getPolicy();
    descriptor: ()Lcom/oracle/truffle/api/TruffleLanguage$ContextPolicy;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 311
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.getContextPolicy:()Lcom/oracle/truffle/api/TruffleLanguage$ContextPolicy;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  java.util.Collection<java.lang.String> getServices();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 315
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.services:Ljava/util/Set;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;
    Signature: ()Ljava/util/Collection<Ljava/lang/String;>;

  boolean supportsService(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
        start local 1 // java.lang.Class clazz
         0: .line 319
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.services:Ljava/util/Set;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.services:Ljava/util/Set;
            aload 1 /* clazz */
            invokevirtual java.lang.Class.getCanonicalName:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // java.lang.Class clazz
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/polyglot/LanguageCache;
            0    2     1  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
       Name  Flags
      clazz  

  java.util.List<? extends com.oracle.truffle.api.TruffleFile$FileTypeDetector> getFileTypeDetectors();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 323
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.getFileTypeDetectors:()Ljava/util/List;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;
    Signature: ()Ljava/util/List<+Lcom/oracle/truffle/api/TruffleFile$FileTypeDetector;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.polyglot.LanguageCache this
         0: .line 328
            new java.lang.StringBuilder
            dup
            ldc "LanguageCache [id="
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.id:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", name="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", implementationName="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.implementationName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", version="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.version:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", className="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.className:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", services="
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.LanguageCache.services:Ljava/util/Set;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.polyglot.LanguageCache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/LanguageCache;

  static void resetNativeImageCacheLanguageHomes();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=3, args_size=0
         0: .line 332
            ldc Lcom/oracle/truffle/polyglot/LanguageCache;
            dup
            astore 0
            monitorenter
         1: .line 333
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            ifnull 3
         2: .line 334
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            invokestatic com.oracle.truffle.polyglot.LanguageCache.resetNativeImageCacheLanguageHomes:(Ljava/util/Map;)V
         3: .line 336
      StackMap locals: java.lang.Class
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.LanguageCache.runtimeCaches:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 6
      StackMap locals: java.lang.Class top java.util.Iterator
      StackMap stack:
         4: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map
            astore 1 /* caches */
        start local 1 // java.util.Map caches
         5: .line 337
            aload 1 /* caches */
            invokestatic com.oracle.truffle.polyglot.LanguageCache.resetNativeImageCacheLanguageHomes:(Ljava/util/Map;)V
        end local 1 // java.util.Map caches
         6: .line 336
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         7: .line 332
            aload 0
            monitorexit
         8: goto 11
      StackMap locals: java.lang.Class
      StackMap stack: java.lang.Throwable
         9: aload 0
            monitorexit
        10: athrow
        11: .line 340
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            5    6     1  caches  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any

  private static void resetNativeImageCacheLanguageHomes(java.util.Map<java.lang.String, com.oracle.truffle.polyglot.LanguageCache>);
    descriptor: (Ljava/util/Map;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.util.Map caches
         0: .line 343
            aload 0 /* caches */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: java.util.Map top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.LanguageCache
            astore 1 /* cache */
        start local 1 // com.oracle.truffle.polyglot.LanguageCache cache
         2: .line 344
            aload 1 /* cache */
            aconst_null
            putfield com.oracle.truffle.polyglot.LanguageCache.languageHome:Ljava/lang/String;
        end local 1 // com.oracle.truffle.polyglot.LanguageCache cache
         3: .line 343
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 346
            return
        end local 0 // java.util.Map caches
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  caches  Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;
            2    3     1   cache  Lcom/oracle/truffle/polyglot/LanguageCache;
    Signature: (Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/polyglot/LanguageCache;>;)V
    MethodParameters:
        Name  Flags
      caches  

  private static void initializeNativeImageState(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // java.lang.ClassLoader imageClassLoader
         0: .line 357
            getstatic com.oracle.truffle.polyglot.LanguageCache.$assertionsDisabled:Z
            ifne 1
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifne 1
            new java.lang.AssertionError
            dup
            ldc "Only supported during image generation"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 358
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            iconst_1
            anewarray com.oracle.truffle.polyglot.EngineAccessor$AbstractClassLoaderSupplier
            dup
            iconst_0
            new com.oracle.truffle.polyglot.EngineAccessor$StrongClassLoaderSupplier
            dup
            aload 0 /* imageClassLoader */
            invokespecial com.oracle.truffle.polyglot.EngineAccessor$StrongClassLoaderSupplier.<init>:(Ljava/lang/ClassLoader;)V
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokestatic com.oracle.truffle.polyglot.LanguageCache.createLanguages:(Ljava/util/List;)Ljava/util/Map;
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
         2: .line 359
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageMimes:Ljava/util/Map;
            invokestatic com.oracle.truffle.polyglot.LanguageCache.createMimes:()Ljava/util/Map;
            invokeinterface java.util.Map.putAll:(Ljava/util/Map;)V
         3: .line 360
            return
        end local 0 // java.lang.ClassLoader imageClassLoader
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0  imageClassLoader  Ljava/lang/ClassLoader;
    MethodParameters:
                  Name  Flags
      imageClassLoader  

  private static void resetNativeImageState();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 369
            getstatic com.oracle.truffle.polyglot.LanguageCache.$assertionsDisabled:Z
            ifne 1
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifne 1
            new java.lang.AssertionError
            dup
            ldc "Only supported during image generation"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 370
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         2: .line 371
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageMimes:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         3: .line 372
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void removeLanguageFromNativeImage(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.lang.String languageId
         0: .line 381
            getstatic com.oracle.truffle.polyglot.LanguageCache.$assertionsDisabled:Z
            ifne 1
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifne 1
            new java.lang.AssertionError
            dup
            ldc "Only supported during image generation"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 382
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.LanguageCache.$assertionsDisabled:Z
            ifne 2
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            aload 0 /* languageId */
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifne 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 383
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            aload 0 /* languageId */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.LanguageCache
            astore 1 /* cache */
        start local 1 // com.oracle.truffle.polyglot.LanguageCache cache
         3: .line 384
            aload 1 /* cache */
            ifnull 9
         4: .line 385
            aload 1 /* cache */
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.getMimeTypes:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 8
      StackMap locals: java.lang.String com.oracle.truffle.polyglot.LanguageCache top java.util.Iterator
      StackMap stack:
         5: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* mime */
        start local 2 // java.lang.String mime
         6: .line 386
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            aload 2 /* mime */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 1 /* cache */
            if_acmpne 8
         7: .line 387
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageMimes:Ljava/util/Map;
            aload 2 /* mime */
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // java.lang.String mime
         8: .line 385
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         9: .line 391
      StackMap locals: java.lang.String com.oracle.truffle.polyglot.LanguageCache
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.polyglot.LanguageCache cache
        end local 0 // java.lang.String languageId
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0  languageId  Ljava/lang/String;
            3   10     1       cache  Lcom/oracle/truffle/polyglot/LanguageCache;
            6    8     2        mime  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      languageId  

  private static java.util.Collection<java.lang.Class<?>> getLanguageClasses();
    descriptor: ()Ljava/util/Collection;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=0
         0: .line 400
            getstatic com.oracle.truffle.polyglot.LanguageCache.$assertionsDisabled:Z
            ifne 1
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifne 1
            new java.lang.AssertionError
            dup
            ldc "Only supported during image generation"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 401
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 0 /* list */
        start local 0 // java.util.ArrayList list
         2: .line 402
            getstatic com.oracle.truffle.polyglot.LanguageCache.nativeImageCache:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 2
            goto 7
      StackMap locals: java.util.ArrayList top java.util.Iterator
      StackMap stack:
         3: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.polyglot.LanguageCache
            astore 1 /* cache */
        start local 1 // com.oracle.truffle.polyglot.LanguageCache cache
         4: .line 403
            aload 1 /* cache */
            getfield com.oracle.truffle.polyglot.LanguageCache.languageReflection:Lcom/oracle/truffle/polyglot/LanguageCache$LanguageReflection;
            invokevirtual com.oracle.truffle.polyglot.LanguageCache$LanguageReflection.aotInitializeAtBuildTime:()Ljava/lang/Class;
            astore 3 /* clz */
        start local 3 // java.lang.Class clz
         5: .line 404
            aload 3 /* clz */
            ifnull 7
         6: .line 405
            aload 0 /* list */
            aload 3 /* clz */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // java.lang.Class clz
        end local 1 // com.oracle.truffle.polyglot.LanguageCache cache
         7: .line 402
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         8: .line 408
            aload 0 /* list */
            areturn
        end local 0 // java.util.ArrayList list
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            2    9     0   list  Ljava/util/ArrayList<Ljava/lang/Class<*>;>;
            4    7     1  cache  Lcom/oracle/truffle/polyglot/LanguageCache;
            5    7     3    clz  Ljava/lang/Class<+Lcom/oracle/truffle/api/TruffleLanguage<*>;>;
    Signature: ()Ljava/util/Collection<Ljava/lang/Class<*>;>;

  public int compareTo(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            checkcast com.oracle.truffle.polyglot.LanguageCache
            invokevirtual com.oracle.truffle.polyglot.LanguageCache.compareTo:(Lcom/oracle/truffle/polyglot/LanguageCache;)I
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Ljava/lang/Comparable<Lcom/oracle/truffle/polyglot/LanguageCache;>;
SourceFile: "LanguageCache.java"
NestMembers:
  com.oracle.truffle.polyglot.LanguageCache$LanguageReflection  com.oracle.truffle.polyglot.LanguageCache$LanguageReflection$LanguageInstanceReflection  com.oracle.truffle.polyglot.LanguageCache$Loader  com.oracle.truffle.polyglot.LanguageCache$Loader$LegacyLoader  com.oracle.truffle.polyglot.LanguageCache$Loader$LegacyLoader$LegacyLanguageReflection  com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader  com.oracle.truffle.polyglot.LanguageCache$Loader$ServicesLoader$ServiceLoaderLanguageReflection
InnerClasses:
  public abstract FileTypeDetector = com.oracle.truffle.api.TruffleFile$FileTypeDetector of com.oracle.truffle.api.TruffleFile
  public final ContextPolicy = com.oracle.truffle.api.TruffleLanguage$ContextPolicy of com.oracle.truffle.api.TruffleLanguage
  abstract AbstractClassLoaderSupplier = com.oracle.truffle.polyglot.EngineAccessor$AbstractClassLoaderSupplier of com.oracle.truffle.polyglot.EngineAccessor
  final StrongClassLoaderSupplier = com.oracle.truffle.polyglot.EngineAccessor$StrongClassLoaderSupplier of com.oracle.truffle.polyglot.EngineAccessor
  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