abstract class com.oracle.truffle.polyglot.InstrumentCache$Loader
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.polyglot.InstrumentCache$Loader
  super_class: java.lang.Object
{
  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$Loader this
         0: .line 190
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.polyglot.InstrumentCache$Loader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/polyglot/InstrumentCache$Loader;

  static void load(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: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.lang.ClassLoader loader
        start local 1 // java.util.List list
        start local 2 // java.util.Set classNamesUsed
         0: .line 193
            aload 0 /* loader */
            ifnonnull 2
         1: .line 194
            return
         2: .line 197
      StackMap locals:
      StackMap stack:
            ldc Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            iconst_1
            aload 0 /* loader */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            astore 3 /* truffleInstrumentClassAsSeenByLoader */
        start local 3 // java.lang.Class truffleInstrumentClassAsSeenByLoader
         3: .line 198
            aload 3 /* truffleInstrumentClassAsSeenByLoader */
            ldc Lcom/oracle/truffle/api/instrumentation/TruffleInstrument;
            if_acmpeq 7
         4: .line 199
            return
        end local 3 // java.lang.Class truffleInstrumentClassAsSeenByLoader
         5: .line 201
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            pop
         6: .line 202
            return
         7: .line 204
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader.INSTANCE:Lcom/oracle/truffle/polyglot/InstrumentCache$Loader;
            aload 0 /* loader */
            aload 1 /* list */
            aload 2 /* classNamesUsed */
            invokevirtual com.oracle.truffle.polyglot.InstrumentCache$Loader.loadImpl:(Ljava/lang/ClassLoader;Ljava/util/List;Ljava/util/Set;)V
         8: .line 205
            getstatic com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader.INSTANCE:Lcom/oracle/truffle/polyglot/InstrumentCache$Loader;
            aload 0 /* loader */
            aload 1 /* list */
            aload 2 /* classNamesUsed */
            invokevirtual com.oracle.truffle.polyglot.InstrumentCache$Loader.loadImpl:(Ljava/lang/ClassLoader;Ljava/util/List;Ljava/util/Set;)V
         9: .line 206
            return
        end local 2 // java.util.Set classNamesUsed
        end local 1 // java.util.List list
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot                                  Name  Signature
            0   10     0                                loader  Ljava/lang/ClassLoader;
            0   10     1                                  list  Ljava/util/List<-Lcom/oracle/truffle/polyglot/InstrumentCache;>;
            0   10     2                        classNamesUsed  Ljava/util/Set<-Ljava/lang/String;>;
            3    5     3  truffleInstrumentClassAsSeenByLoader  Ljava/lang/Class<*>;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.ClassNotFoundException
    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  

  static void exportTruffle(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.ClassLoader loader
         0: .line 209
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifne 2
         1: .line 214
            getstatic com.oracle.truffle.polyglot.EngineAccessor.JDKSERVICES:Lcom/oracle/truffle/api/impl/Accessor$JDKSupport;
            aload 0 /* loader */
            aconst_null
            invokevirtual com.oracle.truffle.api.impl.Accessor$JDKSupport.exportTo:(Ljava/lang/ClassLoader;Ljava/lang/String;)V
         2: .line 216
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.ClassLoader loader
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0  loader  Ljava/lang/ClassLoader;
    MethodParameters:
        Name  Flags
      loader  

  abstract 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: (0x0400) ACC_ABSTRACT
    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  

  static java.lang.String defaultId(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.String className
         0: .line 222
            aload 0 /* className */
            bipush 36
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 1 /* lastIndex */
        start local 1 // int lastIndex
         1: .line 223
            iload 1 /* lastIndex */
            iconst_m1
            if_icmpne 3
         2: .line 224
            aload 0 /* className */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 1 /* lastIndex */
         3: .line 226
      StackMap locals: int
      StackMap stack:
            aload 0 /* className */
            iload 1 /* lastIndex */
            iconst_1
            iadd
            aload 0 /* className */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            areturn
        end local 1 // int lastIndex
        end local 0 // java.lang.String className
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0  className  Ljava/lang/String;
            1    4     1  lastIndex  I
    MethodParameters:
           Name  Flags
      className  
}
SourceFile: "InstrumentCache.java"
NestHost: com.oracle.truffle.polyglot.InstrumentCache
InnerClasses:
  public final JDKSupport = com.oracle.truffle.api.impl.Accessor$JDKSupport of com.oracle.truffle.api.impl.Accessor
  private final LegacyLoader = com.oracle.truffle.polyglot.InstrumentCache$LegacyLoader of com.oracle.truffle.polyglot.InstrumentCache
  private abstract Loader = com.oracle.truffle.polyglot.InstrumentCache$Loader of com.oracle.truffle.polyglot.InstrumentCache
  private final ServicesLoader = com.oracle.truffle.polyglot.InstrumentCache$ServicesLoader of com.oracle.truffle.polyglot.InstrumentCache