public abstract class org.jruby.ext.ffi.Factory
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.jruby.ext.ffi.Factory
  super_class: java.lang.Object
{
  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ext.ffi.Factory this
         0: .line 79
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 80
            return
        end local 0 // org.jruby.ext.ffi.Factory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/jruby/ext/ffi/Factory;

  public static final org.jruby.ext.ffi.Factory getInstance();
    descriptor: ()Lorg/jruby/ext/ffi/Factory;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Code:
      stack=1, locals=0, args_size=0
         0: .line 88
            getstatic org.jruby.ext.ffi.Factory$SingletonHolder.INSTANCE:Lorg/jruby/ext/ffi/Factory;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void init(org.jruby.Ruby, org.jruby.RubyModule);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.jruby.ext.ffi.Factory this
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.RubyModule ffi
         0: .line 97
            aload 2 /* ffi */
            dup
            astore 3
            monitorenter
         1: .line 98
            aload 2 /* ffi */
            ldc "Type"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 3
         2: .line 99
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.Type.createTypeClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
         3: .line 101
      StackMap locals: org.jruby.RubyModule
      StackMap stack:
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.DataConverter.createDataConverterModule:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyModule;
            pop
         4: .line 103
            aload 2 /* ffi */
            ldc "AbstractMemory"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 6
         5: .line 104
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.AbstractMemory.createAbstractMemoryClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
         6: .line 106
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "Buffer"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 8
         7: .line 107
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.Buffer.createBufferClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
         8: .line 109
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "Pointer"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 10
         9: .line 110
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.Pointer.createPointerClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        10: .line 112
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "AutoPointer"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 12
        11: .line 113
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.AutoPointer.createAutoPointerClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        12: .line 115
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "MemoryPointer"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 14
        13: .line 116
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.MemoryPointer.createMemoryPointerClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        14: .line 118
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "Struct"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 16
        15: .line 119
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.Struct.createStructClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        16: .line 121
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "StructLayout"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 18
        17: .line 122
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.StructLayout.createStructLayoutClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        18: .line 124
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "StructByValue"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 20
        19: .line 125
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.StructByValue.createStructByValueClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        20: .line 127
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "AbstractInvoker"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 22
        21: .line 128
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.AbstractInvoker.createAbstractInvokerClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        22: .line 130
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "CallbackInfo"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 24
        23: .line 131
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.CallbackInfo.createCallbackInfoClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        24: .line 133
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "Enum"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 26
        25: .line 134
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.Enum.createEnumClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        26: .line 136
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "Enums"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 28
        27: .line 137
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.Enums.createEnumsClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        28: .line 139
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "Type"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ldc "Mapped"
            invokevirtual org.jruby.RubyClass.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 30
        29: .line 140
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.MappedType.createConverterTypeClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        30: .line 142
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "FileDescriptorIO"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ifnonnull 32
        31: .line 143
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.io.FileDescriptorIO.createFileDescriptorIOClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        32: .line 146
      StackMap locals:
      StackMap stack:
            aload 2 /* ffi */
            ldc "TypeDefs"
            aload 1 /* runtime */
            invokestatic org.jruby.RubyHash.newHash:(Lorg/jruby/Ruby;)Lorg/jruby/RubyHash;
            invokevirtual org.jruby.RubyModule.setConstant:(Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            pop
        33: .line 148
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.Platform.createPlatformModule:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)V
        34: .line 149
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.IOModule.createIOModule:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)V
        35: .line 151
            aload 1 /* runtime */
            aload 2 /* ffi */
            invokestatic org.jruby.ext.ffi.StructByReference.createStructByReferenceClass:(Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
            pop
        36: .line 97
            aload 3
            monitorexit
        37: goto 40
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: aload 3
            monitorexit
        39: athrow
        40: .line 153
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.jruby.RubyModule ffi
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.ext.ffi.Factory this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   41     0     this  Lorg/jruby/ext/ffi/Factory;
            0   41     1  runtime  Lorg/jruby/Ruby;
            0   41     2      ffi  Lorg/jruby/RubyModule;
      Exception table:
        from    to  target  type
           1    37      38  any
          38    39      38  any
    MethodParameters:
         Name  Flags
      runtime  
      ffi      

  public abstract org.jruby.ext.ffi.MemoryIO allocateDirectMemory(org.jruby.Ruby, int, boolean);
    descriptor: (Lorg/jruby/Ruby;IZ)Lorg/jruby/ext/ffi/MemoryIO;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      runtime  
      size     
      clear    

  public abstract org.jruby.ext.ffi.MemoryIO allocateDirectMemory(org.jruby.Ruby, int, int, boolean);
    descriptor: (Lorg/jruby/Ruby;IIZ)Lorg/jruby/ext/ffi/MemoryIO;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      runtime  
      size     
      align    
      clear    

  public abstract org.jruby.ext.ffi.MemoryIO allocateTransientDirectMemory(org.jruby.Ruby, int, int, boolean);
    descriptor: (Lorg/jruby/Ruby;IIZ)Lorg/jruby/ext/ffi/MemoryIO;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      runtime  
      size     
      align    
      clear    

  public abstract org.jruby.ext.ffi.MemoryIO wrapDirectMemory(org.jruby.Ruby, long);
    descriptor: (Lorg/jruby/Ruby;J)Lorg/jruby/ext/ffi/MemoryIO;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      runtime  
      address  

  public abstract org.jruby.ext.ffi.CallbackManager getCallbackManager();
    descriptor: ()Lorg/jruby/ext/ffi/CallbackManager;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract org.jruby.ext.ffi.AbstractInvoker newFunction(org.jruby.Ruby, org.jruby.ext.ffi.Pointer, org.jruby.ext.ffi.CallbackInfo);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/ext/ffi/Pointer;Lorg/jruby/ext/ffi/CallbackInfo;)Lorg/jruby/ext/ffi/AbstractInvoker;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      runtime  
      address  
      cbInfo   

  public abstract int sizeOf(org.jruby.ext.ffi.NativeType);
    descriptor: (Lorg/jruby/ext/ffi/NativeType;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      type  

  public abstract int alignmentOf(org.jruby.ext.ffi.NativeType);
    descriptor: (Lorg/jruby/ext/ffi/NativeType;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      type  
}
SourceFile: "Factory.java"
NestMembers:
  org.jruby.ext.ffi.Factory$SingletonHolder
InnerClasses:
  private final SingletonHolder = org.jruby.ext.ffi.Factory$SingletonHolder of org.jruby.ext.ffi.Factory