public class org.jruby.ext.socket.RubyBasicSocket extends org.jruby.RubyIO
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.ext.socket.RubyBasicSocket
  super_class: org.jruby.RubyIO
{
  private static org.jruby.runtime.ObjectAllocator BASICSOCKET_ALLOCATOR;
    descriptor: Lorg/jruby/runtime/ObjectAllocator;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private static final org.jruby.util.ByteList FORMAT_SMALL_I;
    descriptor: Lorg/jruby/util/ByteList;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  protected org.jruby.ext.socket.MulticastStateManager multicastStateManager;
    descriptor: Lorg/jruby/ext/socket/MulticastStateManager;
    flags: (0x0004) ACC_PROTECTED

  private boolean doNotReverseLookup;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private static volatile int[] $SWITCH_TABLE$jnr$constants$platform$SocketLevel;
    descriptor: [I
    flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 88
            new org.jruby.ext.socket.RubyBasicSocket$1
            dup
            invokespecial org.jruby.ext.socket.RubyBasicSocket$1.<init>:()V
            putstatic org.jruby.ext.socket.RubyBasicSocket.BASICSOCKET_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
         1: .line 769
            new org.jruby.util.ByteList
            dup
            iconst_1
            newarray 8
            dup
            iconst_0
            bipush 105
            bastore
            iconst_0
            invokespecial org.jruby.util.ByteList.<init>:([BZ)V
            putstatic org.jruby.ext.socket.RubyBasicSocket.FORMAT_SMALL_I:Lorg/jruby/util/ByteList;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void createBasicSocket(org.jruby.Ruby);
    descriptor: (Lorg/jruby/Ruby;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.jruby.Ruby runtime
         0: .line 82
            aload 0 /* runtime */
            ldc "BasicSocket"
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getIO:()Lorg/jruby/RubyClass;
            getstatic org.jruby.ext.socket.RubyBasicSocket.BASICSOCKET_ALLOCATOR:Lorg/jruby/runtime/ObjectAllocator;
            invokevirtual org.jruby.Ruby.defineClass:(Ljava/lang/String;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ObjectAllocator;)Lorg/jruby/RubyClass;
            astore 1 /* rb_cBasicSocket */
        start local 1 // org.jruby.RubyClass rb_cBasicSocket
         1: .line 84
            aload 1 /* rb_cBasicSocket */
            ldc Lorg/jruby/ext/socket/RubyBasicSocket;
            invokevirtual org.jruby.RubyClass.defineAnnotatedMethods:(Ljava/lang/Class;)V
         2: .line 85
            aload 1 /* rb_cBasicSocket */
            ldc "initialize"
            invokevirtual org.jruby.RubyClass.undefineMethod:(Ljava/lang/String;)V
         3: .line 86
            return
        end local 1 // org.jruby.RubyClass rb_cBasicSocket
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0          runtime  Lorg/jruby/Ruby;
            1    4     1  rb_cBasicSocket  Lorg/jruby/RubyClass;
    MethodParameters:
         Name  Flags
      runtime  

  public void <init>(org.jruby.Ruby, org.jruby.RubyClass);
    descriptor: (Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.Ruby runtime
        start local 2 // org.jruby.RubyClass type
         0: .line 95
            aload 0 /* this */
            aload 1 /* runtime */
            aload 2 /* type */
            invokespecial org.jruby.RubyIO.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)V
         1: .line 770
            aload 0 /* this */
            aconst_null
            putfield org.jruby.ext.socket.RubyBasicSocket.multicastStateManager:Lorg/jruby/ext/socket/MulticastStateManager;
         2: .line 773
            aload 0 /* this */
            iconst_0
            putfield org.jruby.ext.socket.RubyBasicSocket.doNotReverseLookup:Z
         3: .line 96
            aload 0 /* this */
            iconst_1
            putfield org.jruby.ext.socket.RubyBasicSocket.doNotReverseLookup:Z
         4: .line 97
            return
        end local 2 // org.jruby.RubyClass type
        end local 1 // org.jruby.Ruby runtime
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    5     1  runtime  Lorg/jruby/Ruby;
            0    5     2     type  Lorg/jruby/RubyClass;
    MethodParameters:
         Name  Flags
      runtime  
      type     

  public static org.jruby.runtime.builtin.IRubyObject for_fd(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: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject _klass
        start local 2 // org.jruby.runtime.builtin.IRubyObject _fileno
         0: .line 101
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 3 /* runtime */
        start local 3 // org.jruby.Ruby runtime
         1: .line 102
            aload 2 /* _fileno */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToInteger:()Lorg/jruby/RubyInteger;
            invokevirtual org.jruby.RubyInteger.getLongValue:()J
            l2i
            istore 4 /* fileno */
        start local 4 // int fileno
         2: .line 103
            aload 1 /* _klass */
            checkcast org.jruby.RubyClass
            astore 5 /* klass */
        start local 5 // org.jruby.RubyClass klass
         3: .line 105
            aload 3 /* runtime */
            invokevirtual org.jruby.Ruby.getFilenoUtil:()Lorg/jruby/util/io/FilenoUtil;
            iload 4 /* fileno */
            invokevirtual org.jruby.util.io.FilenoUtil.getWrapperFromFileno:(I)Lorg/jruby/util/io/ChannelFD;
            astore 6 /* fd */
        start local 6 // org.jruby.util.io.ChannelFD fd
         4: .line 107
            aload 5 /* klass */
            invokevirtual org.jruby.RubyClass.getAllocator:()Lorg/jruby/runtime/ObjectAllocator;
            aload 3 /* runtime */
            aload 5 /* klass */
            invokeinterface org.jruby.runtime.ObjectAllocator.allocate:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;)Lorg/jruby/runtime/builtin/IRubyObject;
            checkcast org.jruby.ext.socket.RubyBasicSocket
            astore 7 /* basicSocket */
        start local 7 // org.jruby.ext.socket.RubyBasicSocket basicSocket
         5: .line 108
            aload 7 /* basicSocket */
            aload 6 /* fd */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.initSocket:(Lorg/jruby/util/io/ChannelFD;)V
         6: .line 110
            aload 7 /* basicSocket */
            areturn
        end local 7 // org.jruby.ext.socket.RubyBasicSocket basicSocket
        end local 6 // org.jruby.util.io.ChannelFD fd
        end local 5 // org.jruby.RubyClass klass
        end local 4 // int fileno
        end local 3 // org.jruby.Ruby runtime
        end local 2 // org.jruby.runtime.builtin.IRubyObject _fileno
        end local 1 // org.jruby.runtime.builtin.IRubyObject _klass
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0      context  Lorg/jruby/runtime/ThreadContext;
            0    7     1       _klass  Lorg/jruby/runtime/builtin/IRubyObject;
            0    7     2      _fileno  Lorg/jruby/runtime/builtin/IRubyObject;
            1    7     3      runtime  Lorg/jruby/Ruby;
            2    7     4       fileno  I
            3    7     5        klass  Lorg/jruby/RubyClass;
            4    7     6           fd  Lorg/jruby/util/io/ChannelFD;
            5    7     7  basicSocket  Lorg/jruby/ext/socket/RubyBasicSocket;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true)
    MethodParameters:
         Name  Flags
      context  
      _klass   
      _fileno  

  public org.jruby.runtime.builtin.IRubyObject do_not_reverse_lookup19(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.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 115
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* this */
            getfield org.jruby.ext.socket.RubyBasicSocket.doNotReverseLookup:Z
            invokevirtual org.jruby.Ruby.newBoolean:(Z)Lorg/jruby/RubyBoolean;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"do_not_reverse_lookup"})
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject set_do_not_reverse_lookup19(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=2, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject flag
         0: .line 120
            aload 0 /* this */
            aload 2 /* flag */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isTrue:()Z
            putfield org.jruby.ext.socket.RubyBasicSocket.doNotReverseLookup:Z
         1: .line 121
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.do_not_reverse_lookup19:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject flag
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    2     1  context  Lorg/jruby/runtime/ThreadContext;
            0    2     2     flag  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"do_not_reverse_lookup="})
    MethodParameters:
         Name  Flags
      context  
      flag     

  public static org.jruby.runtime.builtin.IRubyObject do_not_reverse_lookup(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: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject recv
         0: .line 126
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.isDoNotReverseLookupEnabled:()Z
            invokevirtual org.jruby.Ruby.newBoolean:(Z)Lorg/jruby/RubyBoolean;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject recv
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  context  Lorg/jruby/runtime/ThreadContext;
            0    1     1     recv  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(meta = true)
    MethodParameters:
         Name  Flags
      context  
      recv     

  public static org.jruby.runtime.builtin.IRubyObject set_do_not_reverse_lookup(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: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject recv
        start local 2 // org.jruby.runtime.builtin.IRubyObject flag
         0: .line 131
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 2 /* flag */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isTrue:()Z
            invokevirtual org.jruby.Ruby.setDoNotReverseLookupEnabled:(Z)V
         1: .line 133
            aload 2 /* flag */
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject flag
        end local 1 // org.jruby.runtime.builtin.IRubyObject recv
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lorg/jruby/runtime/ThreadContext;
            0    2     1     recv  Lorg/jruby/runtime/builtin/IRubyObject;
            0    2     2     flag  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"do_not_reverse_lookup="}, meta = true)
    MethodParameters:
         Name  Flags
      context  
      recv     
      flag     

  public org.jruby.runtime.builtin.IRubyObject send(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=3, locals=4, args_size=4
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject _mesg
        start local 3 // org.jruby.runtime.builtin.IRubyObject _flags
         0: .line 139
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* _mesg */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.syswrite:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 3 // org.jruby.runtime.builtin.IRubyObject _flags
        end local 2 // org.jruby.runtime.builtin.IRubyObject _mesg
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2    _mesg  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     3   _flags  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"send"})
    MethodParameters:
         Name  Flags
      context  
      _mesg    
      _flags   

  public org.jruby.runtime.builtin.IRubyObject send(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: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject _mesg
        start local 3 // org.jruby.runtime.builtin.IRubyObject _flags
        start local 4 // org.jruby.runtime.builtin.IRubyObject _to
         0: .line 145
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* _mesg */
            aload 3 /* _flags */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.send:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 4 // org.jruby.runtime.builtin.IRubyObject _to
        end local 3 // org.jruby.runtime.builtin.IRubyObject _flags
        end local 2 // org.jruby.runtime.builtin.IRubyObject _mesg
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2    _mesg  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     3   _flags  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     4      _to  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"send"})
    MethodParameters:
         Name  Flags
      context  
      _mesg    
      _flags   
      _to      

  public org.jruby.runtime.builtin.IRubyObject recv(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=5, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject length
         0: .line 150
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* length */
            aconst_null
            aconst_null
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.recv:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject length
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2   length  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  
      length   

  public org.jruby.runtime.builtin.IRubyObject recv(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=5, locals=6, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 157
            aload 2 /* args */
            arraylength
            tableswitch { // 1 - 3
                    1: 11
                    2: 5
                    3: 1
              default: 15
          }
         1: .line 159
      StackMap locals:
      StackMap stack:
            aload 2 /* args */
            iconst_0
            aaload
            astore 3 /* length */
        start local 3 // org.jruby.runtime.builtin.IRubyObject length
         2: .line 160
            aload 2 /* args */
            iconst_1
            aaload
            checkcast org.jruby.RubyString
            astore 4 /* str */
        start local 4 // org.jruby.RubyString str
         3: .line 161
            aload 2 /* args */
            iconst_2
            aaload
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToHash:()Lorg/jruby/RubyHash;
            astore 5 /* flags */
        start local 5 // org.jruby.runtime.builtin.IRubyObject flags
         4: .line 162
            goto 18
        end local 5 // org.jruby.runtime.builtin.IRubyObject flags
        end local 4 // org.jruby.RubyString str
        end local 3 // org.jruby.runtime.builtin.IRubyObject length
         5: .line 164
      StackMap locals:
      StackMap stack:
            aload 2 /* args */
            iconst_0
            aaload
            astore 3 /* length */
        start local 3 // org.jruby.runtime.builtin.IRubyObject length
         6: .line 165
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 2 /* args */
            iconst_1
            aaload
            invokestatic org.jruby.util.TypeConverter.checkHashType:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 5 /* flags */
        start local 5 // org.jruby.runtime.builtin.IRubyObject flags
         7: .line 166
            aload 5 /* flags */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifeq 8
            aload 2 /* args */
            iconst_1
            aaload
            checkcast org.jruby.RubyString
            goto 9
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject[] org.jruby.runtime.builtin.IRubyObject top org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
         8: aconst_null
      StackMap locals:
      StackMap stack: org.jruby.RubyString
         9: astore 4 /* str */
        start local 4 // org.jruby.RubyString str
        10: .line 167
            goto 18
        end local 5 // org.jruby.runtime.builtin.IRubyObject flags
        end local 4 // org.jruby.RubyString str
        end local 3 // org.jruby.runtime.builtin.IRubyObject length
        11: .line 169
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject[]
      StackMap stack:
            aload 2 /* args */
            iconst_0
            aaload
            astore 3 /* length */
        start local 3 // org.jruby.runtime.builtin.IRubyObject length
        12: .line 170
            aconst_null
            astore 4 /* str */
        start local 4 // org.jruby.RubyString str
        13: aconst_null
            astore 5 /* flags */
        start local 5 // org.jruby.runtime.builtin.IRubyObject flags
        14: .line 171
            goto 18
        end local 5 // org.jruby.runtime.builtin.IRubyObject flags
        end local 4 // org.jruby.RubyString str
        end local 3 // org.jruby.runtime.builtin.IRubyObject length
        15: .line 173
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            astore 3 /* length */
        start local 3 // org.jruby.runtime.builtin.IRubyObject length
        16: .line 174
            aconst_null
            astore 4 /* str */
        start local 4 // org.jruby.RubyString str
        17: aconst_null
            astore 5 /* flags */
        start local 5 // org.jruby.runtime.builtin.IRubyObject flags
        18: .line 177
      StackMap locals: org.jruby.runtime.builtin.IRubyObject org.jruby.RubyString org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
            aload 0 /* this */
            aload 1 /* context */
            aload 3 /* length */
            aload 4 /* str */
            aload 5 /* flags */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.recv:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 5 // org.jruby.runtime.builtin.IRubyObject flags
        end local 4 // org.jruby.RubyString str
        end local 3 // org.jruby.runtime.builtin.IRubyObject length
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   19     1  context  Lorg/jruby/runtime/ThreadContext;
            0   19     2     args  [Lorg/jruby/runtime/builtin/IRubyObject;
            2    5     3   length  Lorg/jruby/runtime/builtin/IRubyObject;
            6   11     3   length  Lorg/jruby/runtime/builtin/IRubyObject;
           12   15     3   length  Lorg/jruby/runtime/builtin/IRubyObject;
           16   19     3   length  Lorg/jruby/runtime/builtin/IRubyObject;
            3    5     4      str  Lorg/jruby/RubyString;
           10   11     4      str  Lorg/jruby/RubyString;
           13   15     4      str  Lorg/jruby/RubyString;
           17   19     4      str  Lorg/jruby/RubyString;
            4    5     5    flags  Lorg/jruby/runtime/builtin/IRubyObject;
            7   11     5    flags  Lorg/jruby/runtime/builtin/IRubyObject;
           14   15     5    flags  Lorg/jruby/runtime/builtin/IRubyObject;
           18   19     5    flags  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(required = 2, optional = 1)
    MethodParameters:
         Name  Flags
      context  
      args     

  private org.jruby.runtime.builtin.IRubyObject recv(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject, org.jruby.RubyString, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyString;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=5
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject length
        start local 3 // org.jruby.RubyString str
        start local 4 // org.jruby.runtime.builtin.IRubyObject flags
         0: .line 183
            aload 2 /* length */
            invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 5 /* buffer */
        start local 5 // java.nio.ByteBuffer buffer
         1: .line 185
            aload 0 /* this */
            aload 1 /* context */
            aload 5 /* buffer */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.doRead:(Lorg/jruby/runtime/ThreadContext;Ljava/nio/ByteBuffer;)Lorg/jruby/util/ByteList;
            astore 6 /* bytes */
        start local 6 // org.jruby.util.ByteList bytes
         2: .line 187
            aload 6 /* bytes */
            ifnonnull 3
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         3: .line 189
      StackMap locals: java.nio.ByteBuffer org.jruby.util.ByteList
      StackMap stack:
            aload 3 /* str */
            ifnull 6
         4: .line 190
            aload 3 /* str */
            aload 6 /* bytes */
            invokevirtual org.jruby.RubyString.setValue:(Lorg/jruby/util/ByteList;)V
         5: .line 191
            aload 3 /* str */
            areturn
         6: .line 193
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 6 /* bytes */
            invokestatic org.jruby.RubyString.newString:(Lorg/jruby/Ruby;Lorg/jruby/util/ByteList;)Lorg/jruby/RubyString;
            areturn
        end local 6 // org.jruby.util.ByteList bytes
        end local 5 // java.nio.ByteBuffer buffer
        end local 4 // org.jruby.runtime.builtin.IRubyObject flags
        end local 3 // org.jruby.RubyString str
        end local 2 // org.jruby.runtime.builtin.IRubyObject length
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    7     1  context  Lorg/jruby/runtime/ThreadContext;
            0    7     2   length  Lorg/jruby/runtime/builtin/IRubyObject;
            0    7     3      str  Lorg/jruby/RubyString;
            0    7     4    flags  Lorg/jruby/runtime/builtin/IRubyObject;
            1    7     5   buffer  Ljava/nio/ByteBuffer;
            2    7     6    bytes  Lorg/jruby/util/ByteList;
    MethodParameters:
         Name  Flags
      context  
      length   
      str      
      flags    

  public org.jruby.runtime.builtin.IRubyObject recv_nonblock(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=9, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 198
            aload 2 /* args */
            arraylength
            istore 3 /* argc */
        start local 3 // int argc
         1: .line 199
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 2 /* args */
            invokestatic org.jruby.ast.util.ArgsUtil.getOptionsArg:(Lorg/jruby/Ruby;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 4 /* opts */
        start local 4 // org.jruby.runtime.builtin.IRubyObject opts
         2: .line 200
            aload 4 /* opts */
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            if_acmpeq 3
            iinc 3 /* argc */ -1
         3: .line 203
      StackMap locals: int org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            astore 5 /* length */
        start local 5 // org.jruby.runtime.builtin.IRubyObject length
         4: aconst_null
            astore 6 /* str */
        start local 6 // org.jruby.runtime.builtin.IRubyObject str
         5: .line 205
            iload 3 /* argc */
            tableswitch { // 1 - 3
                    1: 8
                    2: 7
                    3: 6
              default: 9
          }
         6: .line 206
      StackMap locals: org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
            aload 2 /* args */
            iconst_2
            aaload
            astore 6 /* str */
         7: .line 207
      StackMap locals:
      StackMap stack:
            aload 2 /* args */
            iconst_1
            aaload
            pop
         8: .line 208
      StackMap locals:
      StackMap stack:
            aload 2 /* args */
            iconst_0
            aaload
            astore 5 /* length */
         9: .line 212
      StackMap locals:
      StackMap stack:
            aload 5 /* length */
            invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            astore 7 /* buffer */
        start local 7 // java.nio.ByteBuffer buffer
        10: .line 214
            aload 0 /* this */
            aload 1 /* context */
            aload 7 /* buffer */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.doReadNonblock:(Lorg/jruby/runtime/ThreadContext;Ljava/nio/ByteBuffer;)Lorg/jruby/util/ByteList;
            astore 8 /* bytes */
        start local 8 // org.jruby.util.ByteList bytes
        11: .line 216
            aload 8 /* bytes */
            ifnonnull 14
        12: .line 217
            aload 1 /* context */
            aload 4 /* opts */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.extractExceptionArg:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            ifne 13
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "wait_readable"
            invokevirtual org.jruby.Ruby.newSymbol:(Ljava/lang/String;)Lorg/jruby/RubySymbol;
            areturn
        13: .line 218
      StackMap locals: java.nio.ByteBuffer org.jruby.util.ByteList
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "recvfrom(2)"
            invokevirtual org.jruby.Ruby.newErrnoEAGAINReadableError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        14: .line 221
      StackMap locals:
      StackMap stack:
            aload 6 /* str */
            ifnull 18
            aload 6 /* str */
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            if_acmpeq 18
        15: .line 222
            aload 6 /* str */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToString:()Lorg/jruby/RubyString;
            astore 6 /* str */
        16: .line 223
            aload 6 /* str */
            checkcast org.jruby.RubyString
            aload 8 /* bytes */
            invokevirtual org.jruby.RubyString.setValue:(Lorg/jruby/util/ByteList;)V
        17: .line 224
            aload 6 /* str */
            areturn
        18: .line 226
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 8 /* bytes */
            invokestatic org.jruby.RubyString.newString:(Lorg/jruby/Ruby;Lorg/jruby/util/ByteList;)Lorg/jruby/RubyString;
            areturn
        end local 8 // org.jruby.util.ByteList bytes
        end local 7 // java.nio.ByteBuffer buffer
        end local 6 // org.jruby.runtime.builtin.IRubyObject str
        end local 5 // org.jruby.runtime.builtin.IRubyObject length
        end local 4 // org.jruby.runtime.builtin.IRubyObject opts
        end local 3 // int argc
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   19     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   19     1  context  Lorg/jruby/runtime/ThreadContext;
            0   19     2     args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1   19     3     argc  I
            2   19     4     opts  Lorg/jruby/runtime/builtin/IRubyObject;
            4   19     5   length  Lorg/jruby/runtime/builtin/IRubyObject;
            5   19     6      str  Lorg/jruby/runtime/builtin/IRubyObject;
           10   19     7   buffer  Ljava/nio/ByteBuffer;
           11   19     8    bytes  Lorg/jruby/util/ByteList;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(required = 1, optional = 3)
    MethodParameters:
         Name  Flags
      context  
      args     

  public org.jruby.runtime.builtin.IRubyObject getsockopt(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=7, locals=10, args_size=4
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject _level
        start local 3 // org.jruby.runtime.builtin.IRubyObject _opt
         0: .line 231
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 4 /* runtime */
        start local 4 // org.jruby.Ruby runtime
         1: .line 233
            aload 2 /* _level */
            invokestatic org.jruby.ext.socket.SocketUtils.levelFromArg:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljnr/constants/platform/SocketLevel;
            astore 5 /* level */
        start local 5 // jnr.constants.platform.SocketLevel level
         2: .line 234
            aload 3 /* _opt */
            invokestatic org.jruby.ext.socket.SocketUtils.optionFromArg:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljnr/constants/platform/SocketOption;
            astore 6 /* opt */
        start local 6 // jnr.constants.platform.SocketOption opt
         3: .line 237
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenChannel:()Ljava/nio/channels/Channel;
            astore 7 /* channel */
        start local 7 // java.nio.channels.Channel channel
         4: .line 239
            invokestatic org.jruby.ext.socket.RubyBasicSocket.$SWITCH_TABLE$jnr$constants$platform$SocketLevel:()[I
            aload 5 /* level */
            invokevirtual jnr.constants.platform.SocketLevel.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 5
                    2: 5
                    3: 5
                    4: 5
              default: 17
          }
         5: .line 246
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.Ruby jnr.constants.platform.SocketLevel jnr.constants.platform.SocketOption java.nio.channels.Channel
      StackMap stack:
            aload 6 /* opt */
            getstatic jnr.constants.platform.SocketOption.__UNKNOWN_CONSTANT__:Ljnr/constants/platform/SocketOption;
            if_acmpne 7
         6: .line 247
            aload 4 /* runtime */
            invokevirtual org.jruby.Ruby.newErrnoENOPROTOOPTError:()Lorg/jruby/exceptions/RaiseException;
            athrow
         7: .line 250
      StackMap locals:
      StackMap stack:
            aload 7 /* channel */
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            aload 7 /* channel */
            aload 6 /* opt */
            invokevirtual org.jruby.ext.socket.SocketType.getSocketOption:(Ljava/nio/channels/Channel;Ljnr/constants/platform/SocketOption;)I
            istore 8 /* value */
        start local 8 // int value
         8: .line 253
            aload 6 /* opt */
            getstatic jnr.constants.platform.SocketOption.SO_LINGER:Ljnr/constants/platform/SocketOption;
            if_acmpne 14
         9: .line 254
            iload 8 /* value */
            iconst_m1
            if_icmpne 12
        10: .line 257
            iconst_0
            iconst_0
            invokestatic org.jruby.ext.socket.Option.packLinger:(II)Lorg/jruby/util/ByteList;
            astore 9 /* packedValue */
        start local 9 // org.jruby.util.ByteList packedValue
        11: .line 258
            goto 15
        end local 9 // org.jruby.util.ByteList packedValue
        12: .line 259
      StackMap locals: int
      StackMap stack:
            iconst_1
            iload 8 /* value */
            invokestatic org.jruby.ext.socket.Option.packLinger:(II)Lorg/jruby/util/ByteList;
            astore 9 /* packedValue */
        start local 9 // org.jruby.util.ByteList packedValue
        13: .line 261
            goto 15
        end local 9 // org.jruby.util.ByteList packedValue
        14: .line 262
      StackMap locals:
      StackMap stack:
            iload 8 /* value */
            invokestatic org.jruby.ext.socket.Option.packInt:(I)Lorg/jruby/util/ByteList;
            astore 9 /* packedValue */
        start local 9 // org.jruby.util.ByteList packedValue
        15: .line 265
      StackMap locals: org.jruby.util.ByteList
      StackMap stack:
            new org.jruby.ext.socket.Option
            dup
            aload 4 /* runtime */
            getstatic jnr.constants.platform.ProtocolFamily.PF_INET:Ljnr/constants/platform/ProtocolFamily;
            aload 5 /* level */
            aload 6 /* opt */
            aload 9 /* packedValue */
            invokespecial org.jruby.ext.socket.Option.<init>:(Lorg/jruby/Ruby;Ljnr/constants/platform/ProtocolFamily;Ljnr/constants/platform/SocketLevel;Ljnr/constants/platform/SocketOption;Lorg/jruby/util/ByteList;)V
        16: areturn
        end local 9 // org.jruby.util.ByteList packedValue
        end local 8 // int value
        17: .line 268
      StackMap locals:
      StackMap stack:
            aload 4 /* runtime */
            invokevirtual org.jruby.Ruby.newErrnoENOPROTOOPTError:()Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 7 // java.nio.channels.Channel channel
        18: .line 271
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.Ruby jnr.constants.platform.SocketLevel jnr.constants.platform.SocketOption
      StackMap stack: java.io.IOException
            pop
        19: .line 272
            aload 4 /* runtime */
            invokevirtual org.jruby.Ruby.newErrnoENOPROTOOPTError:()Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 6 // jnr.constants.platform.SocketOption opt
        end local 5 // jnr.constants.platform.SocketLevel level
        end local 4 // org.jruby.Ruby runtime
        end local 3 // org.jruby.runtime.builtin.IRubyObject _opt
        end local 2 // org.jruby.runtime.builtin.IRubyObject _level
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   20     0         this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   20     1      context  Lorg/jruby/runtime/ThreadContext;
            0   20     2       _level  Lorg/jruby/runtime/builtin/IRubyObject;
            0   20     3         _opt  Lorg/jruby/runtime/builtin/IRubyObject;
            1   20     4      runtime  Lorg/jruby/Ruby;
            2   20     5        level  Ljnr/constants/platform/SocketLevel;
            3   20     6          opt  Ljnr/constants/platform/SocketOption;
            4   18     7      channel  Ljava/nio/channels/Channel;
            8   17     8        value  I
           11   12     9  packedValue  Lorg/jruby/util/ByteList;
           13   14     9  packedValue  Lorg/jruby/util/ByteList;
           15   17     9  packedValue  Lorg/jruby/util/ByteList;
      Exception table:
        from    to  target  type
           3    16      18  Class java.io.IOException
          17    18      18  Class java.io.IOException
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  
      _level   
      _opt     

  public org.jruby.runtime.builtin.IRubyObject setsockopt(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=6, locals=4, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject option
         0: .line 278
            aload 2 /* option */
            instanceof org.jruby.ext.socket.Option
            ifeq 3
         1: .line 279
            aload 2 /* option */
            checkcast org.jruby.ext.socket.Option
            astore 3 /* rsockopt */
        start local 3 // org.jruby.ext.socket.Option rsockopt
         2: .line 280
            aload 0 /* this */
            aload 1 /* context */
            aload 3 /* rsockopt */
            aload 1 /* context */
            invokevirtual org.jruby.ext.socket.Option.level:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            aload 3 /* rsockopt */
            aload 1 /* context */
            invokevirtual org.jruby.ext.socket.Option.optname:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            aload 3 /* rsockopt */
            aload 1 /* context */
            invokevirtual org.jruby.ext.socket.Option.data:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.setsockopt:(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.ext.socket.Option rsockopt
         3: .line 282
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            aload 2 /* option */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not a Socket::Option"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)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 2 // org.jruby.runtime.builtin.IRubyObject option
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    4     1   context  Lorg/jruby/runtime/ThreadContext;
            0    4     2    option  Lorg/jruby/runtime/builtin/IRubyObject;
            2    3     3  rsockopt  Lorg/jruby/ext/socket/Option;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  
      option   

  public org.jruby.runtime.builtin.IRubyObject setsockopt(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: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=12, args_size=5
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject _level
        start local 3 // org.jruby.runtime.builtin.IRubyObject _opt
        start local 4 // org.jruby.runtime.builtin.IRubyObject val
         0: .line 288
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 5 /* runtime */
        start local 5 // org.jruby.Ruby runtime
         1: .line 290
            aload 2 /* _level */
            invokestatic org.jruby.ext.socket.SocketUtils.levelFromArg:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljnr/constants/platform/SocketLevel;
            astore 6 /* level */
        start local 6 // jnr.constants.platform.SocketLevel level
         2: .line 291
            aload 3 /* _opt */
            invokestatic org.jruby.ext.socket.SocketUtils.optionFromArg:(Lorg/jruby/runtime/builtin/IRubyObject;)Ljnr/constants/platform/SocketOption;
            astore 7 /* opt */
        start local 7 // jnr.constants.platform.SocketOption opt
         3: .line 294
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenChannel:()Ljava/nio/channels/Channel;
            astore 8 /* channel */
        start local 8 // java.nio.channels.Channel channel
         4: .line 295
            aload 8 /* channel */
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            astore 9 /* socketType */
        start local 9 // org.jruby.ext.socket.SocketType socketType
         5: .line 297
            invokestatic org.jruby.ext.socket.RubyBasicSocket.$SWITCH_TABLE$jnr$constants$platform$SocketLevel:()[I
            aload 6 /* level */
            invokevirtual jnr.constants.platform.SocketLevel.ordinal:()I
            iaload
            tableswitch { // 1 - 4
                    1: 6
                    2: 6
                    3: 6
                    4: 6
              default: 16
          }
         6: .line 304
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.Ruby jnr.constants.platform.SocketLevel jnr.constants.platform.SocketOption java.nio.channels.Channel org.jruby.ext.socket.SocketType
      StackMap stack:
            aload 7 /* opt */
            getstatic jnr.constants.platform.SocketOption.SO_LINGER:Ljnr/constants/platform/SocketOption;
            if_acmpne 14
         7: .line 305
            aload 4 /* val */
            instanceof org.jruby.RubyString
            ifeq 13
         8: .line 306
            aload 4 /* val */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToString:()Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyString.getByteList:()Lorg/jruby/util/ByteList;
            invokestatic org.jruby.ext.socket.Option.unpackLinger:(Lorg/jruby/util/ByteList;)[I
            astore 10 /* linger */
        start local 10 // int[] linger
         9: .line 307
            aload 9 /* socketType */
            aload 8 /* channel */
            aload 10 /* linger */
            iconst_0
            iaload
            ifeq 10
            iconst_1
            goto 11
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.Ruby jnr.constants.platform.SocketLevel jnr.constants.platform.SocketOption java.nio.channels.Channel org.jruby.ext.socket.SocketType int[]
      StackMap stack: org.jruby.ext.socket.SocketType java.nio.channels.Channel
        10: iconst_0
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.Ruby jnr.constants.platform.SocketLevel jnr.constants.platform.SocketOption java.nio.channels.Channel org.jruby.ext.socket.SocketType int[]
      StackMap stack: org.jruby.ext.socket.SocketType java.nio.channels.Channel int
        11: aload 10 /* linger */
            iconst_1
            iaload
            invokevirtual org.jruby.ext.socket.SocketType.setSoLinger:(Ljava/nio/channels/Channel;ZI)V
        end local 10 // int[] linger
        12: .line 308
            goto 30
        13: .line 309
      StackMap locals:
      StackMap stack:
            aload 5 /* runtime */
            ldc "setsockopt(2)"
            invokevirtual org.jruby.Ruby.newErrnoEINVALError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        14: .line 312
      StackMap locals:
      StackMap stack:
            aload 9 /* socketType */
            aload 8 /* channel */
            aload 7 /* opt */
            aload 1 /* context */
            aload 4 /* val */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.asNumber:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)I
            invokevirtual org.jruby.ext.socket.SocketType.setSocketOption:(Ljava/nio/channels/Channel;Ljnr/constants/platform/SocketOption;I)V
        15: .line 315
            goto 30
        16: .line 318
      StackMap locals:
      StackMap stack:
            aload 2 /* _level */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToInteger:()Lorg/jruby/RubyInteger;
            invokevirtual org.jruby.RubyInteger.getLongValue:()J
            l2i
            istore 10 /* intLevel */
        start local 10 // int intLevel
        17: .line 319
            aload 3 /* _opt */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToInteger:()Lorg/jruby/RubyInteger;
            invokevirtual org.jruby.RubyInteger.getLongValue:()J
            l2i
            istore 11 /* intOpt */
        start local 11 // int intOpt
        18: .line 320
            getstatic jnr.constants.platform.IPProto.IPPROTO_TCP:Ljnr/constants/platform/IPProto;
            invokevirtual jnr.constants.platform.IPProto.intValue:()I
            iload 10 /* intLevel */
            if_icmpne 21
            getstatic jnr.constants.platform.TCP.TCP_NODELAY:Ljnr/constants/platform/TCP;
            invokevirtual jnr.constants.platform.TCP.intValue:()I
            iload 11 /* intOpt */
            if_icmpne 21
        19: .line 321
            aload 9 /* socketType */
            aload 8 /* channel */
            aload 0 /* this */
            aload 1 /* context */
            aload 4 /* val */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.asBoolean:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Z
            invokevirtual org.jruby.ext.socket.SocketType.setTcpNoDelay:(Ljava/nio/channels/Channel;Z)V
        20: .line 323
            goto 30
      StackMap locals: int int
      StackMap stack:
        21: getstatic jnr.constants.platform.IPProto.IPPROTO_IP:Ljnr/constants/platform/IPProto;
            invokevirtual jnr.constants.platform.IPProto.intValue:()I
            iload 10 /* intLevel */
            if_icmpne 25
        22: .line 324
            bipush 12
            iload 11 /* intOpt */
            if_icmpne 30
        23: .line 325
            aload 0 /* this */
            aload 4 /* val */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.joinMulticastGroup:(Lorg/jruby/runtime/builtin/IRubyObject;)V
        24: .line 328
            goto 30
        25: .line 329
      StackMap locals:
      StackMap stack:
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.newErrnoENOPROTOOPTError:()Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 11 // int intOpt
        end local 10 // int intLevel
        end local 9 // org.jruby.ext.socket.SocketType socketType
        end local 8 // java.nio.channels.Channel channel
        26: .line 333
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.Ruby jnr.constants.platform.SocketLevel jnr.constants.platform.SocketOption
      StackMap stack: org.jruby.util.io.BadDescriptorException
            pop
        27: .line 334
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.newErrnoEBADFError:()Lorg/jruby/exceptions/RaiseException;
            athrow
        28: .line 336
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
        29: .line 337
            aload 5 /* runtime */
            invokevirtual org.jruby.Ruby.newErrnoENOPROTOOPTError:()Lorg/jruby/exceptions/RaiseException;
            athrow
        30: .line 339
      StackMap locals:
      StackMap stack:
            aload 5 /* runtime */
            iconst_0
            invokevirtual org.jruby.Ruby.newFixnum:(I)Lorg/jruby/RubyFixnum;
            areturn
        end local 7 // jnr.constants.platform.SocketOption opt
        end local 6 // jnr.constants.platform.SocketLevel level
        end local 5 // org.jruby.Ruby runtime
        end local 4 // org.jruby.runtime.builtin.IRubyObject val
        end local 3 // org.jruby.runtime.builtin.IRubyObject _opt
        end local 2 // org.jruby.runtime.builtin.IRubyObject _level
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   31     0        this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   31     1     context  Lorg/jruby/runtime/ThreadContext;
            0   31     2      _level  Lorg/jruby/runtime/builtin/IRubyObject;
            0   31     3        _opt  Lorg/jruby/runtime/builtin/IRubyObject;
            0   31     4         val  Lorg/jruby/runtime/builtin/IRubyObject;
            1   31     5     runtime  Lorg/jruby/Ruby;
            2   31     6       level  Ljnr/constants/platform/SocketLevel;
            3   31     7         opt  Ljnr/constants/platform/SocketOption;
            4   26     8     channel  Ljava/nio/channels/Channel;
            5   26     9  socketType  Lorg/jruby/ext/socket/SocketType;
            9   12    10      linger  [I
           17   26    10    intLevel  I
           18   26    11      intOpt  I
      Exception table:
        from    to  target  type
           3    26      26  Class org.jruby.util.io.BadDescriptorException
           3    26      28  Class java.io.IOException
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  
      _level   
      _opt     
      val      

  public org.jruby.runtime.builtin.IRubyObject getsockname(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 344
            aload 0 /* this */
            aload 1 /* context */
            ldc "getsockname"
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getSocknameCommon:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"getsockname"})
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject getpeername(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 349
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            pop
         1: .line 351
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getInetRemoteSocket:()Ljava/net/InetSocketAddress;
            astore 2 /* sock */
        start local 2 // java.net.InetSocketAddress sock
         2: .line 353
            aload 2 /* sock */
            ifnull 3
            aload 1 /* context */
            aload 2 /* sock */
            invokestatic org.jruby.util.io.Sockaddr.pack_sockaddr_in:(Lorg/jruby/runtime/ThreadContext;Ljava/net/InetSocketAddress;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         3: .line 354
      StackMap locals: java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getUnixRemoteSocket:()Ljnr/unixsocket/UnixSocketAddress;
            astore 3 /* unix */
        start local 3 // jnr.unixsocket.UnixSocketAddress unix
         4: .line 355
            aload 1 /* context */
            aload 3 /* unix */
            invokevirtual jnr.unixsocket.UnixSocketAddress.path:()Ljava/lang/String;
            invokestatic org.jruby.util.io.Sockaddr.pack_sockaddr_un:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 3 // jnr.unixsocket.UnixSocketAddress unix
        end local 2 // java.net.InetSocketAddress sock
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    5     1  context  Lorg/jruby/runtime/ThreadContext;
            2    5     2     sock  Ljava/net/InetSocketAddress;
            4    5     3     unix  Ljnr/unixsocket/UnixSocketAddress;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"getpeername"})
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject getpeereid(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.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 360
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "getpeereid not implemented"
            invokevirtual org.jruby.Ruby.newNotImplementedError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(name = {"getpeereid"}, notImplemented = true)
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject local_address(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 365
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 2 /* runtime */
        start local 2 // org.jruby.Ruby runtime
         1: .line 367
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getInetSocketAddress:()Ljava/net/InetSocketAddress;
            astore 3 /* address */
        start local 3 // java.net.InetSocketAddress address
         2: .line 369
            aload 3 /* address */
            ifnull 5
         3: .line 370
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getChannel:()Ljava/nio/channels/Channel;
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            astore 4 /* socketType */
        start local 4 // org.jruby.ext.socket.SocketType socketType
         4: .line 371
            new org.jruby.ext.socket.Addrinfo
            dup
            aload 2 /* runtime */
            aload 2 /* runtime */
            ldc "Addrinfo"
            invokevirtual org.jruby.Ruby.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            aload 3 /* address */
            aload 4 /* socketType */
            invokevirtual org.jruby.ext.socket.SocketType.getSocketType:()Ljnr/constants/platform/Sock;
            aload 4 /* socketType */
            invokespecial org.jruby.ext.socket.Addrinfo.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Ljava/net/SocketAddress;Ljnr/constants/platform/Sock;Lorg/jruby/ext/socket/SocketType;)V
            areturn
        end local 4 // org.jruby.ext.socket.SocketType socketType
         5: .line 374
      StackMap locals: org.jruby.Ruby java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getUnixSocketAddress:()Ljnr/unixsocket/UnixSocketAddress;
            astore 4 /* unix */
        start local 4 // jnr.unixsocket.UnixSocketAddress unix
         6: .line 375
            aload 1 /* context */
            aload 2 /* runtime */
            ldc "Addrinfo"
            invokevirtual org.jruby.Ruby.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            aload 2 /* runtime */
            aload 4 /* unix */
            invokevirtual jnr.unixsocket.UnixSocketAddress.path:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            invokestatic org.jruby.ext.socket.Addrinfo.unix:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 4 // jnr.unixsocket.UnixSocketAddress unix
        end local 3 // java.net.InetSocketAddress address
        end local 2 // org.jruby.Ruby runtime
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    7     1     context  Lorg/jruby/runtime/ThreadContext;
            1    7     2     runtime  Lorg/jruby/Ruby;
            2    7     3     address  Ljava/net/InetSocketAddress;
            4    5     4  socketType  Lorg/jruby/ext/socket/SocketType;
            6    7     4        unix  Ljnr/unixsocket/UnixSocketAddress;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject remote_address(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 380
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 2 /* runtime */
        start local 2 // org.jruby.Ruby runtime
         1: .line 382
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getInetRemoteSocket:()Ljava/net/InetSocketAddress;
            astore 3 /* address */
        start local 3 // java.net.InetSocketAddress address
         2: .line 384
            aload 3 /* address */
            ifnull 5
         3: .line 385
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getChannel:()Ljava/nio/channels/Channel;
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            astore 4 /* socketType */
        start local 4 // org.jruby.ext.socket.SocketType socketType
         4: .line 386
            new org.jruby.ext.socket.Addrinfo
            dup
            aload 2 /* runtime */
            aload 2 /* runtime */
            ldc "Addrinfo"
            invokevirtual org.jruby.Ruby.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            aload 3 /* address */
            aload 4 /* socketType */
            invokevirtual org.jruby.ext.socket.SocketType.getSocketType:()Ljnr/constants/platform/Sock;
            aload 4 /* socketType */
            invokespecial org.jruby.ext.socket.Addrinfo.<init>:(Lorg/jruby/Ruby;Lorg/jruby/RubyClass;Ljava/net/SocketAddress;Ljnr/constants/platform/Sock;Lorg/jruby/ext/socket/SocketType;)V
            areturn
        end local 4 // org.jruby.ext.socket.SocketType socketType
         5: .line 389
      StackMap locals: org.jruby.Ruby java.net.InetSocketAddress
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getUnixRemoteSocket:()Ljnr/unixsocket/UnixSocketAddress;
            astore 4 /* unix */
        start local 4 // jnr.unixsocket.UnixSocketAddress unix
         6: .line 391
            aload 4 /* unix */
            ifnull 8
         7: .line 392
            aload 1 /* context */
            aload 2 /* runtime */
            ldc "Addrinfo"
            invokevirtual org.jruby.Ruby.getClass:(Ljava/lang/String;)Lorg/jruby/RubyClass;
            aload 2 /* runtime */
            aload 4 /* unix */
            invokevirtual jnr.unixsocket.UnixSocketAddress.path:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            invokestatic org.jruby.ext.socket.Addrinfo.unix:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         8: .line 395
      StackMap locals: jnr.unixsocket.UnixSocketAddress
      StackMap stack:
            aload 2 /* runtime */
            invokevirtual org.jruby.Ruby.newErrnoENOTCONNError:()Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 4 // jnr.unixsocket.UnixSocketAddress unix
        end local 3 // java.net.InetSocketAddress address
        end local 2 // org.jruby.Ruby runtime
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    9     1     context  Lorg/jruby/runtime/ThreadContext;
            1    9     2     runtime  Lorg/jruby/Ruby;
            2    9     3     address  Ljava/net/InetSocketAddress;
            4    5     4  socketType  Lorg/jruby/ext/socket/SocketType;
            6    9     4        unix  Ljnr/unixsocket/UnixSocketAddress;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject shutdown(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=7, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 400
            iconst_2
            istore 3 /* how */
        start local 3 // int how
         1: .line 402
            aload 2 /* args */
            arraylength
            ifle 21
         2: .line 403
            aconst_null
            astore 4 /* howString */
        start local 4 // java.lang.String howString
         3: .line 404
            aload 2 /* args */
            iconst_0
            aaload
            instanceof org.jruby.RubyString
            ifne 4
            aload 2 /* args */
            iconst_0
            aaload
            instanceof org.jruby.RubySymbol
            ifeq 6
         4: .line 405
      StackMap locals: int java.lang.String
      StackMap stack:
            aload 2 /* args */
            iconst_0
            aaload
            invokeinterface org.jruby.runtime.builtin.IRubyObject.asJavaString:()Ljava/lang/String;
            astore 4 /* howString */
         5: .line 406
            goto 9
         6: .line 407
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 5 /* runtime */
        start local 5 // org.jruby.Ruby runtime
         7: .line 408
            aload 5 /* runtime */
            aload 2 /* args */
            iconst_0
            aaload
            invokestatic org.jruby.util.TypeConverter.checkStringType:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 6 /* maybeString */
        start local 6 // org.jruby.runtime.builtin.IRubyObject maybeString
         8: .line 409
            aload 6 /* maybeString */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isNil:()Z
            ifne 9
            aload 6 /* maybeString */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            astore 4 /* howString */
        end local 6 // org.jruby.runtime.builtin.IRubyObject maybeString
        end local 5 // org.jruby.Ruby runtime
         9: .line 411
      StackMap locals:
      StackMap stack:
            aload 4 /* howString */
            ifnull 20
        10: .line 412
            aload 4 /* howString */
            ldc "RD"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            aload 4 /* howString */
            ldc "SHUT_RD"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        11: .line 413
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 3 /* how */
        12: .line 414
            goto 21
      StackMap locals:
      StackMap stack:
        13: aload 4 /* howString */
            ldc "WR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 14
            aload 4 /* howString */
            ldc "SHUT_WR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        14: .line 415
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 3 /* how */
        15: .line 416
            goto 21
      StackMap locals:
      StackMap stack:
        16: aload 4 /* howString */
            ldc "RDWR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 17
            aload 4 /* howString */
            ldc "SHUT_RDWR"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 19
        17: .line 417
      StackMap locals:
      StackMap stack:
            iconst_2
            istore 3 /* how */
        18: .line 418
            goto 21
        19: .line 419
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "`how' should be either :SHUT_RD, :SHUT_WR, :SHUT_RDWR"
            invokestatic org.jruby.ext.socket.SocketUtils.sockerr:(Lorg/jruby/Ruby;Ljava/lang/String;)Ljava/lang/RuntimeException;
            athrow
        20: .line 422
      StackMap locals:
      StackMap stack:
            aload 2 /* args */
            iconst_0
            aaload
            invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            istore 3 /* how */
        end local 4 // java.lang.String howString
        21: .line 426
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
            astore 4 /* fptr */
        start local 4 // org.jruby.util.io.OpenFile fptr
        22: .line 428
            aload 1 /* context */
            aload 4 /* fptr */
            iload 3 /* how */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.shutdownInternal:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/OpenFile;I)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 4 // org.jruby.util.io.OpenFile fptr
        end local 3 // int how
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   23     1      context  Lorg/jruby/runtime/ThreadContext;
            0   23     2         args  [Lorg/jruby/runtime/builtin/IRubyObject;
            1   23     3          how  I
            3   21     4    howString  Ljava/lang/String;
            7    9     5      runtime  Lorg/jruby/Ruby;
            8    9     6  maybeString  Lorg/jruby/runtime/builtin/IRubyObject;
           22   23     4         fptr  Lorg/jruby/util/io/OpenFile;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(optional = 1)
    MethodParameters:
         Name  Flags
      context  
      args     

  public org.jruby.runtime.builtin.IRubyObject close_write(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 434
            aload 0 /* this */
            aload 1 /* context */
            iconst_2
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.closeHalf:(Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  

  public org.jruby.runtime.builtin.IRubyObject close_read(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 440
            aload 0 /* this */
            aload 1 /* context */
            iconst_1
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.closeHalf:(Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod()
    MethodParameters:
         Name  Flags
      context  

  private org.jruby.runtime.builtin.IRubyObject closeHalf(org.jruby.runtime.ThreadContext, int);
    descriptor: (Lorg/jruby/runtime/ThreadContext;I)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // int closeHalf
         0: .line 446
            iload 2 /* closeHalf */
            iconst_1
            if_icmpne 1
            iconst_2
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: istore 4 /* otherHalf */
        start local 4 // int otherHalf
         3: .line 448
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
            astore 3 /* fptr */
        start local 3 // org.jruby.util.io.OpenFile fptr
         4: .line 449
            aload 3 /* fptr */
            invokevirtual org.jruby.util.io.OpenFile.getMode:()I
            iload 4 /* otherHalf */
            iand
            ifne 6
         5: .line 451
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.rbIoClose:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         6: .line 455
      StackMap locals: org.jruby.util.io.OpenFile int
      StackMap stack:
            iload 2 /* closeHalf */
            iconst_1
            if_icmpne 7
            iconst_0
            goto 8
      StackMap locals:
      StackMap stack:
         7: iconst_1
      StackMap locals:
      StackMap stack: int
         8: istore 5 /* how */
        start local 5 // int how
         9: .line 456
            aload 1 /* context */
            aload 3 /* fptr */
            iload 5 /* how */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.shutdownInternal:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/OpenFile;I)Lorg/jruby/runtime/builtin/IRubyObject;
            pop
        10: .line 458
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 5 // int how
        end local 4 // int otherHalf
        end local 3 // org.jruby.util.io.OpenFile fptr
        end local 2 // int closeHalf
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   11     1    context  Lorg/jruby/runtime/ThreadContext;
            0   11     2  closeHalf  I
            4   11     3       fptr  Lorg/jruby/util/io/OpenFile;
            3   11     4  otherHalf  I
            9   11     5        how  I
    MethodParameters:
           Name  Flags
      context    
      closeHalf  

  public org.jruby.runtime.builtin.IRubyObject sendmsg(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=2, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 463
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "sendmsg is not implemented"
            invokevirtual org.jruby.Ruby.newNotImplementedError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2     args  [Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(rest = true, notImplemented = true)
    MethodParameters:
         Name  Flags
      context  
      args     

  public org.jruby.runtime.builtin.IRubyObject sendmsg_nonblock(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=2, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 468
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "sendmsg_nonblock is not implemented"
            invokevirtual org.jruby.Ruby.newNotImplementedError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2     args  [Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(rest = true, notImplemented = true)
    MethodParameters:
         Name  Flags
      context  
      args     

  public org.jruby.runtime.builtin.IRubyObject recvmsg(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=2, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 473
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "recvmsg is not implemented"
            invokevirtual org.jruby.Ruby.newNotImplementedError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2     args  [Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(rest = true, notImplemented = true)
    MethodParameters:
         Name  Flags
      context  
      args     

  public org.jruby.runtime.builtin.IRubyObject recvmsg_nonblock(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=2, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 478
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            ldc "recvmsg_nonblock is not implemented"
            invokevirtual org.jruby.Ruby.newNotImplementedError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 2 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  context  Lorg/jruby/runtime/ThreadContext;
            0    1     2     args  [Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyMethod(rest = true, notImplemented = true)
    MethodParameters:
         Name  Flags
      context  
      args     

  protected org.jruby.util.ByteList doRead(org.jruby.runtime.ThreadContext, java.nio.ByteBuffer);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/nio/ByteBuffer;)Lorg/jruby/util/ByteList;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // java.nio.ByteBuffer buffer
         0: .line 484
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenFileInitialized:()Lorg/jruby/util/io/OpenFile;
            astore 3 /* fptr */
        start local 3 // org.jruby.util.io.OpenFile fptr
         1: .line 485
            aload 3 /* fptr */
            aload 1 /* context */
            invokevirtual org.jruby.util.io.OpenFile.checkReadable:(Lorg/jruby/runtime/ThreadContext;)V
         2: .line 488
            aload 1 /* context */
            invokevirtual org.jruby.runtime.ThreadContext.getThread:()Lorg/jruby/RubyThread;
            invokevirtual org.jruby.RubyThread.beforeBlockingCall:()V
         3: .line 490
            aload 0 /* this */
            getfield org.jruby.ext.socket.RubyBasicSocket.openFile:Lorg/jruby/util/io/OpenFile;
            invokevirtual org.jruby.util.io.OpenFile.readChannel:()Ljava/nio/channels/ReadableByteChannel;
            aload 2 /* buffer */
            invokeinterface java.nio.channels.ReadableByteChannel.read:(Ljava/nio/ByteBuffer;)I
            istore 4 /* read */
        start local 4 // int read
         4: .line 492
            iload 4 /* read */
            ifne 7
         5: .line 506
            aload 1 /* context */
            invokevirtual org.jruby.runtime.ThreadContext.getThread:()Lorg/jruby/RubyThread;
            invokevirtual org.jruby.RubyThread.afterBlockingCall:()V
         6: .line 492
            aconst_null
            areturn
         7: .line 494
      StackMap locals: org.jruby.util.io.OpenFile int
      StackMap stack:
            new org.jruby.util.ByteList
            dup
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.array:()[B
            iconst_0
            aload 2 /* buffer */
            invokevirtual java.nio.ByteBuffer.position:()I
            iconst_0
            invokespecial org.jruby.util.ByteList.<init>:([BIIZ)V
            astore 6
         8: .line 506
            aload 1 /* context */
            invokevirtual org.jruby.runtime.ThreadContext.getThread:()Lorg/jruby/RubyThread;
            invokevirtual org.jruby.RubyThread.afterBlockingCall:()V
         9: .line 494
            aload 6
            areturn
        end local 4 // int read
        10: .line 496
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext java.nio.ByteBuffer org.jruby.util.io.OpenFile
      StackMap stack: java.io.IOException
            astore 4 /* e */
        start local 4 // java.io.IOException e
        11: .line 500
            ldc "Socket not open"
            aload 4 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 13
        12: .line 501
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 4 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newIOError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        13: .line 503
      StackMap locals: java.io.IOException
      StackMap stack:
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 4 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newSystemCallError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 4 // java.io.IOException e
        14: .line 505
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext java.nio.ByteBuffer org.jruby.util.io.OpenFile
      StackMap stack: java.lang.Throwable
            astore 5
        15: .line 506
            aload 1 /* context */
            invokevirtual org.jruby.runtime.ThreadContext.getThread:()Lorg/jruby/RubyThread;
            invokevirtual org.jruby.RubyThread.afterBlockingCall:()V
        16: .line 507
            aload 5
            athrow
        end local 3 // org.jruby.util.io.OpenFile fptr
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   17     1  context  Lorg/jruby/runtime/ThreadContext;
            0   17     2   buffer  Ljava/nio/ByteBuffer;
            1   17     3     fptr  Lorg/jruby/util/io/OpenFile;
            4   10     4     read  I
           11   14     4        e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     5      10  Class java.io.IOException
           7     8      10  Class java.io.IOException
           2     5      14  any
           7     8      14  any
          10    14      14  any
    MethodParameters:
         Name  Flags
      context  
      buffer   final

  protected final org.jruby.util.ByteList doReadNonblock(org.jruby.runtime.ThreadContext, java.nio.ByteBuffer);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/nio/ByteBuffer;)Lorg/jruby/util/ByteList;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // java.nio.ByteBuffer buffer
         0: .line 511
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getChannel:()Ljava/nio/channels/Channel;
            astore 3 /* channel */
        start local 3 // java.nio.channels.Channel channel
         1: .line 513
            aload 3 /* channel */
            instanceof java.nio.channels.SelectableChannel
            ifne 3
         2: .line 514
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            new java.lang.StringBuilder
            dup
            aload 3 /* channel */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " does not support nonblocking"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newErrnoEAGAINReadableError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
         3: .line 517
      StackMap locals: java.nio.channels.Channel
      StackMap stack:
            aload 3 /* channel */
            checkcast java.nio.channels.SelectableChannel
            astore 4 /* selectable */
        start local 4 // java.nio.channels.SelectableChannel selectable
         4: .line 519
            aload 4 /* selectable */
            invokevirtual java.nio.channels.SelectableChannel.blockingLock:()Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         5: .line 520
            aload 4 /* selectable */
            invokevirtual java.nio.channels.SelectableChannel.isBlocking:()Z
            istore 6 /* oldBlocking */
        start local 6 // boolean oldBlocking
         6: .line 523
            aload 4 /* selectable */
            iconst_0
            invokevirtual java.nio.channels.SelectableChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         7: .line 526
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* buffer */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.doRead:(Lorg/jruby/runtime/ThreadContext;Ljava/nio/ByteBuffer;)Lorg/jruby/util/ByteList;
            astore 8
         8: .line 529
            aload 4 /* selectable */
            iload 6 /* oldBlocking */
            invokevirtual java.nio.channels.SelectableChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
         9: .line 526
            aload 5
            monitorexit
        10: aload 8
            areturn
        11: .line 528
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext java.nio.ByteBuffer java.nio.channels.Channel java.nio.channels.SelectableChannel java.lang.Object int
      StackMap stack: java.lang.Throwable
            astore 7
        12: .line 529
            aload 4 /* selectable */
            iload 6 /* oldBlocking */
            invokevirtual java.nio.channels.SelectableChannel.configureBlocking:(Z)Ljava/nio/channels/SelectableChannel;
            pop
        13: .line 530
            aload 7
            athrow
        14: .line 532
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 7 /* e */
        start local 7 // java.io.IOException e
        15: .line 533
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            aload 7 /* e */
            invokevirtual org.jruby.Ruby.newIOErrorFromException:(Ljava/io/IOException;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 7 // java.io.IOException e
        end local 6 // boolean oldBlocking
        16: .line 519
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext java.nio.ByteBuffer java.nio.channels.Channel java.nio.channels.SelectableChannel java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 5
            monitorexit
        17: athrow
        end local 4 // java.nio.channels.SelectableChannel selectable
        end local 3 // java.nio.channels.Channel channel
        end local 2 // java.nio.ByteBuffer buffer
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   18     0         this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   18     1      context  Lorg/jruby/runtime/ThreadContext;
            0   18     2       buffer  Ljava/nio/ByteBuffer;
            1   18     3      channel  Ljava/nio/channels/Channel;
            4   18     4   selectable  Ljava/nio/channels/SelectableChannel;
            6   16     6  oldBlocking  Z
           15   16     7            e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           7     8      11  any
           6     9      14  Class java.io.IOException
          11    14      14  Class java.io.IOException
           5    10      16  any
          11    17      16  any
    MethodParameters:
         Name  Flags
      context  
      buffer   final

  private void joinMulticastGroup(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.builtin.IRubyObject val
         0: .line 539
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenChannel:()Ljava/nio/channels/Channel;
            astore 2 /* socketChannel */
        start local 2 // java.nio.channels.Channel socketChannel
         1: .line 541
            aload 2 /* socketChannel */
            instanceof java.nio.channels.DatagramChannel
            ifeq 7
         2: .line 542
            aload 0 /* this */
            getfield org.jruby.ext.socket.RubyBasicSocket.multicastStateManager:Lorg/jruby/ext/socket/MulticastStateManager;
            ifnonnull 4
         3: .line 543
            aload 0 /* this */
            new org.jruby.ext.socket.MulticastStateManager
            dup
            invokespecial org.jruby.ext.socket.MulticastStateManager.<init>:()V
            putfield org.jruby.ext.socket.RubyBasicSocket.multicastStateManager:Lorg/jruby/ext/socket/MulticastStateManager;
         4: .line 546
      StackMap locals: java.nio.channels.Channel
      StackMap stack:
            aload 1 /* val */
            instanceof org.jruby.RubyString
            ifeq 7
         5: .line 547
            aload 1 /* val */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToString:()Lorg/jruby/RubyString;
            invokevirtual org.jruby.RubyString.getBytes:()[B
            astore 3 /* ipaddr_buf */
        start local 3 // byte[] ipaddr_buf
         6: .line 549
            aload 0 /* this */
            getfield org.jruby.ext.socket.RubyBasicSocket.multicastStateManager:Lorg/jruby/ext/socket/MulticastStateManager;
            aload 3 /* ipaddr_buf */
            invokevirtual org.jruby.ext.socket.MulticastStateManager.addMembership:([B)V
        end local 3 // byte[] ipaddr_buf
         7: .line 552
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.nio.channels.Channel socketChannel
        end local 1 // org.jruby.runtime.builtin.IRubyObject val
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    8     1            val  Lorg/jruby/runtime/builtin/IRubyObject;
            1    8     2  socketChannel  Ljava/nio/channels/Channel;
            6    7     3     ipaddr_buf  [B
    Exceptions:
      throws java.io.IOException, org.jruby.util.io.BadDescriptorException
    MethodParameters:
      Name  Flags
      val   

  protected java.net.InetSocketAddress getInetSocketAddress();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 555
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getSocketAddress:()Ljava/net/SocketAddress;
            astore 1 /* socketAddress */
        start local 1 // java.net.SocketAddress socketAddress
         1: .line 556
            aload 1 /* socketAddress */
            instanceof java.net.InetSocketAddress
            ifeq 2
            aload 1 /* socketAddress */
            checkcast java.net.InetSocketAddress
            areturn
         2: .line 557
      StackMap locals: java.net.SocketAddress
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.net.SocketAddress socketAddress
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/jruby/ext/socket/RubyBasicSocket;
            1    3     1  socketAddress  Ljava/net/SocketAddress;

  protected java.net.InetSocketAddress getInetRemoteSocket();
    descriptor: ()Ljava/net/InetSocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 561
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRemoteSocket:()Ljava/net/SocketAddress;
            astore 1 /* socketAddress */
        start local 1 // java.net.SocketAddress socketAddress
         1: .line 562
            aload 1 /* socketAddress */
            instanceof java.net.InetSocketAddress
            ifeq 2
            aload 1 /* socketAddress */
            checkcast java.net.InetSocketAddress
            areturn
         2: .line 563
      StackMap locals: java.net.SocketAddress
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.net.SocketAddress socketAddress
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/jruby/ext/socket/RubyBasicSocket;
            1    3     1  socketAddress  Ljava/net/SocketAddress;

  protected jnr.unixsocket.UnixSocketAddress getUnixSocketAddress();
    descriptor: ()Ljnr/unixsocket/UnixSocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 567
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getSocketAddress:()Ljava/net/SocketAddress;
            astore 1 /* socketAddress */
        start local 1 // java.net.SocketAddress socketAddress
         1: .line 568
            aload 1 /* socketAddress */
            instanceof jnr.unixsocket.UnixSocketAddress
            ifeq 2
            aload 1 /* socketAddress */
            checkcast jnr.unixsocket.UnixSocketAddress
            areturn
         2: .line 569
      StackMap locals: java.net.SocketAddress
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.net.SocketAddress socketAddress
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/jruby/ext/socket/RubyBasicSocket;
            1    3     1  socketAddress  Ljava/net/SocketAddress;

  protected jnr.unixsocket.UnixSocketAddress getUnixRemoteSocket();
    descriptor: ()Ljnr/unixsocket/UnixSocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 573
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRemoteSocket:()Ljava/net/SocketAddress;
            astore 1 /* socketAddress */
        start local 1 // java.net.SocketAddress socketAddress
         1: .line 574
            aload 1 /* socketAddress */
            instanceof jnr.unixsocket.UnixSocketAddress
            ifeq 2
            aload 1 /* socketAddress */
            checkcast jnr.unixsocket.UnixSocketAddress
            areturn
         2: .line 575
      StackMap locals: java.net.SocketAddress
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.net.SocketAddress socketAddress
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/jruby/ext/socket/RubyBasicSocket;
            1    3     1  socketAddress  Ljava/net/SocketAddress;

  protected java.net.SocketAddress getSocketAddress();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 579
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenChannel:()Ljava/nio/channels/Channel;
            astore 1 /* channel */
        start local 1 // java.nio.channels.Channel channel
         1: .line 581
            aload 1 /* channel */
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            aload 1 /* channel */
            invokevirtual org.jruby.ext.socket.SocketType.getLocalSocketAddress:(Ljava/nio/channels/Channel;)Ljava/net/SocketAddress;
            areturn
        end local 1 // java.nio.channels.Channel channel
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            1    2     1  channel  Ljava/nio/channels/Channel;

  protected java.net.SocketAddress getRemoteSocket();
    descriptor: ()Ljava/net/SocketAddress;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 585
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenChannel:()Ljava/nio/channels/Channel;
            astore 1 /* channel */
        start local 1 // java.nio.channels.Channel channel
         1: .line 587
            aload 1 /* channel */
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            aload 1 /* channel */
            invokevirtual org.jruby.ext.socket.SocketType.getRemoteSocketAddress:(Ljava/nio/channels/Channel;)Ljava/net/SocketAddress;
            astore 2 /* address */
        start local 2 // java.net.SocketAddress address
         2: .line 589
            aload 2 /* address */
            ifnonnull 3
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.newErrnoENOTCONNError:()Lorg/jruby/exceptions/RaiseException;
            athrow
         3: .line 591
      StackMap locals: java.nio.channels.Channel java.net.SocketAddress
      StackMap stack:
            aload 2 /* address */
            areturn
        end local 2 // java.net.SocketAddress address
        end local 1 // java.nio.channels.Channel channel
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            1    4     1  channel  Ljava/nio/channels/Channel;
            2    4     2  address  Ljava/net/SocketAddress;

  protected org.jruby.runtime.builtin.IRubyObject getSocknameCommon(org.jruby.runtime.ThreadContext, java.lang.String);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // java.lang.String caller
         0: .line 595
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getInetSocketAddress:()Ljava/net/InetSocketAddress;
            ifnull 2
         1: .line 596
            aload 1 /* context */
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getInetSocketAddress:()Ljava/net/InetSocketAddress;
            invokestatic org.jruby.util.io.Sockaddr.pack_sockaddr_in:(Lorg/jruby/runtime/ThreadContext;Ljava/net/InetSocketAddress;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         2: .line 599
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getUnixSocketAddress:()Ljnr/unixsocket/UnixSocketAddress;
            ifnull 4
         3: .line 600
            aload 1 /* context */
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getUnixSocketAddress:()Ljnr/unixsocket/UnixSocketAddress;
            invokevirtual jnr.unixsocket.UnixSocketAddress.path:()Ljava/lang/String;
            invokestatic org.jruby.util.io.Sockaddr.pack_sockaddr_un:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
         4: .line 603
      StackMap locals:
      StackMap stack:
            aload 1 /* context */
            iconst_0
            ldc "0.0.0.0"
            invokestatic org.jruby.util.io.Sockaddr.pack_sockaddr_in:(Lorg/jruby/runtime/ThreadContext;ILjava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // java.lang.String caller
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    5     1  context  Lorg/jruby/runtime/ThreadContext;
            0    5     2   caller  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      context  
      caller   

  private static org.jruby.runtime.builtin.IRubyObject shutdownInternal(org.jruby.runtime.ThreadContext, org.jruby.util.io.OpenFile, int);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/OpenFile;I)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.util.io.OpenFile fptr
        start local 2 // int how
         0: .line 607
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 3 /* runtime */
        start local 3 // org.jruby.Ruby runtime
         1: .line 610
            iload 2 /* how */
            tableswitch { // 0 - 2
                    0: 2
                    1: 8
                    2: 14
              default: 17
          }
         2: .line 612
      StackMap locals: org.jruby.Ruby
      StackMap stack:
            aload 1 /* fptr */
            invokevirtual org.jruby.util.io.OpenFile.channel:()Ljava/nio/channels/Channel;
            astore 4 /* channel */
        start local 4 // java.nio.channels.Channel channel
         3: .line 614
            aload 4 /* channel */
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            aload 4 /* channel */
            invokevirtual org.jruby.ext.socket.SocketType.shutdownInput:(Ljava/nio/channels/Channel;)V
         4: .line 615
            goto 6
         5: .line 616
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.util.io.OpenFile int org.jruby.Ruby java.nio.channels.Channel
      StackMap stack: java.io.IOException
            pop
         6: .line 620
      StackMap locals:
      StackMap stack:
            aload 1 /* fptr */
            aload 1 /* fptr */
            invokevirtual org.jruby.util.io.OpenFile.getMode:()I
            bipush -2
            iand
            invokevirtual org.jruby.util.io.OpenFile.setMode:(I)V
         7: .line 622
            aload 3 /* runtime */
            invokestatic org.jruby.RubyFixnum.zero:(Lorg/jruby/Ruby;)Lorg/jruby/RubyFixnum;
            areturn
        end local 4 // java.nio.channels.Channel channel
         8: .line 625
      StackMap locals:
      StackMap stack:
            aload 1 /* fptr */
            invokevirtual org.jruby.util.io.OpenFile.channel:()Ljava/nio/channels/Channel;
            astore 4 /* channel */
        start local 4 // java.nio.channels.Channel channel
         9: .line 627
            aload 4 /* channel */
            invokestatic org.jruby.ext.socket.SocketType.forChannel:(Ljava/nio/channels/Channel;)Lorg/jruby/ext/socket/SocketType;
            aload 4 /* channel */
            invokevirtual org.jruby.ext.socket.SocketType.shutdownOutput:(Ljava/nio/channels/Channel;)V
        10: .line 628
            goto 12
        11: .line 629
      StackMap locals: org.jruby.runtime.ThreadContext org.jruby.util.io.OpenFile int org.jruby.Ruby java.nio.channels.Channel
      StackMap stack: java.io.IOException
            pop
        12: .line 633
      StackMap locals:
      StackMap stack:
            aload 1 /* fptr */
            aload 1 /* fptr */
            invokevirtual org.jruby.util.io.OpenFile.getMode:()I
            bipush -3
            iand
            invokevirtual org.jruby.util.io.OpenFile.setMode:(I)V
        13: .line 635
            aload 3 /* runtime */
            invokestatic org.jruby.RubyFixnum.zero:(Lorg/jruby/Ruby;)Lorg/jruby/RubyFixnum;
            areturn
        end local 4 // java.nio.channels.Channel channel
        14: .line 638
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            aload 1 /* fptr */
            iconst_0
            invokestatic org.jruby.ext.socket.RubyBasicSocket.shutdownInternal:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/OpenFile;I)Lorg/jruby/runtime/builtin/IRubyObject;
            pop
        15: .line 639
            aload 0 /* context */
            aload 1 /* fptr */
            iconst_1
            invokestatic org.jruby.ext.socket.RubyBasicSocket.shutdownInternal:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/util/io/OpenFile;I)Lorg/jruby/runtime/builtin/IRubyObject;
            pop
        16: .line 641
            aload 3 /* runtime */
            invokestatic org.jruby.RubyFixnum.zero:(Lorg/jruby/Ruby;)Lorg/jruby/RubyFixnum;
            areturn
        17: .line 644
      StackMap locals:
      StackMap stack:
            aload 3 /* runtime */
            ldc "`how' should be either :SHUT_RD, :SHUT_WR, :SHUT_RDWR"
            invokevirtual org.jruby.Ruby.newArgumentError:(Ljava/lang/String;)Lorg/jruby/exceptions/RaiseException;
            athrow
        end local 3 // org.jruby.Ruby runtime
        end local 2 // int how
        end local 1 // org.jruby.util.io.OpenFile fptr
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   18     0  context  Lorg/jruby/runtime/ThreadContext;
            0   18     1     fptr  Lorg/jruby/util/io/OpenFile;
            0   18     2      how  I
            1   18     3  runtime  Lorg/jruby/Ruby;
            3    8     4  channel  Ljava/nio/channels/Channel;
            9   14     4  channel  Ljava/nio/channels/Channel;
      Exception table:
        from    to  target  type
           3     4       5  Class java.io.IOException
           9    10      11  Class java.io.IOException
    MethodParameters:
         Name  Flags
      context  
      fptr     
      how      

  public boolean doNotReverseLookup(org.jruby.runtime.ThreadContext);
    descriptor: (Lorg/jruby/runtime/ThreadContext;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
         0: .line 649
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.isDoNotReverseLookupEnabled:()Z
            ifne 1
            aload 0 /* this */
            getfield org.jruby.ext.socket.RubyBasicSocket.doNotReverseLookup:Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    2     1  context  Lorg/jruby/runtime/ThreadContext;
    MethodParameters:
         Name  Flags
      context  

  protected static org.jruby.util.io.ChannelFD newChannelFD(org.jruby.Ruby, java.nio.channels.Channel);
    descriptor: (Lorg/jruby/Ruby;Ljava/nio/channels/Channel;)Lorg/jruby/util/io/ChannelFD;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.nio.channels.Channel channel
         0: .line 653
            new org.jruby.util.io.ChannelFD
            dup
            aload 1 /* channel */
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getPosix:()Ljnr/posix/POSIX;
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getFilenoUtil:()Lorg/jruby/util/io/FilenoUtil;
            invokespecial org.jruby.util.io.ChannelFD.<init>:(Ljava/nio/channels/Channel;Ljnr/posix/POSIX;Lorg/jruby/util/io/FilenoUtil;)V
            astore 2 /* fd */
        start local 2 // org.jruby.util.io.ChannelFD fd
         1: .line 655
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getPosix:()Ljnr/posix/POSIX;
            invokeinterface jnr.posix.POSIX.isNative:()Z
            ifeq 3
            aload 2 /* fd */
            getfield org.jruby.util.io.ChannelFD.realFileno:I
            iflt 3
            getstatic org.jruby.platform.Platform.IS_WINDOWS:Z
            ifne 3
         2: .line 656
            aload 0 /* runtime */
            invokevirtual org.jruby.Ruby.getPosix:()Ljnr/posix/POSIX;
            aload 2 /* fd */
            getfield org.jruby.util.io.ChannelFD.realFileno:I
            getstatic jnr.constants.platform.Fcntl.F_SETFD:Ljnr/constants/platform/Fcntl;
            iconst_1
            invokeinterface jnr.posix.POSIX.fcntlInt:(ILjnr/constants/platform/Fcntl;I)I
            pop
         3: .line 659
      StackMap locals: org.jruby.util.io.ChannelFD
      StackMap stack:
            aload 2 /* fd */
            areturn
        end local 2 // org.jruby.util.io.ChannelFD fd
        end local 1 // java.nio.channels.Channel channel
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  runtime  Lorg/jruby/Ruby;
            0    4     1  channel  Ljava/nio/channels/Channel;
            1    4     2       fd  Lorg/jruby/util/io/ChannelFD;
    MethodParameters:
         Name  Flags
      runtime  
      channel  

  protected void initSocket(org.jruby.util.io.ChannelFD);
    descriptor: (Lorg/jruby/util/io/ChannelFD;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.util.io.ChannelFD fd
         0: .line 664
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.MakeOpenFile:()Lorg/jruby/util/io/OpenFile;
            pop
         1: .line 666
            aload 0 /* this */
            getfield org.jruby.ext.socket.RubyBasicSocket.openFile:Lorg/jruby/util/io/OpenFile;
            aload 1 /* fd */
            invokevirtual org.jruby.util.io.OpenFile.setFD:(Lorg/jruby/util/io/ChannelFD;)V
         2: .line 667
            aload 0 /* this */
            getfield org.jruby.ext.socket.RubyBasicSocket.openFile:Lorg/jruby/util/io/OpenFile;
            bipush 11
            invokevirtual org.jruby.util.io.OpenFile.setMode:(I)V
         3: .line 670
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.setAscii8bitBinmode:()Lorg/jruby/RubyIO;
            pop
         4: .line 671
            return
        end local 1 // org.jruby.util.io.ChannelFD fd
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    5     1    fd  Lorg/jruby/util/io/ChannelFD;
    MethodParameters:
      Name  Flags
      fd    

  private java.nio.channels.Channel getOpenChannel();
    descriptor: ()Ljava/nio/channels/Channel;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 674
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getOpenFileChecked:()Lorg/jruby/util/io/OpenFile;
            invokevirtual org.jruby.util.io.OpenFile.channel:()Ljava/nio/channels/Channel;
            areturn
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ext/socket/RubyBasicSocket;

  static java.lang.RuntimeException sockerr(org.jruby.Ruby, java.lang.String, java.lang.Exception);
    descriptor: (Lorg/jruby/Ruby;Ljava/lang/String;Ljava/lang/Exception;)Ljava/lang/RuntimeException;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // org.jruby.Ruby runtime
        start local 1 // java.lang.String msg
        start local 2 // java.lang.Exception cause
         0: .line 678
            aload 0 /* runtime */
            aload 1 /* msg */
            invokestatic org.jruby.ext.socket.SocketUtils.sockerr:(Lorg/jruby/Ruby;Ljava/lang/String;)Ljava/lang/RuntimeException;
            astore 3 /* ex */
        start local 3 // java.lang.RuntimeException ex
         1: .line 679
            aload 2 /* cause */
            ifnull 2
            aload 3 /* ex */
            aload 2 /* cause */
            invokevirtual java.lang.RuntimeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            pop
         2: .line 680
      StackMap locals: java.lang.RuntimeException
      StackMap stack:
            aload 3 /* ex */
            areturn
        end local 3 // java.lang.RuntimeException ex
        end local 2 // java.lang.Exception cause
        end local 1 // java.lang.String msg
        end local 0 // org.jruby.Ruby runtime
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  runtime  Lorg/jruby/Ruby;
            0    3     1      msg  Ljava/lang/String;
            0    3     2    cause  Ljava/lang/Exception;
            1    3     3       ex  Ljava/lang/RuntimeException;
    MethodParameters:
         Name  Flags
      runtime  final
      msg      final
      cause    final

  static boolean extractExceptionArg(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject opts
         0: .line 684
            aload 0 /* context */
            ldc "exception"
            aload 1 /* opts */
            invokestatic org.jruby.ast.util.ArgsUtil.extractKeywordArg:(Lorg/jruby/runtime/ThreadContext;Ljava/lang/String;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.fals:Lorg/jruby/RubyBoolean;
            if_acmpeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject opts
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Lorg/jruby/runtime/ThreadContext;
            0    2     1     opts  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      context  
      opts     

  private static int asNumber(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject val
         0: .line 688
            aload 1 /* val */
            instanceof org.jruby.RubyNumeric
            ifeq 2
         1: .line 689
            aload 1 /* val */
            invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            ireturn
         2: .line 691
      StackMap locals:
      StackMap stack:
            aload 1 /* val */
            instanceof org.jruby.RubyBoolean
            ifeq 6
         3: .line 692
            aload 1 /* val */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isTrue:()Z
            ifeq 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: ireturn
         6: .line 694
      StackMap locals:
      StackMap stack:
            aload 0 /* context */
            aload 1 /* val */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.stringAsNumber:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)I
            ireturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject val
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0  context  Lorg/jruby/runtime/ThreadContext;
            0    7     1      val  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      context  
      val      

  private static int stringAsNumber(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.jruby.runtime.ThreadContext context
        start local 1 // org.jruby.runtime.builtin.IRubyObject val
         0: .line 698
            aload 0 /* context */
            aload 1 /* val */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.convertToString:()Lorg/jruby/RubyString;
            getstatic org.jruby.ext.socket.RubyBasicSocket.FORMAT_SMALL_I:Lorg/jruby/util/ByteList;
            invokestatic org.jruby.util.Pack.unpack:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/RubyString;Lorg/jruby/util/ByteList;)Lorg/jruby/RubyArray;
            iconst_0
            invokevirtual org.jruby.RubyArray.entry:(I)Lorg/jruby/runtime/builtin/IRubyObject;
            astore 2 /* res */
        start local 2 // org.jruby.runtime.builtin.IRubyObject res
         1: .line 700
            aload 2 /* res */
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.nil:Lorg/jruby/runtime/builtin/IRubyObject;
            if_acmpne 2
            aload 0 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.newErrnoEINVALError:()Lorg/jruby/exceptions/RaiseException;
            athrow
         2: .line 702
      StackMap locals: org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
            aload 2 /* res */
            invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            ireturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject res
        end local 1 // org.jruby.runtime.builtin.IRubyObject val
        end local 0 // org.jruby.runtime.ThreadContext context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  context  Lorg/jruby/runtime/ThreadContext;
            0    3     1      val  Lorg/jruby/runtime/builtin/IRubyObject;
            1    3     2      res  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      context  
      val      

  protected boolean asBoolean(org.jruby.runtime.ThreadContext, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // org.jruby.runtime.builtin.IRubyObject val
         0: .line 706
            aload 2 /* val */
            instanceof org.jruby.RubyString
            ifeq 3
         1: .line 707
            aload 1 /* context */
            aload 2 /* val */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.stringAsNumber:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)I
            ifeq 2
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
         3: .line 709
      StackMap locals:
      StackMap stack:
            aload 2 /* val */
            instanceof org.jruby.RubyNumeric
            ifeq 6
         4: .line 710
            aload 2 /* val */
            invokestatic org.jruby.RubyNumeric.fix2int:(Lorg/jruby/runtime/builtin/IRubyObject;)I
            ifeq 5
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         5: iconst_0
            ireturn
         6: .line 712
      StackMap locals:
      StackMap stack:
            aload 2 /* val */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.isTrue:()Z
            ireturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject val
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    7     1  context  Lorg/jruby/runtime/ThreadContext;
            0    7     2      val  Lorg/jruby/runtime/builtin/IRubyObject;
    MethodParameters:
         Name  Flags
      context  
      val      

  protected org.jruby.runtime.builtin.IRubyObject addrFor(org.jruby.runtime.ThreadContext, java.net.InetSocketAddress, boolean);
    descriptor: (Lorg/jruby/runtime/ThreadContext;Ljava/net/InetSocketAddress;Z)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=10, args_size=4
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.ThreadContext context
        start local 2 // java.net.InetSocketAddress addr
        start local 3 // boolean reverse
         0: .line 716
            aload 1 /* context */
            getfield org.jruby.runtime.ThreadContext.runtime:Lorg/jruby/Ruby;
            astore 4 /* runtime */
        start local 4 // org.jruby.Ruby runtime
         1: .line 718
            aload 2 /* addr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            instanceof java.net.Inet6Address
            ifeq 4
         2: .line 719
            aload 4 /* runtime */
            ldc "AF_INET6"
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            astore 5 /* ret0 */
        start local 5 // org.jruby.runtime.builtin.IRubyObject ret0
         3: .line 720
            goto 5
        end local 5 // org.jruby.runtime.builtin.IRubyObject ret0
         4: .line 721
      StackMap locals: org.jruby.Ruby
      StackMap stack:
            aload 4 /* runtime */
            ldc "AF_INET"
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            astore 5 /* ret0 */
        start local 5 // org.jruby.runtime.builtin.IRubyObject ret0
         5: .line 723
      StackMap locals: org.jruby.runtime.builtin.IRubyObject
      StackMap stack:
            aload 4 /* runtime */
            aload 2 /* addr */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            invokevirtual org.jruby.Ruby.newFixnum:(I)Lorg/jruby/RubyFixnum;
            astore 6 /* ret1 */
        start local 6 // org.jruby.runtime.builtin.IRubyObject ret1
         6: .line 724
            aload 2 /* addr */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            astore 9 /* hostAddress */
        start local 9 // java.lang.String hostAddress
         7: .line 725
            iload 3 /* reverse */
            ifeq 8
            aload 0 /* this */
            aload 1 /* context */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.doNotReverseLookup:(Lorg/jruby/runtime/ThreadContext;)Z
            ifeq 10
         8: .line 726
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext java.net.InetSocketAddress int org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject top top java.lang.String
      StackMap stack:
            aload 4 /* runtime */
            aload 9 /* hostAddress */
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            astore 7 /* ret2 */
        start local 7 // org.jruby.runtime.builtin.IRubyObject ret2
         9: .line 727
            goto 11
        end local 7 // org.jruby.runtime.builtin.IRubyObject ret2
        10: .line 728
      StackMap locals:
      StackMap stack:
            aload 4 /* runtime */
            aload 2 /* addr */
            invokevirtual java.net.InetSocketAddress.getHostName:()Ljava/lang/String;
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            astore 7 /* ret2 */
        start local 7 // org.jruby.runtime.builtin.IRubyObject ret2
        11: .line 730
      StackMap locals: org.jruby.ext.socket.RubyBasicSocket org.jruby.runtime.ThreadContext java.net.InetSocketAddress int org.jruby.Ruby org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject org.jruby.runtime.builtin.IRubyObject top java.lang.String
      StackMap stack:
            aload 4 /* runtime */
            aload 9 /* hostAddress */
            invokevirtual org.jruby.Ruby.newString:(Ljava/lang/String;)Lorg/jruby/RubyString;
            astore 8 /* ret3 */
        start local 8 // org.jruby.runtime.builtin.IRubyObject ret3
        12: .line 731
            aload 4 /* runtime */
            aload 5 /* ret0 */
            aload 6 /* ret1 */
            aload 7 /* ret2 */
            aload 8 /* ret3 */
            invokestatic org.jruby.RubyArray.newArray:(Lorg/jruby/Ruby;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/RubyArray;
            areturn
        end local 9 // java.lang.String hostAddress
        end local 8 // org.jruby.runtime.builtin.IRubyObject ret3
        end local 7 // org.jruby.runtime.builtin.IRubyObject ret2
        end local 6 // org.jruby.runtime.builtin.IRubyObject ret1
        end local 5 // org.jruby.runtime.builtin.IRubyObject ret0
        end local 4 // org.jruby.Ruby runtime
        end local 3 // boolean reverse
        end local 2 // java.net.InetSocketAddress addr
        end local 1 // org.jruby.runtime.ThreadContext context
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0   13     1      context  Lorg/jruby/runtime/ThreadContext;
            0   13     2         addr  Ljava/net/InetSocketAddress;
            0   13     3      reverse  Z
            1   13     4      runtime  Lorg/jruby/Ruby;
            3    4     5         ret0  Lorg/jruby/runtime/builtin/IRubyObject;
            5   13     5         ret0  Lorg/jruby/runtime/builtin/IRubyObject;
            6   13     6         ret1  Lorg/jruby/runtime/builtin/IRubyObject;
            9   10     7         ret2  Lorg/jruby/runtime/builtin/IRubyObject;
           11   13     7         ret2  Lorg/jruby/runtime/builtin/IRubyObject;
           12   13     8         ret3  Lorg/jruby/runtime/builtin/IRubyObject;
            7   13     9  hostAddress  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      context  
      addr     
      reverse  

  public org.jruby.runtime.builtin.IRubyObject recv(org.jruby.runtime.builtin.IRubyObject[]);
    descriptor: ([Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.builtin.IRubyObject[] args
         0: .line 736
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 1 /* args */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.recv:(Lorg/jruby/runtime/ThreadContext;[Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject[] args
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1  args  [Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      args  

  public org.jruby.runtime.builtin.IRubyObject getsockopt(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.builtin.IRubyObject lev
        start local 2 // org.jruby.runtime.builtin.IRubyObject optname
         0: .line 741
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 1 /* lev */
            aload 2 /* optname */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getsockopt:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 2 // org.jruby.runtime.builtin.IRubyObject optname
        end local 1 // org.jruby.runtime.builtin.IRubyObject lev
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1      lev  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2  optname  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      lev      
      optname  

  public org.jruby.runtime.builtin.IRubyObject setsockopt(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
        start local 1 // org.jruby.runtime.builtin.IRubyObject lev
        start local 2 // org.jruby.runtime.builtin.IRubyObject optname
        start local 3 // org.jruby.runtime.builtin.IRubyObject val
         0: .line 746
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 1 /* lev */
            aload 2 /* optname */
            aload 3 /* val */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.setsockopt:(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 val
        end local 2 // org.jruby.runtime.builtin.IRubyObject optname
        end local 1 // org.jruby.runtime.builtin.IRubyObject lev
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/jruby/ext/socket/RubyBasicSocket;
            0    1     1      lev  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     2  optname  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     3      val  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
         Name  Flags
      lev      
      optname  
      val      

  public org.jruby.runtime.builtin.IRubyObject getsockname();
    descriptor: ()Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 751
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getsockname:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ext/socket/RubyBasicSocket;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public org.jruby.runtime.builtin.IRubyObject getpeername();
    descriptor: ()Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.ext.socket.RubyBasicSocket this
         0: .line 756
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            invokevirtual org.jruby.ext.socket.RubyBasicSocket.getpeername:(Lorg/jruby/runtime/ThreadContext;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 0 // org.jruby.ext.socket.RubyBasicSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jruby/ext/socket/RubyBasicSocket;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public static org.jruby.runtime.builtin.IRubyObject do_not_reverse_lookup(org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jruby.runtime.builtin.IRubyObject recv
         0: .line 761
            aload 0 /* recv */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 0 /* recv */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.do_not_reverse_lookup:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 0 // org.jruby.runtime.builtin.IRubyObject recv
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  recv  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      recv  

  public static org.jruby.runtime.builtin.IRubyObject set_do_not_reverse_lookup(org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.builtin.IRubyObject);
    descriptor: (Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.runtime.builtin.IRubyObject recv
        start local 1 // org.jruby.runtime.builtin.IRubyObject flag
         0: .line 766
            aload 0 /* recv */
            invokeinterface org.jruby.runtime.builtin.IRubyObject.getRuntime:()Lorg/jruby/Ruby;
            invokevirtual org.jruby.Ruby.getCurrentContext:()Lorg/jruby/runtime/ThreadContext;
            aload 0 /* recv */
            aload 1 /* flag */
            invokestatic org.jruby.ext.socket.RubyBasicSocket.set_do_not_reverse_lookup:(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
            areturn
        end local 1 // org.jruby.runtime.builtin.IRubyObject flag
        end local 0 // org.jruby.runtime.builtin.IRubyObject recv
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  recv  Lorg/jruby/runtime/builtin/IRubyObject;
            0    1     1  flag  Lorg/jruby/runtime/builtin/IRubyObject;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      recv  
      flag  

  static int[] $SWITCH_TABLE$jnr$constants$platform$SocketLevel();
    descriptor: ()[I
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 80
            getstatic org.jruby.ext.socket.RubyBasicSocket.$SWITCH_TABLE$jnr$constants$platform$SocketLevel:[I
            dup
            ifnull 1
            areturn
      StackMap locals:
      StackMap stack: int[]
         1: pop
            invokestatic jnr.constants.platform.SocketLevel.values:()[Ljnr/constants/platform/SocketLevel;
            arraylength
            newarray 10
            astore 0
         2: aload 0
            getstatic jnr.constants.platform.SocketLevel.SOL_IP:Ljnr/constants/platform/SocketLevel;
            invokevirtual jnr.constants.platform.SocketLevel.ordinal:()I
            iconst_2
            iastore
         3: goto 5
      StackMap locals: int[]
      StackMap stack: java.lang.NoSuchFieldError
         4: pop
      StackMap locals:
      StackMap stack:
         5: aload 0
            getstatic jnr.constants.platform.SocketLevel.SOL_SOCKET:Ljnr/constants/platform/SocketLevel;
            invokevirtual jnr.constants.platform.SocketLevel.ordinal:()I
            iconst_1
            iastore
         6: goto 8
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
         7: pop
      StackMap locals:
      StackMap stack:
         8: aload 0
            getstatic jnr.constants.platform.SocketLevel.SOL_TCP:Ljnr/constants/platform/SocketLevel;
            invokevirtual jnr.constants.platform.SocketLevel.ordinal:()I
            iconst_3
            iastore
         9: goto 11
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        10: pop
      StackMap locals:
      StackMap stack:
        11: aload 0
            getstatic jnr.constants.platform.SocketLevel.SOL_UDP:Ljnr/constants/platform/SocketLevel;
            invokevirtual jnr.constants.platform.SocketLevel.ordinal:()I
            iconst_4
            iastore
        12: goto 14
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        13: pop
      StackMap locals:
      StackMap stack:
        14: aload 0
            getstatic jnr.constants.platform.SocketLevel.__UNKNOWN_CONSTANT__:Ljnr/constants/platform/SocketLevel;
            invokevirtual jnr.constants.platform.SocketLevel.ordinal:()I
            iconst_5
            iastore
        15: goto 17
      StackMap locals:
      StackMap stack: java.lang.NoSuchFieldError
        16: pop
      StackMap locals:
      StackMap stack:
        17: aload 0
            dup
            putstatic org.jruby.ext.socket.RubyBasicSocket.$SWITCH_TABLE$jnr$constants$platform$SocketLevel:[I
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.NoSuchFieldError
           5     6       7  Class java.lang.NoSuchFieldError
           8     9      10  Class java.lang.NoSuchFieldError
          11    12      13  Class java.lang.NoSuchFieldError
          14    15      16  Class java.lang.NoSuchFieldError
}
SourceFile: "RubyBasicSocket.java"
NestMembers:
  org.jruby.ext.socket.RubyBasicSocket$1  org.jruby.ext.socket.RubyBasicSocket$ReceiveTuple
InnerClasses:
  org.jruby.ext.socket.RubyBasicSocket$1
  protected ReceiveTuple = org.jruby.ext.socket.RubyBasicSocket$ReceiveTuple of org.jruby.ext.socket.RubyBasicSocket
    RuntimeVisibleAnnotations: 
      org.jruby.anno.JRubyClass(name = {"BasicSocket"}, parent = "IO")