public final class org.jruby.ext.ffi.Enum extends org.jruby.RubyObject
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.jruby.ext.ffi.Enum
  super_class: org.jruby.RubyObject
{
  private org.jruby.runtime.builtin.IRubyObject nativeType;
    descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0002) ACC_PRIVATE

  private final org.jruby.RubyHash kv_map;
    descriptor: Lorg/jruby/RubyHash;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile org.jruby.runtime.builtin.IRubyObject tag;
    descriptor: Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile java.util.Map<org.jruby.RubySymbol, org.jruby.RubyInteger> symbolToValue;
    descriptor: Ljava/util/Map;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljava/util/Map<Lorg/jruby/RubySymbol;Lorg/jruby/RubyInteger;>;

  private volatile java.util.concurrent.ConcurrentHashMap<java.lang.Long, org.jruby.RubySymbol> valueToSymbol;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/Long;Lorg/jruby/RubySymbol;>;

  public static org.jruby.RubyClass createEnumClass(org.jruby.Ruby, org.jruby.RubyModule);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyModule;)Lorg/jruby/RubyClass;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // org.jruby.RubyModule ffiModule
         0: .line 63
            aload 1 /* ffiModule */
            ldc "Enum"
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getObject:()Lorg/jruby/RubyClass;
         1: .line 64
            getstatic org.jruby.ext.ffi.Enum$Allocator.INSTANCE:Lorg/jruby/runtime/ObjectAllocator;
         2: .line 63
            invokevirtual org.jruby.RubyModule.defineClassUnder:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 2 /* enumClass */
        start local 2 // org.jruby.RubyClass enumClass
         3: .line 65
            aload 2 /* enumClass */
            ldc Lorg/jruby/ext/ffi/Enum;
            invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
         4: .line 66
            aload 2 /* enumClass */
            ldc Lorg/jruby/ext/ffi/Enum;
            invokevirtual org.jruby.RubyClass.defineAnnotatedConstants:(Ljava/lang/Class;)V
         5: .line 67
            aload 2 /* enumClass */
            aload 1 /* ffiModule */
            ldc "DataConverter"
            invokevirtual org.jruby.RubyModule.getConstant:(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual org.jruby.RubyClass.includeModule:(Lorg/jruby/runtime/builtin/IRubyObject;)V
         6: .line 69
            aload 2 /* enumClass */
            areturn
        end local 2 // org.jruby.RubyClass enumClass
        end local 1 // org.jruby.RubyModule ffiModule
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0    runtime  Lorg/jruby/Ruby;
            0    7     1  ffiModule  Lorg/jruby/RubyModule;
            3    7     2  enumClass  Lorg/jruby/RubyClass;
    MethodParameters:
           Name  Flags
      runtime    
      ffiModule  

  private void <init>(org.jruby.Ruby, org.jruby.RubyClass);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.RubyClass klass
         0: .line 81
            aload 0 /* this */
            aload 1 /* runtime */
            aload 2 /* klass */
            invokespecial org.jruby.RubyObject.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
         1: .line 59
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            putfield org.jruby.ext.ffi.Enum.symbolToValue:Ljava/util/Map;
         2: .line 60
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.jruby.ext.ffi.Enum.valueToSymbol:Ljava/util/concurrent/ConcurrentHashMap;
         3: .line 82
            aload 0 /* this */
            aload 1 /* runtime */
            invokestatic org.jruby.RubyHash.newHash:(Lorg/jruby/Ruby;)Lorg/jruby/RubyHash;
            putfield org.jruby.ext.ffi.Enum.kv_map:Lorg/jruby/RubyHash;
         4: .line 83
            aload 0 /* this */
            aload 1 /* runtime */
            invokevirtual org.jruby.Ruby.getNil:()Lorg/jruby/runtime/builtin/IRubyObject;
            putfield org.jruby.ext.ffi.Enum.tag:Lorg/jruby/runtime/builtin/IRubyObject;
         5: .line 84
            return
        end local 2 // org.jruby.RubyClass klass
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/jruby/ext/ffi/Enum;
            0    6     1  runtime  Lorg/jruby/Ruby;
            0    6     2    klass  Lorg/jruby/RubyClass;
    MethodParameters:
         Name  Flags
      runtime  
      klass    

  public final org.jruby.runtime.builtin.IRubyObject initialize(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: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject arg
         0: .line 88
            aload 0 /* this */
            aload 1 /* context */
            aconst_null
            aconst_null
            aload 2 /* arg */
            invokevirtual org.jruby.ext.ffi.Enum.initialize:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject arg
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/Enum;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2      arg  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"initialize"}, visibility = org.jruby.runtime.Visibility.PRIVATE:Lorg/jruby/runtime/Visibility;)
    MethodParameters:
         Name  Flags
      context  
      arg      

  public final org.jruby.runtime.builtin.IRubyObject initialize(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: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject arg0
        start local 3 // org.jruby.runtime.builtin.IRubyObject arg1
         0: .line 93
            aload 2 /* arg0 */
            instanceof org.jruby.ext.ffi.Type
            ifeq 2
         1: .line 94
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* arg0 */
            aload 3 /* arg1 */
            aconst_null
            invokevirtual org.jruby.ext.ffi.Enum.initialize:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         2: .line 96
      StackMap locals:
      StackMap stack:
            aload 3 /* arg1 */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifeq 4
         3: .line 97
            aload 0 /* this */
            aload 1 /* context */
            aconst_null
            aload 2 /* arg0 */
            aconst_null
            invokevirtual org.jruby.ext.ffi.Enum.initialize:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         4: .line 100
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* context */
            aconst_null
            aload 2 /* arg0 */
            aload 3 /* arg1 */
            invokevirtual org.jruby.ext.ffi.Enum.initialize:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject arg1
        end local 2 // org.jruby.runtime.builtin.IRubyObject arg0
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/jruby/ext/ffi/Enum;
            0    5     1  context  Lorg/jruby/runtime/ThreadContext;
            0    5     2     arg0  Lorg/jruby/runtime/builtin/IRubyObject;
            0    5     3     arg1  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"initialize"}, visibility = org.jruby.runtime.Visibility.PRIVATE:Lorg/jruby/runtime/Visibility;)
    MethodParameters:
         Name  Flags
      context  
      arg0     
      arg1     

  public final org.jruby.runtime.builtin.IRubyObject initialize(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, 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;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=12, args_size=5
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject type
        start local 3 // org.jruby.runtime.builtin.IRubyObject values
        start local 4 // org.jruby.runtime.builtin.IRubyObject tag
         0: .line 106
            aload 2 /* type */
            instanceof org.jruby.ext.ffi.Type
            ifeq 3
         1: .line 107
            aload 0 /* this */
            aload 2 /* type */
            putfield org.jruby.ext.ffi.Enum.nativeType:Lorg/jruby/runtime/builtin/IRubyObject;
         2: .line 108
            goto 6
         3: .line 109
      StackMap locals:
      StackMap stack:
            aload 2 /* type */
            ifnull 5
            aload 2 /* type */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifne 5
         4: .line 110
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 2 /* type */
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "FFI"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            ldc "Type"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
            athrow
         5: .line 112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "FFI"
            invokevirtual org.jruby.Ruby.getModule:(Ljava/lang/String;)Lorg/jruby/RubyModule;
            ldc "Type"
            invokevirtual org.jruby.RubyModule.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            ldc "INT"
            invokevirtual org.jruby.RubyClass.getConstant:(Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            putfield org.jruby.ext.ffi.Enum.nativeType:Lorg/jruby/runtime/builtin/IRubyObject;
         6: .line 115
      StackMap locals:
      StackMap stack:
            aload 4 /* tag */
            ifnull 8
            aload 4 /* tag */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifne 8
            aload 4 /* tag */
            instanceof org.jruby.RubySymbol
            ifne 8
         7: .line 116
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 4 /* tag */
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getSymbol:()Lorg/jruby/RubyClass;
            invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
            athrow
         8: .line 118
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* tag */
            putfield org.jruby.ext.ffi.Enum.tag:Lorg/jruby/runtime/builtin/IRubyObject;
         9: .line 120
            aload 3 /* values */
            instanceof org.jruby.RubyArray
            ifne 11
        10: .line 121
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 3 /* values */
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getArray:()Lorg/jruby/RubyClass;
            invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
            athrow
        11: .line 124
      StackMap locals:
      StackMap stack:
            aload 3 /* values */
            checkcast org.jruby.RubyArray
            astore 5 /* ary */
        start local 5 // org.jruby.RubyArray ary
        12: .line 126
            new java.util.IdentityHashMap
            dup
            invokespecial java.util.IdentityHashMap.<init>:()V
            astore 6 /* s2v */
        start local 6 // java.util.Map s2v
        13: .line 127
            aconst_null
            astore 7 /* prevConstant */
        start local 7 // org.jruby.runtime.builtin.IRubyObject prevConstant
        14: .line 128
            lconst_0
            lstore 8 /* nextValue */
        start local 8 // long nextValue
        15: .line 130
            iconst_0
            istore 10 /* i */
        start local 10 // int i
        16: goto 33
        17: .line 131
      StackMap locals: org.jruby.ext.ffi.Enum org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.RubyArray java.util.Map org.jruby.runtime.builtin.IRubyObject long int
      StackMap stack:
            aload 5 /* ary */
            iload 10 /* i */
            invokevirtual org.jruby.RubyArray.entry:(I)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 11 /* v */
        start local 11 // org.jruby.runtime.builtin.IRubyObject v
        18: .line 133
            aload 11 /* v */
            instanceof org.jruby.RubySymbol
            ifeq 23
        19: .line 134
            aload 6 /* s2v */
            aload 11 /* v */
            checkcast org.jruby.RubySymbol
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            lload 8 /* nextValue */
            invokestatic org.jruby.RubyFixnum.newFixnum:(Lorg/jruby/Ruby;J)Lorg/jruby/RubyFixnum;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        20: .line 135
            aload 11 /* v */
            astore 7 /* prevConstant */
        21: .line 136
            lload 8 /* nextValue */
            lconst_1
            ladd
            lstore 8 /* nextValue */
        22: .line 138
            goto 32
      StackMap locals: org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
        23: aload 11 /* v */
            instanceof org.jruby.RubyInteger
            ifeq 31
        24: .line 139
            aload 7 /* prevConstant */
            ifnonnull 28
        25: .line 140
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "invalid enum sequence - no symbol for value "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        26: .line 141
            aload 11 /* v */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        27: .line 140
            invokevirtual org.jruby.Ruby.newArgumentError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        28: .line 143
      StackMap locals:
      StackMap stack:
            aload 6 /* s2v */
            aload 7 /* prevConstant */
            checkcast org.jruby.RubySymbol
            aload 11 /* v */
            checkcast org.jruby.RubyFixnum
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        29: .line 144
            aload 11 /* v */
            checkcast org.jruby.RubyInteger
            invokevirtual org.jruby.RubyInteger.getLongValue:()J
            lconst_1
            ladd
            lstore 8 /* nextValue */
        30: .line 146
            goto 32
        31: .line 147
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 11 /* v */
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getSymbol:()Lorg/jruby/RubyClass;
            invokevirtual org.jruby.Ruby.newTypeError:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 11 // org.jruby.runtime.builtin.IRubyObject v
        32: .line 130
      StackMap locals:
      StackMap stack:
            iinc 10 /* i */ 1
      StackMap locals:
      StackMap stack:
        33: iload 10 /* i */
            aload 5 /* ary */
            invokevirtual org.jruby.RubyArray.size:()I
            if_icmplt 17
        end local 10 // int i
        34: .line 151
            aload 0 /* this */
            new java.util.IdentityHashMap
            dup
            aload 6 /* s2v */
            invokespecial java.util.IdentityHashMap.<init>:(Ljava/util/Map;)V
            putfield org.jruby.ext.ffi.Enum.symbolToValue:Ljava/util/Map;
        35: .line 152
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.symbolToValue:Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:(I)V
            putfield org.jruby.ext.ffi.Enum.valueToSymbol:Ljava/util/concurrent/ConcurrentHashMap;
        36: .line 153
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.symbolToValue:Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 11
            goto 40
      StackMap locals: org.jruby.ext.ffi.Enum org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.RubyArray java.util.Map org.jruby.runtime.builtin.IRubyObject long top java.util.Iterator
      StackMap stack:
        37: aload 11
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 10 /* e */
        start local 10 // java.util.Map$Entry e
        38: .line 154
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.kv_map:Lorg/jruby/RubyHash;
            aload 10 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.jruby.runtime.builtin.IRubyObject
            aload 10 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.jruby.runtime.builtin.IRubyObject
            invokevirtual org.jruby.RubyHash.fastASet:(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)V
        39: .line 155
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.valueToSymbol:Ljava/util/concurrent/ConcurrentHashMap;
            aload 10 /* e */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast org.jruby.RubyInteger
            invokevirtual org.jruby.RubyInteger.getLongValue:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 10 /* e */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.jruby.RubySymbol
            invokevirtual java.util.concurrent.ConcurrentHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 10 // java.util.Map$Entry e
        40: .line 153
      StackMap locals:
      StackMap stack:
            aload 11
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 37
        41: .line 158
            aload 0 /* this */
            areturn
        end local 8 // long nextValue
        end local 7 // org.jruby.runtime.builtin.IRubyObject prevConstant
        end local 6 // java.util.Map s2v
        end local 5 // org.jruby.RubyArray ary
        end local 4 // org.jruby.runtime.builtin.IRubyObject tag
        end local 3 // org.jruby.runtime.builtin.IRubyObject values
        end local 2 // org.jruby.runtime.builtin.IRubyObject type
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   42     0          this  Lorg/jruby/ext/ffi/Enum;
            0   42     1       context  Lorg/jruby/runtime/ThreadContext;
            0   42     2          type  Lorg/jruby/runtime/builtin/IRubyObject;
            0   42     3        values  Lorg/jruby/runtime/builtin/IRubyObject;
            0   42     4           tag  Lorg/jruby/runtime/builtin/IRubyObject;
           12   42     5           ary  Lorg/jruby/RubyArray;
           13   42     6           s2v  Ljava/util/Map<Lorg/jruby/RubySymbol;Lorg/jruby/RubyInteger;>;
           14   42     7  prevConstant  Lorg/jruby/runtime/builtin/IRubyObject;
           15   42     8     nextValue  J
           16   34    10             i  I
           18   32    11             v  Lorg/jruby/runtime/builtin/IRubyObject;
           38   40    10             e  Ljava/util/Map$Entry<Lorg/jruby/RubySymbol;Lorg/jruby/RubyInteger;>;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"initialize"}, visibility = org.jruby.runtime.Visibility.PRIVATE:Lorg/jruby/runtime/Visibility;)
    MethodParameters:
         Name  Flags
      context  
      type     
      values   
      tag      

  public final org.jruby.runtime.builtin.IRubyObject find(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: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject query
         0: .line 163
            aload 2 /* query */
            instanceof org.jruby.RubySymbol
            ifeq 5
         1: .line 164
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.kv_map:Lorg/jruby/RubyHash;
            aload 2 /* query */
            invokevirtual org.jruby.RubyHash.fastARef:(Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 3 /* value */
        start local 3 // org.jruby.runtime.builtin.IRubyObject value
         2: .line 165
            aload 3 /* value */
            ifnull 3
            aload 3 /* value */
            goto 4
      StackMap locals: org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
         3: aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
      StackMap locals:
      StackMap stack: org.jruby.runtime.builtin.IRubyObject
         4: areturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject value
         5: .line 167
      StackMap locals:
      StackMap stack:
            aload 2 /* query */
            instanceof org.jruby.RubyInteger
            ifeq 10
         6: .line 168
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.valueToSymbol:Ljava/util/concurrent/ConcurrentHashMap;
            aload 2 /* query */
            checkcast org.jruby.RubyInteger
            invokevirtual org.jruby.RubyInteger.getLongValue:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.RubySymbol
            astore 3 /* symbol */
        start local 3 // org.jruby.RubySymbol symbol
         7: .line 169
            aload 3 /* symbol */
            ifnull 8
            aload 3 /* symbol */
            goto 9
      StackMap locals: org.jruby.RubySymbol
      StackMap stack:
         8: aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
      StackMap locals:
      StackMap stack: org.jruby.runtime.builtin.IRubyObject
         9: areturn
        end local 3 // org.jruby.RubySymbol symbol
        10: .line 172
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject query
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0     this  Lorg/jruby/ext/ffi/Enum;
            0   11     1  context  Lorg/jruby/runtime/ThreadContext;
            0   11     2    query  Lorg/jruby/runtime/builtin/IRubyObject;
            2    5     3    value  Lorg/jruby/runtime/builtin/IRubyObject;
            7   10     3   symbol  Lorg/jruby/RubySymbol;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"[]", "find"})
    MethodParameters:
         Name  Flags
      context  
      query    

  public final org.jruby.runtime.builtin.IRubyObject symbol_map(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 178
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.kv_map:Lorg/jruby/RubyHash;
            aload 1 /* context */
            invokevirtual org.jruby.RubyHash.dup:(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.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/Enum;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"symbol_map", "to_h", "to_hash"})
    MethodParameters:
         Name  Flags
      context  

  public final org.jruby.runtime.builtin.IRubyObject symbols(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 183
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.kv_map:Lorg/jruby/RubyHash;
            aload 1 /* context */
            invokevirtual org.jruby.RubyHash.keys:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/RubyArray;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/Enum;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"symbols"})
    MethodParameters:
         Name  Flags
      context  

  public final org.jruby.runtime.builtin.IRubyObject tag(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 188
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.tag:Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/Enum;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"tag"})
    MethodParameters:
         Name  Flags
      context  

  public final org.jruby.runtime.builtin.IRubyObject native_type(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 193
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.nativeType:Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/Enum;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"native_type"})
    MethodParameters:
         Name  Flags
      context  

  public final org.jruby.runtime.builtin.IRubyObject to_native(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: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject name
        start local 3 // org.jruby.runtime.builtin.IRubyObject ctx
         0: .line 200
            aload 2 /* name */
            instanceof org.jruby.RubyFixnum
            ifeq 2
         1: .line 201
            aload 2 /* name */
            areturn
         2: .line 203
      StackMap locals:
      StackMap stack:
            aload 2 /* name */
            instanceof org.jruby.RubySymbol
            ifeq 5
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.symbolToValue:Ljava/util/Map;
            aload 2 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.RubyInteger
            dup
            astore 4 /* value */
        start local 4 // org.jruby.RubyInteger value
         3: ifnull 5
         4: .line 204
            aload 4 /* value */
            areturn
        end local 4 // org.jruby.RubyInteger value
         5: .line 206
      StackMap locals:
      StackMap stack:
            aload 2 /* name */
            instanceof org.jruby.RubyInteger
            ifeq 7
         6: .line 207
            aload 2 /* name */
            areturn
         7: .line 209
      StackMap locals:
      StackMap stack:
            aload 2 /* name */
            ldc "to_int"
            invokeinterface org.jruby.runtime.builtin.IRubyObject.respondsTo:(Ljava/lang/String;)Z
            ifeq 9
         8: .line 211
            aload 2 /* name */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToInteger:()Lorg/jruby/RubyInteger;
            areturn
         9: .line 214
      StackMap locals:
      StackMap stack:
            aload 2 /* name */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            ldc "invalid enum value, "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* name */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.inspect:()Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newArgumentError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 3 // org.jruby.runtime.builtin.IRubyObject ctx
        end local 2 // org.jruby.runtime.builtin.IRubyObject name
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lorg/jruby/ext/ffi/Enum;
            0   10     1  context  Lorg/jruby/runtime/ThreadContext;
            0   10     2     name  Lorg/jruby/runtime/builtin/IRubyObject;
            0   10     3      ctx  Lorg/jruby/runtime/builtin/IRubyObject;
            3    5     4    value  Lorg/jruby/RubyInteger;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"to_native"})
    MethodParameters:
         Name  Flags
      context  
      name     
      ctx      

  public final org.jruby.runtime.builtin.IRubyObject from_native(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: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // org.jruby.ext.ffi.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject value
        start local 3 // org.jruby.runtime.builtin.IRubyObject ctx
         0: .line 223
            aload 2 /* value */
            instanceof org.jruby.RubyInteger
            ifeq 3
            aload 0 /* this */
            getfield org.jruby.ext.ffi.Enum.valueToSymbol:Ljava/util/concurrent/ConcurrentHashMap;
            aload 2 /* value */
            checkcast org.jruby.RubyInteger
            invokevirtual org.jruby.RubyInteger.getLongValue:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.jruby.RubySymbol
            dup
            astore 4 /* sym */
        start local 4 // org.jruby.RubySymbol sym
         1: ifnull 3
         2: .line 224
            aload 4 /* sym */
            areturn
        end local 4 // org.jruby.RubySymbol sym
         3: .line 227
      StackMap locals:
      StackMap stack:
            aload 2 /* value */
            areturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject ctx
        end local 2 // org.jruby.runtime.builtin.IRubyObject value
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/jruby/ext/ffi/Enum;
            0    4     1  context  Lorg/jruby/runtime/ThreadContext;
            0    4     2    value  Lorg/jruby/runtime/builtin/IRubyObject;
            0    4     3      ctx  Lorg/jruby/runtime/builtin/IRubyObject;
            1    3     4      sym  Lorg/jruby/RubySymbol;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"from_native"})
    MethodParameters:
         Name  Flags
      context  
      value    
      ctx      

  public org.jruby.runtime.builtin.IRubyObject reference_required_p(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.Enum this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 232
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.fals:Lorg/jruby/RubyBoolean;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.ffi.Enum this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/ffi/Enum;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"reference_required?"})
    MethodParameters:
         Name  Flags
      context  
}
SourceFile: "Enum.java"
NestMembers:
  org.jruby.ext.ffi.Enum$Allocator
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  private final Allocator = org.jruby.ext.ffi.Enum$Allocator of org.jruby.ext.ffi.Enum
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyClass(name = {"FFI::Enum"}, parent = "Object")