final class com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader extends com.oracle.truffle.polyglot.InstrumentCache$Loader
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader
  super_class: com.oracle.truffle.polyglot.InstrumentCache$Loader
{
  static final com.oracle.truffle.polyglot.InstrumentCache$Loader INSTANCE;
    descriptor: Lcom/oracle/truffle/polyglot/InstrumentCache$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 232
            new com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader
            dup
            invokespecial com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader.<init>:()V
            putstatic com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader.INSTANCE:Lcom/oracle/truffle/polyglot/InstrumentCache$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.InstrumentCache$LegacyLoader this
         0: .line 234
            aload 0 /* this */
            invokespecial com.oracle.truffle.polyglot.InstrumentCache$Loader.<init>:()V
         1: .line 235
            return
        end local 0 // com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/polyglot/InstrumentCache$LegacyLoader;

  void loadImpl(java.lang.ClassLoader, java.util.List<? super com.oracle.truffle.polyglot.InstrumentCache>, java.util.Set<? super java.lang.String>);
    descriptor: (Ljava/lang/ClassLoader;Ljava/util/List;Ljava/util/Set;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=10, args_size=4
        start local 0 // com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader this
        start local 1 // java.lang.ClassLoader loader
        start local 2 // java.util.List list
        start local 3 // java.util.Set classNamesUsed
         0: .line 241
            aload 1 /* loader */
            ldc "META-INF/truffle/instrument"
            invokevirtual java.lang.ClassLoader.getResources:(Ljava/lang/String;)Ljava/util/Enumeration;
            astore 4 /* en */
        start local 4 // java.util.Enumeration en
         1: .line 242
            goto 29
        end local 4 // java.util.Enumeration en
      StackMap locals:
      StackMap stack: java.io.IOException
         2: astore 5 /* ex */
        start local 5 // java.io.IOException ex
         3: .line 243
            new java.lang.IllegalStateException
            dup
            ldc "Cannot read list of Truffle instruments"
            aload 5 /* ex */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.io.IOException ex
        start local 4 // java.util.Enumeration en
         4: .line 246
      StackMap locals: java.util.Enumeration
      StackMap stack:
            aload 4 /* en */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.net.URL
            astore 5 /* u */
        start local 5 // java.net.URL u
         5: .line 249
            new java.util.Properties
            dup
            invokespecial java.util.Properties.<init>:()V
            astore 6 /* p */
        start local 6 // java.util.Properties p
         6: .line 250
            aconst_null
            astore 7
            aconst_null
            astore 8
         7: aload 5 /* u */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            astore 9 /* is */
        start local 9 // java.io.InputStream is
         8: .line 251
            aload 6 /* p */
            aload 9 /* is */
            invokevirtual java.util.Properties.load:(Ljava/io/InputStream;)V
         9: .line 252
            aload 9 /* is */
            ifnull 20
            aload 9 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 20
      StackMap locals: com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader java.lang.ClassLoader java.util.List java.util.Set java.util.Enumeration java.net.URL java.util.Properties java.lang.Throwable java.lang.Throwable java.io.InputStream
      StackMap stack: java.lang.Throwable
        10: astore 7
            aload 9 /* is */
            ifnull 11
            aload 9 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 9 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        11: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 8
            aload 7
            ifnonnull 13
            aload 8
            astore 7
            goto 14
      StackMap locals:
      StackMap stack:
        13: aload 7
            aload 8
            if_acmpeq 14
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        14: aload 7
            athrow
        end local 6 // java.util.Properties p
        15: .line 253
      StackMap locals: com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader java.lang.ClassLoader java.util.List java.util.Set java.util.Enumeration java.net.URL
      StackMap stack: java.io.IOException
            astore 7 /* ex */
        start local 7 // java.io.IOException ex
        16: .line 254
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            astore 8 /* out */
        start local 8 // java.io.PrintStream out
        17: .line 255
            aload 8 /* out */
            new java.lang.StringBuilder
            dup
            ldc "Cannot process "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* u */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " as language definition"
            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
        18: .line 256
            aload 7 /* ex */
            invokevirtual java.io.IOException.printStackTrace:()V
        19: .line 257
            goto 29
        end local 8 // java.io.PrintStream out
        end local 7 // java.io.IOException ex
        start local 6 // java.util.Properties p
        20: .line 259
      StackMap locals: java.util.Properties
      StackMap stack:
            iconst_1
            istore 7 /* cnt */
        start local 7 // int cnt
        21: .line 260
      StackMap locals: int
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "instrument"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 7 /* cnt */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 8 /* prefix */
        start local 8 // java.lang.String prefix
        22: .line 261
            aload 6 /* p */
            new java.lang.StringBuilder
            dup
            aload 8 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "className"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 9 /* className */
        start local 9 // java.lang.String className
        23: .line 262
            aload 9 /* className */
            ifnonnull 25
        24: .line 263
            goto 29
        25: .line 266
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* classNamesUsed */
            aload 9 /* className */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 28
        26: .line 267
            aload 3 /* classNamesUsed */
            aload 9 /* className */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        27: .line 268
            aload 2 /* list */
            aload 8 /* prefix */
            aload 6 /* p */
            aload 1 /* loader */
            invokestatic com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader.createInstrumentCache:(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Lcom/oracle/truffle/polyglot/InstrumentCache;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.lang.String className
        end local 8 // java.lang.String prefix
        28: .line 259
      StackMap locals:
      StackMap stack:
            iinc 7 /* cnt */ 1
            goto 21
        end local 7 // int cnt
        end local 6 // java.util.Properties p
        end local 5 // java.net.URL u
        29: .line 245
      StackMap locals:
      StackMap stack:
            aload 4 /* en */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 4
        30: .line 272
            return
        end local 4 // java.util.Enumeration en
        end local 3 // java.util.Set classNamesUsed
        end local 2 // java.util.List list
        end local 1 // java.lang.ClassLoader loader
        end local 0 // com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   31     0            this  Lcom/oracle/truffle/polyglot/InstrumentCache$LegacyLoader;
            0   31     1          loader  Ljava/lang/ClassLoader;
            0   31     2            list  Ljava/util/List<-Lcom/oracle/truffle/polyglot/InstrumentCache;>;
            0   31     3  classNamesUsed  Ljava/util/Set<-Ljava/lang/String;>;
            1    2     4              en  Ljava/util/Enumeration<Ljava/net/URL;>;
            4   31     4              en  Ljava/util/Enumeration<Ljava/net/URL;>;
            3    4     5              ex  Ljava/io/IOException;
            5   29     5               u  Ljava/net/URL;
            6   15     6               p  Ljava/util/Properties;
           20   29     6               p  Ljava/util/Properties;
            8   11     9              is  Ljava/io/InputStream;
           16   20     7              ex  Ljava/io/IOException;
           17   20     8             out  Ljava/io/PrintStream;
           21   29     7             cnt  I
           22   28     8          prefix  Ljava/lang/String;
           23   28     9       className  Ljava/lang/String;
      Exception table:
        from    to  target  type
           0     1       2  Class java.io.IOException
           8     9      10  any
           7    12      12  any
           5    15      15  Class java.io.IOException
    Signature: (Ljava/lang/ClassLoader;Ljava/util/List<-Lcom/oracle/truffle/polyglot/InstrumentCache;>;Ljava/util/Set<-Ljava/lang/String;>;)V
    MethodParameters:
                Name  Flags
      loader          
      list            
      classNamesUsed  

  private static com.oracle.truffle.polyglot.InstrumentCache createInstrumentCache(java.lang.String, java.util.Properties, java.lang.ClassLoader);
    descriptor: (Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Lcom/oracle/truffle/polyglot/InstrumentCache;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=9, locals=12, args_size=3
        start local 0 // java.lang.String prefix
        start local 1 // java.util.Properties info
        start local 2 // java.lang.ClassLoader loader
         0: .line 275
            aload 1 /* info */
            new java.lang.StringBuilder
            dup
            aload 0 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "className"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 3 /* className */
        start local 3 // java.lang.String className
         1: .line 276
            aload 1 /* info */
            new java.lang.StringBuilder
            dup
            aload 0 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "name"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         2: .line 277
            aload 1 /* info */
            new java.lang.StringBuilder
            dup
            aload 0 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "version"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* version */
        start local 5 // java.lang.String version
         3: .line 278
            aload 1 /* info */
            new java.lang.StringBuilder
            dup
            aload 0 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "internal"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic java.lang.Boolean.valueOf:(Ljava/lang/String;)Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            istore 6 /* internal */
        start local 6 // boolean internal
         4: .line 279
            aload 1 /* info */
            new java.lang.StringBuilder
            dup
            aload 0 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "id"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* id */
        start local 7 // java.lang.String id
         5: .line 280
            aload 7 /* id */
            ifnull 6
            aload 7 /* id */
            invokevirtual java.lang.String.isEmpty:()Z
            ifeq 7
         6: .line 281
      StackMap locals: java.lang.String java.util.Properties java.lang.ClassLoader java.lang.String java.lang.String java.lang.String int java.lang.String
      StackMap stack:
            aload 3 /* className */
            invokestatic com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader.defaultId:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* id */
         7: .line 283
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 8 /* servicesCounter */
        start local 8 // int servicesCounter
         8: .line 284
            new java.util.TreeSet
            dup
            invokespecial java.util.TreeSet.<init>:()V
            astore 9 /* services */
        start local 9 // java.util.Set services
         9: .line 286
      StackMap locals: int java.util.Set
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* prefix */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "service"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 8 /* servicesCounter */
            iinc 8 /* servicesCounter */ 1
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 10 /* nth */
        start local 10 // java.lang.String nth
        10: .line 287
            aload 1 /* info */
            aload 10 /* nth */
            invokevirtual java.util.Properties.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 11 /* serviceName */
        start local 11 // java.lang.String serviceName
        11: .line 288
            aload 11 /* serviceName */
            ifnonnull 13
        12: .line 289
            goto 15
        13: .line 291
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 9 /* services */
            aload 11 /* serviceName */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // java.lang.String serviceName
        end local 10 // java.lang.String nth
        14: .line 285
            goto 9
        15: .line 293
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader$LegacyInstrumentReflection
            dup
            aload 4 /* name */
            aload 2 /* loader */
            aload 3 /* className */
            invokespecial com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader$LegacyInstrumentReflection.<init>:(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)V
            astore 10 /* reflection */
        start local 10 // com.oracle.truffle.polyglot.InstrumentCache$InstrumentReflection reflection
        16: .line 294
            new com.oracle.truffle.polyglot.InstrumentCache
            dup
            aload 7 /* id */
            aload 4 /* name */
            aload 5 /* version */
            aload 3 /* className */
            iload 6 /* internal */
            aload 9 /* services */
            aload 10 /* reflection */
            invokespecial com.oracle.truffle.polyglot.InstrumentCache.<init>:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/util/Set;Lcom/oracle/truffle/polyglot/InstrumentCache$InstrumentReflection;)V
            areturn
        end local 10 // com.oracle.truffle.polyglot.InstrumentCache$InstrumentReflection reflection
        end local 9 // java.util.Set services
        end local 8 // int servicesCounter
        end local 7 // java.lang.String id
        end local 6 // boolean internal
        end local 5 // java.lang.String version
        end local 4 // java.lang.String name
        end local 3 // java.lang.String className
        end local 2 // java.lang.ClassLoader loader
        end local 1 // java.util.Properties info
        end local 0 // java.lang.String prefix
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   17     0           prefix  Ljava/lang/String;
            0   17     1             info  Ljava/util/Properties;
            0   17     2           loader  Ljava/lang/ClassLoader;
            1   17     3        className  Ljava/lang/String;
            2   17     4             name  Ljava/lang/String;
            3   17     5          version  Ljava/lang/String;
            4   17     6         internal  Z
            5   17     7               id  Ljava/lang/String;
            8   17     8  servicesCounter  I
            9   17     9         services  Ljava/util/Set<Ljava/lang/String;>;
           10   14    10              nth  Ljava/lang/String;
           11   14    11      serviceName  Ljava/lang/String;
           16   17    10       reflection  Lcom/oracle/truffle/polyglot/InstrumentCache$InstrumentReflection;
    MethodParameters:
        Name  Flags
      prefix  
      info    
      loader  
}
SourceFile: "InstrumentCache.java"
NestHost: com.oracle.truffle.polyglot.InstrumentCache
InnerClasses:
  private abstract InstrumentReflection = com.oracle.truffle.polyglot.InstrumentCache$InstrumentReflection of com.oracle.truffle.polyglot.InstrumentCache
  private final LegacyLoader = com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader of com.oracle.truffle.polyglot.InstrumentCache
  private final LegacyInstrumentReflection = com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader$LegacyInstrumentReflection of com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader
  private abstract Loader = com.oracle.truffle.polyglot.InstrumentCache$Loader of com.oracle.truffle.polyglot.InstrumentCache