class com.oracle.truffle.api.test.builtin.BuiltinObject$InvokeMember
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.api.test.builtin.BuiltinObject$InvokeMember
  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.test.builtin.BuiltinObject$InvokeMember this
         0: .line 186
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.test.builtin.BuiltinObject$InvokeMember this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/test/builtin/BuiltinObject$InvokeMember;

  static java.lang.Object doCached(com.oracle.truffle.api.test.builtin.BuiltinObject, java.lang.String, java.lang.Object[], java.lang.String, com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry, com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinNode);
    descriptor: (Lcom/oracle/truffle/api/test/builtin/BuiltinObject;Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/String;Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;Lcom/oracle/truffle/api/test/builtin/BuiltinObject$BuiltinNode;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=6, args_size=6
        start local 0 // com.oracle.truffle.api.test.builtin.BuiltinObject receiver
        start local 1 // java.lang.String member
        start local 2 // java.lang.Object[] arguments
        start local 3 // java.lang.String cachedMember
        start local 4 // com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry cachedEntry
        start local 5 // com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinNode node
         0: .line 194
            aload 4 /* cachedEntry */
            ifnonnull 2
         1: .line 195
            aload 1 /* member */
            invokestatic com.oracle.truffle.api.interop.UnknownIdentifierException.create:(Ljava/lang/String;)Lcom/oracle/truffle/api/interop/UnknownIdentifierException;
            athrow
         2: .line 197
      StackMap locals:
      StackMap stack:
            aload 5 /* node */
            aload 4 /* cachedEntry */
            aload 0 /* receiver */
            aload 2 /* arguments */
            invokevirtual com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinNode.executeImpl:(Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;Lcom/oracle/truffle/api/test/builtin/BuiltinObject;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 5 // com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinNode node
        end local 4 // com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry cachedEntry
        end local 3 // java.lang.String cachedMember
        end local 2 // java.lang.Object[] arguments
        end local 1 // java.lang.String member
        end local 0 // com.oracle.truffle.api.test.builtin.BuiltinObject receiver
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0      receiver  Lcom/oracle/truffle/api/test/builtin/BuiltinObject;
            0    3     1        member  Ljava/lang/String;
            0    3     2     arguments  [Ljava/lang/Object;
            0    3     3  cachedMember  Ljava/lang/String;
            0    3     4   cachedEntry  Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;
            0    3     5          node  Lcom/oracle/truffle/api/test/builtin/BuiltinObject$BuiltinNode;
    Exceptions:
      throws com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnsupportedTypeException, com.oracle.truffle.api.interop.UnknownIdentifierException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"cachedMember.equals(member)"}, limit = "MEMBER_NAME_CACHE_SIZE")
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.oracle.truffle.api.dsl.Cached(value = "member")
      4:
        com.oracle.truffle.api.dsl.Cached(value = "getDescriptorImpl(receiver).lookup(cachedMember)")
      5:
        com.oracle.truffle.api.dsl.Cached(value = "createNode(cachedEntry)")
    MethodParameters:
              Name  Flags
      receiver      
      member        
      arguments     
      cachedMember  
      cachedEntry   
      node          

  protected static com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinNode createNode(com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry);
    descriptor: (Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;)Lcom/oracle/truffle/api/test/builtin/BuiltinObject$BuiltinNode;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry entry
         0: .line 201
            aload 0 /* entry */
            ifnonnull 2
         1: .line 202
            aconst_null
            areturn
         2: .line 204
      StackMap locals:
      StackMap stack:
            aload 0 /* entry */
            invokevirtual com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry.createNode:()Lcom/oracle/truffle/api/test/builtin/BuiltinObject$BuiltinNode;
            areturn
        end local 0 // com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry entry
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0  entry  Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;
    MethodParameters:
       Name  Flags
      entry  

  static java.lang.Object doUncached(com.oracle.truffle.api.test.builtin.BuiltinObject, java.lang.String, java.lang.Object[], com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinDescriptor);
    descriptor: (Lcom/oracle/truffle/api/test/builtin/BuiltinObject;Ljava/lang/String;[Ljava/lang/Object;Lcom/oracle/truffle/api/test/builtin/BuiltinObject$BuiltinDescriptor;)Ljava/lang/Object;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.api.test.builtin.BuiltinObject receiver
        start local 1 // java.lang.String member
        start local 2 // java.lang.Object[] arguments
        start local 3 // com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinDescriptor descriptor
         0: .line 212
            aload 3 /* descriptor */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinDescriptor.lookup:(Ljava/lang/String;)Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;
            astore 4 /* memberEntry */
        start local 4 // com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry memberEntry
         1: .line 213
            aload 4 /* memberEntry */
            ifnonnull 3
         2: .line 214
            aload 1 /* member */
            invokestatic com.oracle.truffle.api.interop.UnknownIdentifierException.create:(Ljava/lang/String;)Lcom/oracle/truffle/api/interop/UnknownIdentifierException;
            athrow
         3: .line 216
      StackMap locals: com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry
      StackMap stack:
            aload 4 /* memberEntry */
            getfield com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry.uncached:Lcom/oracle/truffle/api/test/builtin/BuiltinObject$BuiltinNode;
            aload 4 /* memberEntry */
            aload 0 /* receiver */
            aload 2 /* arguments */
            invokevirtual com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinNode.executeImpl:(Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;Lcom/oracle/truffle/api/test/builtin/BuiltinObject;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 4 // com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry memberEntry
        end local 3 // com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinDescriptor descriptor
        end local 2 // java.lang.Object[] arguments
        end local 1 // java.lang.String member
        end local 0 // com.oracle.truffle.api.test.builtin.BuiltinObject receiver
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0     receiver  Lcom/oracle/truffle/api/test/builtin/BuiltinObject;
            0    4     1       member  Ljava/lang/String;
            0    4     2    arguments  [Ljava/lang/Object;
            0    4     3   descriptor  Lcom/oracle/truffle/api/test/builtin/BuiltinObject$BuiltinDescriptor;
            1    4     4  memberEntry  Lcom/oracle/truffle/api/test/builtin/BuiltinObject$MemberEntry;
    Exceptions:
      throws com.oracle.truffle.api.interop.UnsupportedTypeException, com.oracle.truffle.api.interop.ArityException, com.oracle.truffle.api.interop.UnknownIdentifierException
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(replaces = {"doCached"})
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.oracle.truffle.api.dsl.Cached$Shared(value = "descriptor")
        com.oracle.truffle.api.dsl.Cached(value = "getDescriptorImpl(receiver)", allowUncached = true)
    MethodParameters:
            Name  Flags
      receiver    
      member      
      arguments   
      descriptor  
}
SourceFile: "BuiltinObject.java"
NestHost: com.oracle.truffle.api.test.builtin.BuiltinObject
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract Shared = com.oracle.truffle.api.dsl.Cached$Shared of com.oracle.truffle.api.dsl.Cached
  public final BuiltinDescriptor = com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinDescriptor of com.oracle.truffle.api.test.builtin.BuiltinObject
  public abstract BuiltinNode = com.oracle.truffle.api.test.builtin.BuiltinObject$BuiltinNode of com.oracle.truffle.api.test.builtin.BuiltinObject
  InvokeMember = com.oracle.truffle.api.test.builtin.BuiltinObject$InvokeMember of com.oracle.truffle.api.test.builtin.BuiltinObject
  MemberEntry = com.oracle.truffle.api.test.builtin.BuiltinObject$MemberEntry of com.oracle.truffle.api.test.builtin.BuiltinObject
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.library.ExportMessage()