public class org.jruby.ext.ffi.StructLayout$ArrayProxy extends org.jruby.RubyObject
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.ext.ffi.StructLayout$ArrayProxy
  super_class: org.jruby.RubyObject
{
  protected final org.jruby.ext.ffi.AbstractMemory ptr;
    descriptor: Lorg/jruby/ext/ffi/AbstractMemory;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  final org.jruby.ext.ffi.MemoryOp aio;
    descriptor: Lorg/jruby/ext/ffi/MemoryOp;
    flags: (0x0010) ACC_FINAL

  protected final org.jruby.ext.ffi.Type$Array arrayType;
    descriptor: Lorg/jruby/ext/ffi/Type$Array;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final boolean cacheable;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.jruby.runtime.builtin.IRubyObject[] valueCache;
    descriptor: [Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0002) ACC_PRIVATE

  void <init>(org.jruby.Ruby, org.jruby.runtime.builtin.IRubyObject, long, org.jruby.ext.ffi.Type$Array, org.jruby.ext.ffi.MemoryOp);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;JLorg/jruby/ext/ffi/Type$Array;Lorg/jruby/ext/ffi/MemoryOp;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.runtime.builtin.IRubyObject ptr
        start local 3 // long offset
        start local 5 // org.jruby.ext.ffi.Type$Array type
        start local 6 // org.jruby.ext.ffi.MemoryOp aio
         0: .line 951
            aload 0 /* this */
            aload 1 /* runtime */
            aload 1 /* runtime */
            ldc "FFI"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            ldc "StructLayout"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ldc "ArrayProxy"
            invokevirtual org.jruby.RubyClass.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
         1: .line 952
            aload 2 /* ptr */
            lload 3 /* offset */
            aload 5 /* type */
            aload 6 /* aio */
            invokespecial org.jruby.ext.ffi.StructLayout$ArrayProxy.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/jruby/runtime/builtin/IRubyObject;JLorg/jruby/ext/ffi/Type$Array;Lorg/jruby/ext/ffi/MemoryOp;)V
         2: .line 953
            return
        end local 6 // org.jruby.ext.ffi.MemoryOp aio
        end local 5 // org.jruby.ext.ffi.Type$Array type
        end local 3 // long offset
        end local 2 // org.jruby.runtime.builtin.IRubyObject ptr
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    3     1  runtime  Lorg/jruby/Ruby;
            0    3     2      ptr  Lorg/jruby/runtime/builtin/IRubyObject;
            0    3     3   offset  J
            0    3     5     type  Lorg/jruby/ext/ffi/Type$Array;
            0    3     6      aio  Lorg/jruby/ext/ffi/MemoryOp;
    MethodParameters:
         Name  Flags
      runtime  
      ptr      
      offset   
      type     
      aio      

  void <init>(org.jruby.Ruby, org.jruby.RubyClass, org.jruby.runtime.builtin.IRubyObject, long, org.jruby.ext.ffi.Type$Array, org.jruby.ext.ffi.MemoryOp);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Lorg/jruby/runtime/builtin/IRubyObject;JLorg/jruby/ext/ffi/Type$Array;Lorg/jruby/ext/ffi/MemoryOp;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=8, args_size=7
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.RubyClass klass
        start local 3 // org.jruby.runtime.builtin.IRubyObject ptr
        start local 4 // long offset
        start local 6 // org.jruby.ext.ffi.Type$Array type
        start local 7 // org.jruby.ext.ffi.MemoryOp aio
         0: .line 956
            aload 0 /* this */
            aload 1 /* runtime */
            aload 2 /* klass */
            invokespecial org.jruby.RubyObject.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
         1: .line 957
            aload 0 /* this */
            aload 6 /* type */
            invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
            ifle 3
         2: .line 958
            aload 3 /* ptr */
            checkcast org.jruby.ext.ffi.AbstractMemory
            aload 1 /* runtime */
            lload 4 /* offset */
            aload 6 /* type */
            invokevirtual org.jruby.ext.ffi.Type$Array.getNativeSize:()I
            i2l
            invokevirtual org.jruby.ext.ffi.AbstractMemory.slice:(Lorg/jruby/Ruby;JJ)Lorg/jruby/ext/ffi/AbstractMemory;
            goto 4
         3: .line 959
      StackMap locals: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.Ruby org.jruby.RubyClass org.jruby.runtime.builtin.IRubyObject long org.jruby.ext.ffi.Type$Array org.jruby.ext.ffi.MemoryOp
      StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy
            aload 3 /* ptr */
            checkcast org.jruby.ext.ffi.AbstractMemory
            aload 1 /* runtime */
            lload 4 /* offset */
            invokevirtual org.jruby.ext.ffi.AbstractMemory.slice:(Lorg/jruby/Ruby;J)Lorg/jruby/ext/ffi/AbstractMemory;
         4: .line 957
      StackMap locals: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.Ruby org.jruby.RubyClass org.jruby.runtime.builtin.IRubyObject long org.jruby.ext.ffi.Type$Array org.jruby.ext.ffi.MemoryOp
      StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.ext.ffi.AbstractMemory
            putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
         5: .line 960
            aload 0 /* this */
            aload 6 /* type */
            putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
         6: .line 961
            aload 0 /* this */
            aload 7 /* aio */
            putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.aio:Lorg/jruby/ext/ffi/MemoryOp;
         7: .line 962
            aload 0 /* this */
            aload 6 /* type */
            invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
            ifle 10
            aload 6 /* type */
            invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
            instanceof org.jruby.ext.ffi.Type$Array
            ifne 9
         8: .line 963
            aload 6 /* type */
            invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
            instanceof org.jruby.ext.ffi.StructByValue
            ifeq 10
      StackMap locals:
      StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy
         9: iconst_1
            goto 11
      StackMap locals:
      StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy
        10: iconst_0
        11: .line 962
      StackMap locals: org.jruby.ext.ffi.StructLayout$ArrayProxy org.jruby.Ruby org.jruby.RubyClass org.jruby.runtime.builtin.IRubyObject long org.jruby.ext.ffi.Type$Array org.jruby.ext.ffi.MemoryOp
      StackMap stack: org.jruby.ext.ffi.StructLayout$ArrayProxy int
            putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.cacheable:Z
        12: .line 964
            return
        end local 7 // org.jruby.ext.ffi.MemoryOp aio
        end local 6 // org.jruby.ext.ffi.Type$Array type
        end local 4 // long offset
        end local 3 // org.jruby.runtime.builtin.IRubyObject ptr
        end local 2 // org.jruby.RubyClass klass
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   13     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0   13     1  runtime  Lorg/jruby/Ruby;
            0   13     2    klass  Lorg/jruby/RubyClass;
            0   13     3      ptr  Lorg/jruby/runtime/builtin/IRubyObject;
            0   13     4   offset  J
            0   13     6     type  Lorg/jruby/ext/ffi/Type$Array;
            0   13     7      aio  Lorg/jruby/ext/ffi/MemoryOp;
    MethodParameters:
         Name  Flags
      runtime  
      klass    
      ptr      
      offset   
      type     
      aio      

  private long getOffset(int);
    descriptor: (I)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // int index
         0: .line 967
            iload 1 /* index */
            iflt 1
            iload 1 /* index */
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
            invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
            if_icmplt 2
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
            invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
            ifle 2
         1: .line 968
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.getRuntime:()Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "index "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* index */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " out of bounds"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newIndexError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
         2: .line 971
      StackMap locals:
      StackMap stack:
            iload 1 /* index */
            i2l
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
            invokevirtual org.jruby.ext.ffi.Type$Array.getComponentType:()Lorg/jruby/ext/ffi/Type;
            invokevirtual org.jruby.ext.ffi.Type.getNativeSize:()I
            i2l
            lmul
            lreturn
        end local 1 // int index
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    3     1  index  I
    MethodParameters:
       Name  Flags
      index  

  private org.jruby.runtime.builtin.IRubyObject get(org.jruby.runtime.ThreadContext, int);
    descriptor: (Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=4, args_size=3
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // int index
         0: .line 977
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
            ifnull 3
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
            iload 2 /* index */
            aaload
            dup
            astore 3 /* obj */
        start local 3 // org.jruby.runtime.builtin.IRubyObject obj
         1: ifnull 3
         2: .line 978
            aload 3 /* obj */
            areturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject obj
         3: .line 980
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* index */
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.aio:Lorg/jruby/ext/ffi/MemoryOp;
            aload 1 /* context */
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
            aload 0 /* this */
            iload 2 /* index */
            invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.getOffset:(I)J
            invokevirtual org.jruby.ext.ffi.MemoryOp.get:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ext/ffi/AbstractMemory;J)Lorg/jruby/runtime/builtin/IRubyObject;
            dup
            astore 3 /* obj */
        start local 3 // org.jruby.runtime.builtin.IRubyObject obj
         4: invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.putCachedValue:(ILorg/jruby/runtime/builtin/IRubyObject;)V
         5: .line 982
            aload 3 /* obj */
            areturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject obj
        end local 2 // int index
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    6     1  context  Lorg/jruby/runtime/ThreadContext;
            0    6     2    index  I
            1    3     3      obj  Lorg/jruby/runtime/builtin/IRubyObject;
            4    6     3      obj  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      context  
      index    

  public final void putCachedValue(int, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (ILorg/jruby/runtime/builtin/IRubyObject;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // int idx
        start local 2 // org.jruby.runtime.builtin.IRubyObject value
         0: .line 986
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.cacheable:Z
            ifeq 4
         1: .line 987
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
            ifnonnull 3
         2: .line 988
            aload 0 /* this */
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
            invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
            anewarray org.jruby.runtime.builtin.IRubyObject
            putfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
         3: .line 990
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.valueCache:[Lorg/jruby/runtime/builtin/IRubyObject;
            iload 1 /* idx */
            aload 2 /* value */
            aastore
         4: .line 992
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.jruby.runtime.builtin.IRubyObject value
        end local 1 // int idx
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    5     1    idx  I
            0    5     2  value  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
       Name  Flags
      idx    
      value  

  public org.jruby.runtime.builtin.IRubyObject get(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject index
         0: .line 996
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* index */
            invokestatic org.jruby.ext.ffi.Util.int32Value:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.get:(Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject index
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2    index  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"[]"})
    MethodParameters:
         Name  Flags
      context  
      index    

  public org.jruby.runtime.builtin.IRubyObject put(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject index
        start local 3 // org.jruby.runtime.builtin.IRubyObject value
         0: .line 1001
            aload 2 /* index */
            invokestatic org.jruby.ext.ffi.Util.int32Value:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 4 /* idx */
        start local 4 // int idx
         1: .line 1003
            aload 0 /* this */
            iload 4 /* idx */
            aload 3 /* value */
            invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.putCachedValue:(ILorg/jruby/runtime/builtin/IRubyObject;)V
         2: .line 1005
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.aio:Lorg/jruby/ext/ffi/MemoryOp;
            aload 1 /* context */
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
            aload 0 /* this */
            iload 4 /* idx */
            invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.getOffset:(I)J
            aload 3 /* value */
            invokevirtual org.jruby.ext.ffi.MemoryOp.put:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/ext/ffi/AbstractMemory;JLorg/jruby/runtime/builtin/IRubyObject;)V
         3: .line 1007
            aload 3 /* value */
            areturn
        end local 4 // int idx
        end local 3 // org.jruby.runtime.builtin.IRubyObject value
        end local 2 // org.jruby.runtime.builtin.IRubyObject index
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    4     1  context  Lorg/jruby/runtime/ThreadContext;
            0    4     2    index  Lorg/jruby/runtime/builtin/IRubyObject;
            0    4     3    value  Lorg/jruby/runtime/builtin/IRubyObject;
            1    4     4      idx  I
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"[]="})
    MethodParameters:
         Name  Flags
      context  
      index    
      value    

  public org.jruby.runtime.builtin.IRubyObject get(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 1013
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
            invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
            anewarray org.jruby.runtime.builtin.IRubyObject
            astore 2 /* elems */
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] elems
         1: .line 1014
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 5
         3: .line 1015
      StackMap locals: org.jruby.runtime.builtin.IRubyObject[] int
      StackMap stack:
            aload 2 /* elems */
            iload 3 /* i */
            aload 0 /* this */
            aload 1 /* context */
            iload 3 /* i */
            invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.get:(Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
            aastore
         4: .line 1014
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 3 /* i */
            aload 2 /* elems */
            arraylength
            if_icmplt 3
        end local 3 // int i
         6: .line 1018
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 2 /* elems */
            invokestatic org.jruby.RubyArray.newArrayMayCopy:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] elems
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    7     1  context  Lorg/jruby/runtime/ThreadContext;
            1    7     2    elems  [Lorg/jruby/runtime/builtin/IRubyObject;
            2    6     3        i  I
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"to_a", "to_ary"})
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject to_ptr(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 1023
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.ptr:Lorg/jruby/ext/ffi/AbstractMemory;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"to_ptr"})
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject size(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 1028
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
            aload 1 /* context */
            invokevirtual org.jruby.ext.ffi.Type$Array.length:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"size"})
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject each(org.jruby.runtime.ThreadContext, org.jruby.runtime.Block);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.Block block
         0: .line 1036
            aload 2 /* block */
            invokevirtual org.jruby.runtime.Block.isGiven:()Z
            ifne 2
         1: .line 1037
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.newLocalJumpErrorNoBlock:()Lorg/jruby/exceptions/RaiseException;
            athrow
         2: .line 1039
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         3: goto 6
         4: .line 1040
      StackMap locals: int
      StackMap stack:
            aload 2 /* block */
            aload 1 /* context */
            aload 0 /* this */
            aload 1 /* context */
            iload 3 /* i */
            invokevirtual org.jruby.ext.ffi.StructLayout$ArrayProxy.get:(Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual org.jruby.runtime.Block.yield:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            pop
         5: .line 1039
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 3 /* i */
            aload 0 /* this */
            getfield org.jruby.ext.ffi.StructLayout$ArrayProxy.arrayType:Lorg/jruby/ext/ffi/Type$Array;
            invokevirtual org.jruby.ext.ffi.Type$Array.length:()I
            if_icmplt 4
        end local 3 // int i
         7: .line 1042
            aload 0 /* this */
            areturn
        end local 2 // org.jruby.runtime.Block block
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.StructLayout$ArrayProxy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lorg/jruby/ext/ffi/StructLayout$ArrayProxy;
            0    8     1  context  Lorg/jruby/runtime/ThreadContext;
            0    8     2    block  Lorg/jruby/runtime/Block;
            3    7     3        i  I
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"each"})
    MethodParameters:
         Name  Flags
      context  
      block    
}
SourceFile: "StructLayout.java"
NestHost: org.jruby.ext.ffi.StructLayout
InnerClasses:
  public ArrayProxy = org.jruby.ext.ffi.StructLayout$ArrayProxy of org.jruby.ext.ffi.StructLayout
  public final Array = org.jruby.ext.ffi.Type$Array of org.jruby.ext.ffi.Type
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyClass(name = {"FFI::StructLayout::ArrayProxy"}, parent = "Object")