final class com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
  super_class: java.lang.Object
{
  private static final java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>, com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch> CACHE;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Class<*>;Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;>;

  private static final java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>, com.oracle.truffle.api.library.LibraryExport<?>[]> REGISTRY;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Class<*>;[Lcom/oracle/truffle/api/library/LibraryExport<*>;>;

  private static final com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch OBJECT_RECEIVER;
    descriptor: Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch parent;
    descriptor: Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Class<?> dispatchClass;
    descriptor: Ljava/lang/Class;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/Class<*>;

  private final java.util.Map<java.lang.Class<?>, com.oracle.truffle.api.library.LibraryExport<?>> libraries;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Class<*>;Lcom/oracle/truffle/api/library/LibraryExport<*>;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 737
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.CACHE:Ljava/util/concurrent/ConcurrentHashMap;
         1: .line 738
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.REGISTRY:Ljava/util/concurrent/ConcurrentHashMap;
         2: .line 741
            new com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
            dup
            aconst_null
            ldc Ljava/lang/Object;
            iconst_0
            anewarray com.oracle.truffle.api.library.LibraryExport
            invokespecial com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.<init>:(Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;Ljava/lang/Class;[Lcom/oracle/truffle/api/library/LibraryExport;)V
            putstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.OBJECT_RECEIVER:Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch, java.lang.Class<?>, com.oracle.truffle.api.library.LibraryExport<?>[]);
    descriptor: (Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;Ljava/lang/Class;[Lcom/oracle/truffle/api/library/LibraryExport;)V
    flags: (0x0082) ACC_PRIVATE, ACC_VARARGS
    Code:
      stack=3, locals=9, args_size=4
        start local 0 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch this
        start local 1 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch parent
        start local 2 // java.lang.Class dispatchClass
        start local 3 // com.oracle.truffle.api.library.LibraryExport[] libs
         0: .line 747
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 748
            aload 0 /* this */
            aload 1 /* parent */
            putfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.parent:Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
         2: .line 749
            aload 0 /* this */
            aload 2 /* dispatchClass */
            putfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.dispatchClass:Ljava/lang/Class;
         3: .line 750
            new java.util.LinkedHashMap
            dup
            invokespecial java.util.LinkedHashMap.<init>:()V
            astore 4 /* libraries */
        start local 4 // java.util.Map libraries
         4: .line 751
            aload 3 /* libs */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 8
      StackMap locals: com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch java.lang.Class com.oracle.truffle.api.library.LibraryExport[] java.util.Map top int int com.oracle.truffle.api.library.LibraryExport[]
      StackMap stack:
         5: aload 8
            iload 6
            aaload
            astore 5 /* lib */
        start local 5 // com.oracle.truffle.api.library.LibraryExport lib
         6: .line 752
            aload 4 /* libraries */
            aload 5 /* lib */
            invokevirtual com.oracle.truffle.api.library.LibraryExport.getLibrary:()Ljava/lang/Class;
            aload 5 /* lib */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 5 // com.oracle.truffle.api.library.LibraryExport lib
         7: .line 751
            iinc 6 1
      StackMap locals:
      StackMap stack:
         8: iload 6
            iload 7
            if_icmplt 5
         9: .line 754
            aload 0 /* this */
            aload 4 /* libraries */
            putfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.libraries:Ljava/util/Map;
        10: .line 755
            return
        end local 4 // java.util.Map libraries
        end local 3 // com.oracle.truffle.api.library.LibraryExport[] libs
        end local 2 // java.lang.Class dispatchClass
        end local 1 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch parent
        end local 0 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0           this  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            0   11     1         parent  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            0   11     2  dispatchClass  Ljava/lang/Class<*>;
            0   11     3           libs  [Lcom/oracle/truffle/api/library/LibraryExport;
            4   11     4      libraries  Ljava/util/Map<Ljava/lang/Class<*>;Lcom/oracle/truffle/api/library/LibraryExport<*>;>;
            6    7     5            lib  Lcom/oracle/truffle/api/library/LibraryExport<*>;
    Signature: (Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;Ljava/lang/Class<*>;[Lcom/oracle/truffle/api/library/LibraryExport<*>;)V
    MethodParameters:
               Name  Flags
      parent         
      dispatchClass  
      libs           

  <T extends com.oracle.truffle.api.library.Library> com.oracle.truffle.api.library.LibraryExport<T> getLibrary(java.lang.Class<T>);
    descriptor: (Ljava/lang/Class;)Lcom/oracle/truffle/api/library/LibraryExport;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch this
        start local 1 // java.lang.Class libraryClass
         0: .line 759
            aload 0 /* this */
            getfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.libraries:Ljava/util/Map;
            aload 1 /* libraryClass */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.library.LibraryExport
            astore 2 /* lib */
        start local 2 // com.oracle.truffle.api.library.LibraryExport lib
         1: .line 760
            aload 2 /* lib */
            ifnonnull 3
            aload 0 /* this */
            getfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.parent:Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            ifnull 3
         2: .line 761
            aload 0 /* this */
            getfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.parent:Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            aload 1 /* libraryClass */
            invokevirtual com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.getLibrary:(Ljava/lang/Class;)Lcom/oracle/truffle/api/library/LibraryExport;
            astore 2 /* lib */
         3: .line 763
      StackMap locals: com.oracle.truffle.api.library.LibraryExport
      StackMap stack:
            aload 2 /* lib */
            areturn
        end local 2 // com.oracle.truffle.api.library.LibraryExport lib
        end local 1 // java.lang.Class libraryClass
        end local 0 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            0    4     1  libraryClass  Ljava/lang/Class<TT;>;
            1    4     2           lib  Lcom/oracle/truffle/api/library/LibraryExport<*>;
    Signature: <T:Lcom/oracle/truffle/api/library/Library;>(Ljava/lang/Class<TT;>;)Lcom/oracle/truffle/api/library/LibraryExport<TT;>;
    MethodParameters:
              Name  Flags
      libraryClass  

  static com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch lookup(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.Class receiverClass
         0: .line 769
            getstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.CACHE:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* receiverClass */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
            astore 1 /* type */
        start local 1 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch type
         1: .line 770
            aload 1 /* type */
            ifnonnull 3
         2: .line 771
            aload 0 /* receiverClass */
            invokestatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.resolveClass:(Ljava/lang/Class;)Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            astore 1 /* type */
         3: .line 773
      StackMap locals: com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
      StackMap stack:
            aload 1 /* type */
            areturn
        end local 1 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch type
        end local 0 // java.lang.Class receiverClass
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0  receiverClass  Ljava/lang/Class<*>;
            1    4     1           type  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    Signature: (Ljava/lang/Class<*>;)Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
               Name  Flags
      receiverClass  

  static <T extends com.oracle.truffle.api.library.Library> void register(java.lang.Class<?>, com.oracle.truffle.api.library.LibraryExport<?>[]);
    descriptor: (Ljava/lang/Class;[Lcom/oracle/truffle/api/library/LibraryExport;)V
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // java.lang.Class receiverClass
        start local 1 // com.oracle.truffle.api.library.LibraryExport[] libs
         0: .line 777
            aload 1 /* libs */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 4
      StackMap locals: java.lang.Class com.oracle.truffle.api.library.LibraryExport[] top int int com.oracle.truffle.api.library.LibraryExport[]
      StackMap stack:
         1: aload 5
            iload 3
            aaload
            astore 2 /* lib */
        start local 2 // com.oracle.truffle.api.library.LibraryExport lib
         2: .line 778
            aload 2 /* lib */
            aload 0 /* receiverClass */
            putfield com.oracle.truffle.api.library.LibraryExport.registerClass:Ljava/lang/Class;
        end local 2 // com.oracle.truffle.api.library.LibraryExport lib
         3: .line 777
            iinc 3 1
      StackMap locals:
      StackMap stack:
         4: iload 3
            iload 4
            if_icmplt 1
         5: .line 780
            getstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.REGISTRY:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* receiverClass */
            aload 1 /* libs */
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.library.LibraryExport[]
            astore 2 /* prevLibs */
        start local 2 // com.oracle.truffle.api.library.LibraryExport[] prevLibs
         6: .line 781
            aload 2 /* prevLibs */
            ifnull 8
         7: .line 782
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Receiver "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* receiverClass */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " is already registered."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 785
      StackMap locals: java.lang.Class com.oracle.truffle.api.library.LibraryExport[] com.oracle.truffle.api.library.LibraryExport[]
      StackMap stack:
            getstatic com.oracle.truffle.api.TruffleOptions.AOT:Z
            ifeq 10
         9: .line 786
            aload 0 /* receiverClass */
            invokestatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.lookup:(Ljava/lang/Class;)Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            pop
        10: .line 788
      StackMap locals:
      StackMap stack:
            return
        end local 2 // com.oracle.truffle.api.library.LibraryExport[] prevLibs
        end local 1 // com.oracle.truffle.api.library.LibraryExport[] libs
        end local 0 // java.lang.Class receiverClass
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   11     0  receiverClass  Ljava/lang/Class<*>;
            0   11     1           libs  [Lcom/oracle/truffle/api/library/LibraryExport;
            2    3     2            lib  Lcom/oracle/truffle/api/library/LibraryExport<*>;
            6   11     2       prevLibs  [Lcom/oracle/truffle/api/library/LibraryExport;
    Signature: <T:Lcom/oracle/truffle/api/library/Library;>(Ljava/lang/Class<*>;[Lcom/oracle/truffle/api/library/LibraryExport<*>;)V
    MethodParameters:
               Name  Flags
      receiverClass  
      libs           

  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.api.library.LibraryFactory$ResolvedDispatch this
         0: .line 792
            new java.lang.StringBuilder
            dup
            ldc "ResolvedDispatch["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.dispatchClass:Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)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.api.library.LibraryFactory$ResolvedDispatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;

  java.util.Set<java.lang.Class<?>> getLibraries();
    descriptor: ()Ljava/util/Set;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch this
         0: .line 796
            aload 0 /* this */
            getfield com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.libraries:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            areturn
        end local 0 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    Signature: ()Ljava/util/Set<Ljava/lang/Class<*>;>;

  private static boolean hasExports(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.Class c
         0: .line 800
            aload 0 /* c */
            ldc Lcom/oracle/truffle/api/library/ExportLibrary;
            invokevirtual java.lang.Class.getAnnotationsByType:(Ljava/lang/Class;)[Ljava/lang/annotation/Annotation;
            checkcast com.oracle.truffle.api.library.ExportLibrary[]
            arraylength
            ifle 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // java.lang.Class c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     c  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
      Name  Flags
      c     

  private static com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch resolveClass(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // java.lang.Class dispatchClass
         0: .line 804
            aload 0 /* dispatchClass */
            ifnonnull 2
         1: .line 805
            getstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.OBJECT_RECEIVER:Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            areturn
         2: .line 807
      StackMap locals:
      StackMap stack:
            aload 0 /* dispatchClass */
            invokevirtual java.lang.Class.getSuperclass:()Ljava/lang/Class;
            invokestatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.resolveClass:(Ljava/lang/Class;)Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            astore 1 /* parent */
        start local 1 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch parent
         3: .line 809
            getstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.REGISTRY:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* dispatchClass */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.library.LibraryExport[]
            astore 3 /* libs */
        start local 3 // com.oracle.truffle.api.library.LibraryExport[] libs
         4: .line 810
            aload 3 /* libs */
            ifnonnull 9
            aload 0 /* dispatchClass */
            invokestatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.hasExports:(Ljava/lang/Class;)Z
            ifeq 9
         5: .line 815
            aload 0 /* dispatchClass */
            invokestatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.loadGeneratedClass:(Ljava/lang/Class;)V
         6: .line 816
            getstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.REGISTRY:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* dispatchClass */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.library.LibraryExport[]
            astore 3 /* libs */
         7: .line 817
            aload 3 /* libs */
            ifnonnull 9
         8: .line 818
            ldc "Libraries for class '%s' could not be resolved. Not registered?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* dispatchClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
         9: .line 822
      StackMap locals: java.lang.Class com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch top com.oracle.truffle.api.library.LibraryExport[]
      StackMap stack:
            aload 3 /* libs */
            ifnull 12
        10: .line 823
            new com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
            dup
            aload 1 /* parent */
            aload 0 /* dispatchClass */
            aload 3 /* libs */
            invokespecial com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.<init>:(Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;Ljava/lang/Class;[Lcom/oracle/truffle/api/library/LibraryExport;)V
            astore 2 /* resolved */
        start local 2 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch resolved
        11: .line 824
            goto 13
        end local 2 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch resolved
        12: .line 825
      StackMap locals:
      StackMap stack:
            aload 1 /* parent */
            astore 2 /* resolved */
        start local 2 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch resolved
        13: .line 828
      StackMap locals: java.lang.Class com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch com.oracle.truffle.api.library.LibraryExport[]
      StackMap stack:
            getstatic com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch.CACHE:Ljava/util/concurrent/ConcurrentHashMap;
            aload 0 /* dispatchClass */
            aload 2 /* resolved */
            invokevirtual java.util.concurrent.ConcurrentHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
            astore 4 /* concurrent */
        start local 4 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch concurrent
        14: .line 829
            aload 4 /* concurrent */
            ifnull 16
        15: .line 830
            aload 4 /* concurrent */
            areturn
        16: .line 832
      StackMap locals: com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch
      StackMap stack:
            aload 2 /* resolved */
            areturn
        end local 4 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch concurrent
        end local 3 // com.oracle.truffle.api.library.LibraryExport[] libs
        end local 2 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch resolved
        end local 1 // com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch parent
        end local 0 // java.lang.Class dispatchClass
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   17     0  dispatchClass  Ljava/lang/Class<*>;
            3   17     1         parent  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
           11   12     2       resolved  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
           13   17     2       resolved  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
            4   17     3           libs  [Lcom/oracle/truffle/api/library/LibraryExport;
           14   17     4     concurrent  Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    Signature: (Ljava/lang/Class<*>;)Lcom/oracle/truffle/api/library/LibraryFactory$ResolvedDispatch;
    MethodParameters:
               Name  Flags
      dispatchClass  

  static void loadGeneratedClass(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.lang.Class currentReceiverClass
         0: .line 837
            new java.lang.StringBuilder
            dup
            aload 0 /* currentReceiverClass */
            invokevirtual java.lang.Class.getPackage:()Ljava/lang/Package;
            invokevirtual java.lang.Package.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* currentReceiverClass */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "Gen"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* generatedClassName */
        start local 1 // java.lang.String generatedClassName
         1: .line 839
            aload 1 /* generatedClassName */
            iconst_1
            aload 0 /* currentReceiverClass */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            pop
         2: .line 840
            goto 9
      StackMap locals: java.lang.Class java.lang.String
      StackMap stack: java.lang.ClassNotFoundException
         3: astore 2 /* e */
        start local 2 // java.lang.ClassNotFoundException e
         4: .line 841
            ldc "Generated class '%s' for class '%s' not found. Did the Truffle annotation processor run?"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         5: .line 842
            aload 1 /* generatedClassName */
            aastore
            dup
            iconst_1
            aload 0 /* currentReceiverClass */
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
         6: .line 841
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
         7: .line 842
            aload 2 /* e */
         8: .line 841
            invokestatic com.oracle.truffle.api.CompilerDirectives.shouldNotReachHere:(Ljava/lang/String;Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 2 // java.lang.ClassNotFoundException e
         9: .line 844
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.String generatedClassName
        end local 0 // java.lang.Class currentReceiverClass
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   10     0  currentReceiverClass  Ljava/lang/Class<*>;
            1   10     1    generatedClassName  Ljava/lang/String;
            4    9     2                     e  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.ClassNotFoundException
    Signature: (Ljava/lang/Class<*>;)V
    MethodParameters:
                      Name  Flags
      currentReceiverClass  
}
SourceFile: "LibraryFactory.java"
NestHost: com.oracle.truffle.api.library.LibraryFactory
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  final ResolvedDispatch = com.oracle.truffle.api.library.LibraryFactory$ResolvedDispatch of com.oracle.truffle.api.library.LibraryFactory