class com.oracle.truffle.api.library.ReflectionLibraryDefault$Send
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.api.library.ReflectionLibraryDefault$Send
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.library.ReflectionLibraryDefault$Send this
         0: .line 153
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.library.ReflectionLibraryDefault$Send this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/library/ReflectionLibraryDefault$Send;

  static java.lang.Object doSendCached(java.lang.Object, com.oracle.truffle.api.library.Message, java.lang.Object[], com.oracle.truffle.api.library.Message, com.oracle.truffle.api.library.Library);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/library/Message;[Ljava/lang/Object;Lcom/oracle/truffle/api/library/Message;Lcom/oracle/truffle/api/library/Library;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // java.lang.Object receiver
        start local 1 // com.oracle.truffle.api.library.Message message
        start local 2 // java.lang.Object[] args
        start local 3 // com.oracle.truffle.api.library.Message cachedMessage
        start local 4 // com.oracle.truffle.api.library.Library cachedLibrary
         0: .line 159
            aload 3 /* cachedMessage */
            invokevirtual com.oracle.truffle.api.library.Message.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 4 /* cachedLibrary */
            aload 0 /* receiver */
            aload 3 /* cachedMessage */
            aload 2 /* args */
            iconst_0
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.genericDispatch:(Lcom/oracle/truffle/api/library/Library;Ljava/lang/Object;Lcom/oracle/truffle/api/library/Message;[Ljava/lang/Object;I)Ljava/lang/Object;
            areturn
        end local 4 // com.oracle.truffle.api.library.Library cachedLibrary
        end local 3 // com.oracle.truffle.api.library.Message cachedMessage
        end local 2 // java.lang.Object[] args
        end local 1 // com.oracle.truffle.api.library.Message message
        end local 0 // java.lang.Object receiver
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0       receiver  Ljava/lang/Object;
            0    1     1        message  Lcom/oracle/truffle/api/library/Message;
            0    1     2           args  [Ljava/lang/Object;
            0    1     3  cachedMessage  Lcom/oracle/truffle/api/library/Message;
            0    1     4  cachedLibrary  Lcom/oracle/truffle/api/library/Library;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"message == cachedMessage", "cachedLibrary.accepts(receiver)"}, limit = "LIMIT")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.oracle.truffle.api.dsl.Cached(value = "message")
      4:
        com.oracle.truffle.api.dsl.Cached(value = "createLibrary(message, receiver)")
    MethodParameters:
               Name  Flags
      receiver       
      message        
      args           
      cachedMessage  
      cachedLibrary  

  static com.oracle.truffle.api.library.Library createLibrary(com.oracle.truffle.api.library.Message, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/api/library/Message;Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.library.Message message
        start local 1 // java.lang.Object receiver
         0: .line 163
            aload 0 /* message */
            invokevirtual com.oracle.truffle.api.library.Message.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            aload 1 /* receiver */
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.create:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            areturn
        end local 1 // java.lang.Object receiver
        end local 0 // com.oracle.truffle.api.library.Message message
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0   message  Lcom/oracle/truffle/api/library/Message;
            0    1     1  receiver  Ljava/lang/Object;
    MethodParameters:
          Name  Flags
      message   
      receiver  

  static java.lang.Object doSendGeneric(java.lang.Object, com.oracle.truffle.api.library.Message, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/api/library/Message;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // java.lang.Object receiver
        start local 1 // com.oracle.truffle.api.library.Message message
        start local 2 // java.lang.Object[] args
         0: .line 169
            aload 1 /* message */
            invokevirtual com.oracle.truffle.api.library.Message.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            astore 3 /* lib */
        start local 3 // com.oracle.truffle.api.library.LibraryFactory lib
         1: .line 170
            aload 3 /* lib */
            aload 3 /* lib */
            aload 0 /* receiver */
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:(Ljava/lang/Object;)Lcom/oracle/truffle/api/library/Library;
            aload 0 /* receiver */
            aload 1 /* message */
            aload 2 /* args */
            iconst_0
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.genericDispatch:(Lcom/oracle/truffle/api/library/Library;Ljava/lang/Object;Lcom/oracle/truffle/api/library/Message;[Ljava/lang/Object;I)Ljava/lang/Object;
            areturn
        end local 3 // com.oracle.truffle.api.library.LibraryFactory lib
        end local 2 // java.lang.Object[] args
        end local 1 // com.oracle.truffle.api.library.Message message
        end local 0 // java.lang.Object receiver
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0  receiver  Ljava/lang/Object;
            0    2     1   message  Lcom/oracle/truffle/api/library/Message;
            0    2     2      args  [Ljava/lang/Object;
            1    2     3       lib  Lcom/oracle/truffle/api/library/LibraryFactory<*>;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(replaces = {"doSendCached"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
          Name  Flags
      receiver  
      message   
      args      
}
SourceFile: "ReflectionLibrary.java"
NestHost: com.oracle.truffle.api.library.ReflectionLibraryDefault
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  Send = com.oracle.truffle.api.library.ReflectionLibraryDefault$Send of com.oracle.truffle.api.library.ReflectionLibraryDefault
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()