abstract class com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode extends com.oracle.truffle.llvm.runtime.nodes.api.LLVMNode
  minor version: 0
  major version: 59
  flags: flags: (0x0420) ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode
  super_class: com.oracle.truffle.llvm.runtime.nodes.api.LLVMNode
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
         0: .line 47
            aload 0 /* this */
            invokespecial com.oracle.truffle.llvm.runtime.nodes.api.LLVMNode.<init>:()V
            return
        end local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode;

  protected abstract com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$AccessLocation execute(com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Structured, java.lang.Object, long);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Structured;Ljava/lang/Object;J)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$AccessLocation;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      type     
      foreign  
      offset   

  public static com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode create();
    descriptor: ()Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 66
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tLLVMInteropAccessNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$AccessLocation doArray(com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Array, java.lang.Object, long, com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Array;Ljava/lang/Object;JLcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$MakeAccessLocation;)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$AccessLocation;
    flags: (0x0000) 
    Code:
      stack=6, locals=10, args_size=5
        start local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
        start local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Array type
        start local 2 // java.lang.Object foreign
        start local 3 // long offset
        start local 5 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation makeAccessLocation
         0: .line 72
            lload 3 /* offset */
            aload 1 /* type */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Array.elementSize:J
            invokestatic java.lang.Long.divideUnsigned:(JJ)J
            lstore 6 /* index */
        start local 6 // long index
         1: .line 73
            lload 3 /* offset */
            aload 1 /* type */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Array.elementSize:J
            invokestatic java.lang.Long.remainderUnsigned:(JJ)J
            lstore 8 /* restOffset */
        start local 8 // long restOffset
         2: .line 74
            aload 5 /* makeAccessLocation */
            aload 2 /* foreign */
            lload 6 /* index */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 1 /* type */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Array.elementType:Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType;
            lload 8 /* restOffset */
            invokevirtual com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation.execute:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType;J)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$AccessLocation;
            areturn
        end local 8 // long restOffset
        end local 6 // long index
        end local 5 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation makeAccessLocation
        end local 3 // long offset
        end local 2 // java.lang.Object foreign
        end local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Array type
        end local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode;
            0    3     1                type  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Array;
            0    3     2             foreign  Ljava/lang/Object;
            0    3     3              offset  J
            0    3     5  makeAccessLocation  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$MakeAccessLocation;
            1    3     6               index  J
            2    3     8          restOffset  J
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization()
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
                    Name  Flags
      type                
      foreign             
      offset              
      makeAccessLocation  

  com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$AccessLocation doStructMember(com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct, java.lang.Object, long, com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember, com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;Ljava/lang/Object;JLcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$MakeAccessLocation;)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$AccessLocation;
    flags: (0x0000) 
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
        start local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct type
        start local 2 // java.lang.Object foreign
        start local 3 // long offset
        start local 5 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember cachedMember
        start local 6 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation makeAccessLocation
         0: .line 81
            aload 6 /* makeAccessLocation */
            aload 2 /* foreign */
            aload 5 /* cachedMember */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.name:Ljava/lang/String;
            aload 5 /* cachedMember */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.type:Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType;
            lload 3 /* offset */
            aload 5 /* cachedMember */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.startOffset:J
            lsub
            invokevirtual com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation.execute:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType;J)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$AccessLocation;
            areturn
        end local 6 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation makeAccessLocation
        end local 5 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember cachedMember
        end local 3 // long offset
        end local 2 // java.lang.Object foreign
        end local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct type
        end local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode;
            0    1     1                type  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;
            0    1     2             foreign  Ljava/lang/Object;
            0    1     3              offset  J
            0    1     5        cachedMember  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;
            0    1     6  makeAccessLocation  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$MakeAccessLocation;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(guards = {"checkMember(type, cachedMember, offset)"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.oracle.truffle.api.dsl.Cached(value = "findMember(type, offset)")
      4:
        com.oracle.truffle.api.dsl.Cached(value = "create()")
    MethodParameters:
                    Name  Flags
      type                
      foreign             
      offset              
      cachedMember        
      makeAccessLocation  

  com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$AccessLocation doStruct(com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct, java.lang.Object, long, com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;Ljava/lang/Object;JLcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$MakeAccessLocation;)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$AccessLocation;
    flags: (0x0000) 
    Code:
      stack=8, locals=7, args_size=5
        start local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
        start local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct type
        start local 2 // java.lang.Object foreign
        start local 3 // long offset
        start local 5 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation makeAccessLocation
         0: .line 87
            aload 1 /* type */
            lload 3 /* offset */
            invokestatic com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode.findMember:(Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;J)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;
            astore 6 /* member */
        start local 6 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember member
         1: .line 88
            aload 5 /* makeAccessLocation */
            aload 2 /* foreign */
            aload 6 /* member */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.name:Ljava/lang/String;
            aload 6 /* member */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.type:Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType;
            lload 3 /* offset */
            aload 6 /* member */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.startOffset:J
            lsub
            invokevirtual com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation.execute:(Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType;J)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$AccessLocation;
            areturn
        end local 6 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember member
        end local 5 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation makeAccessLocation
        end local 3 // long offset
        end local 2 // java.lang.Object foreign
        end local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct type
        end local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode;
            0    2     1                type  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;
            0    2     2             foreign  Ljava/lang/Object;
            0    2     3              offset  J
            0    2     5  makeAccessLocation  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropAccessNode$MakeAccessLocation;
            1    2     6              member  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.dsl.Specialization(replaces = {"doStructMember"})
    RuntimeInvisibleParameterAnnotations: 
      0:
      1:
      2:
      3:
        com.oracle.truffle.api.dsl.Cached()
    MethodParameters:
                    Name  Flags
      type                
      foreign             
      offset              
      makeAccessLocation  

  static boolean checkMember(com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct, com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember, long);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;J)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct struct
        start local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember member
        start local 2 // long offset
         0: .line 92
            aload 0 /* struct */
            aload 1 /* member */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.struct:Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;
            if_acmpne 1
            aload 1 /* member */
            lload 2 /* offset */
            invokevirtual com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.contains:(J)Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 2 // long offset
        end local 1 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember member
        end local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct struct
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  struct  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;
            0    2     1  member  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;
            0    2     2  offset  J
    MethodParameters:
        Name  Flags
      struct  
      member  
      offset  

  static com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember findMember(com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct, long);
    descriptor: (Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;J)Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct struct
        start local 1 // long offset
         0: .line 96
            aload 0 /* struct */
            getfield com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct.members:[Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 5
      StackMap locals: com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct long top int int com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember[]
      StackMap stack:
         1: aload 6
            iload 4
            aaload
            astore 3 /* m */
        start local 3 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember m
         2: .line 97
            aload 3 /* m */
            lload 1 /* offset */
            invokevirtual com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember.contains:(J)Z
            ifeq 4
         3: .line 98
            aload 3 /* m */
            areturn
        end local 3 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember m
         4: .line 96
      StackMap locals:
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
         5: iload 4
            iload 5
            if_icmplt 1
         6: .line 102
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
         7: .line 103
            new java.lang.IllegalStateException
            dup
            ldc "invalid struct access"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // long offset
        end local 0 // com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct struct
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0  struct  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$Struct;
            0    8     1  offset  J
            2    4     3       m  Lcom/oracle/truffle/llvm/runtime/interop/access/LLVMInteropType$StructMember;
    MethodParameters:
        Name  Flags
      struct  
      offset  
}
SourceFile: "LLVMInteropAccessNode.java"
NestMembers:
  com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$AccessLocation  com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation
InnerClasses:
  protected AccessLocation = com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$AccessLocation of com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode
  abstract MakeAccessLocation = com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode$MakeAccessLocation of com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropAccessNode
  public final Array = com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Array of com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType
  public Struct = com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Struct of com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType
  public final StructMember = com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$StructMember of com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType
  public abstract Structured = com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType$Structured of com.oracle.truffle.llvm.runtime.interop.access.LLVMInteropType
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.dsl.GenerateUncached()