class java.net.DualStackPlainSocketImpl extends java.net.AbstractPlainSocketImpl
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: java.net.DualStackPlainSocketImpl
  super_class: java.net.AbstractPlainSocketImpl
{
  static sun.misc.JavaIOFileDescriptorAccess fdAccess;
    descriptor: Lsun/misc/JavaIOFileDescriptorAccess;
    flags: (0x0008) ACC_STATIC

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

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

  static final int WOULDBLOCK;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: -2

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 43
            invokestatic sun.misc.SharedSecrets.getJavaIOFileDescriptorAccess:()Lsun/misc/JavaIOFileDescriptorAccess;
            putstatic java.net.DualStackPlainSocketImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
         1: .line 259
            invokestatic java.net.DualStackPlainSocketImpl.initIDs:()V
         2: .line 260
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // boolean exclBind
         0: .line 52
            aload 0 /* this */
            invokespecial java.net.AbstractPlainSocketImpl.<init>:()V
         1: .line 53
            aload 0 /* this */
            iload 1 /* exclBind */
            putfield java.net.DualStackPlainSocketImpl.exclusiveBind:Z
         2: .line 54
            return
        end local 1 // boolean exclBind
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljava/net/DualStackPlainSocketImpl;
            0    3     1  exclBind  Z
    MethodParameters:
          Name  Flags
      exclBind  

  public void <init>(java.io.FileDescriptor, boolean);
    descriptor: (Ljava/io/FileDescriptor;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // boolean exclBind
         0: .line 56
            aload 0 /* this */
            invokespecial java.net.AbstractPlainSocketImpl.<init>:()V
         1: .line 57
            aload 0 /* this */
            aload 1 /* fd */
            putfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
         2: .line 58
            aload 0 /* this */
            iload 2 /* exclBind */
            putfield java.net.DualStackPlainSocketImpl.exclusiveBind:Z
         3: .line 59
            return
        end local 2 // boolean exclBind
        end local 1 // java.io.FileDescriptor fd
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Ljava/net/DualStackPlainSocketImpl;
            0    4     1        fd  Ljava/io/FileDescriptor;
            0    4     2  exclBind  Z
    MethodParameters:
          Name  Flags
      fd        
      exclBind  

  void socketCreate(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // boolean stream
         0: .line 62
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            ifnonnull 2
         1: .line 63
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 65
      StackMap locals:
      StackMap stack:
            iload 1 /* stream */
            iconst_0
            invokestatic java.net.DualStackPlainSocketImpl.socket0:(ZZ)I
            istore 2 /* newfd */
        start local 2 // int newfd
         3: .line 67
            getstatic java.net.DualStackPlainSocketImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            iload 2 /* newfd */
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.set:(Ljava/io/FileDescriptor;I)V
         4: .line 68
            return
        end local 2 // int newfd
        end local 1 // boolean stream
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Ljava/net/DualStackPlainSocketImpl;
            0    5     1  stream  Z
            3    5     2   newfd  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  

  void socketConnect(java.net.InetAddress, int, int);
    descriptor: (Ljava/net/InetAddress;II)V
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=4
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // java.net.InetAddress address
        start local 2 // int port
        start local 3 // int timeout
         0: .line 72
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 4 /* nativefd */
        start local 4 // int nativefd
         1: .line 74
            aload 1 /* address */
            ifnonnull 3
         2: .line 75
            new java.lang.NullPointerException
            dup
            ldc "inet address argument is null."
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 78
      StackMap locals: int
      StackMap stack:
            iload 3 /* timeout */
            ifgt 6
         4: .line 79
            iload 4 /* nativefd */
            aload 1 /* address */
            iload 2 /* port */
            invokestatic java.net.DualStackPlainSocketImpl.connect0:(ILjava/net/InetAddress;I)I
            istore 5 /* connectResult */
        start local 5 // int connectResult
         5: .line 80
            goto 15
        end local 5 // int connectResult
         6: .line 81
      StackMap locals:
      StackMap stack:
            iload 4 /* nativefd */
            iconst_0
            invokestatic java.net.DualStackPlainSocketImpl.configureBlocking:(IZ)V
         7: .line 83
            iload 4 /* nativefd */
            aload 1 /* address */
            iload 2 /* port */
            invokestatic java.net.DualStackPlainSocketImpl.connect0:(ILjava/net/InetAddress;I)I
            istore 5 /* connectResult */
        start local 5 // int connectResult
         8: .line 84
            iload 5 /* connectResult */
            bipush -2
            if_icmpne 14
         9: .line 85
            iload 4 /* nativefd */
            iload 3 /* timeout */
            invokestatic java.net.DualStackPlainSocketImpl.waitForConnect:(II)V
        10: .line 87
            goto 14
        end local 5 // int connectResult
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 6
        12: .line 88
            iload 4 /* nativefd */
            iconst_1
            invokestatic java.net.DualStackPlainSocketImpl.configureBlocking:(IZ)V
        13: .line 89
            aload 6
            athrow
        start local 5 // int connectResult
        14: .line 88
      StackMap locals: int
      StackMap stack:
            iload 4 /* nativefd */
            iconst_1
            invokestatic java.net.DualStackPlainSocketImpl.configureBlocking:(IZ)V
        15: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.localport:I
            ifne 17
        16: .line 97
            aload 0 /* this */
            iload 4 /* nativefd */
            invokestatic java.net.DualStackPlainSocketImpl.localPort0:(I)I
            putfield java.net.DualStackPlainSocketImpl.localport:I
        17: .line 98
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int connectResult
        end local 4 // int nativefd
        end local 3 // int timeout
        end local 2 // int port
        end local 1 // java.net.InetAddress address
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Ljava/net/DualStackPlainSocketImpl;
            0   18     1        address  Ljava/net/InetAddress;
            0   18     2           port  I
            0   18     3        timeout  I
            1   18     4       nativefd  I
            5    6     5  connectResult  I
            8   11     5  connectResult  I
           14   18     5  connectResult  I
      Exception table:
        from    to  target  type
           7    11      11  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      address  
      port     
      timeout  

  void socketBind(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // java.net.InetAddress address
        start local 2 // int port
         0: .line 101
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 3 /* nativefd */
        start local 3 // int nativefd
         1: .line 103
            aload 1 /* address */
            ifnonnull 3
         2: .line 104
            new java.lang.NullPointerException
            dup
            ldc "inet address argument is null."
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 106
      StackMap locals: int
      StackMap stack:
            iload 3 /* nativefd */
            aload 1 /* address */
            iload 2 /* port */
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.exclusiveBind:Z
            invokestatic java.net.DualStackPlainSocketImpl.bind0:(ILjava/net/InetAddress;IZ)V
         4: .line 107
            iload 2 /* port */
            ifne 7
         5: .line 108
            aload 0 /* this */
            iload 3 /* nativefd */
            invokestatic java.net.DualStackPlainSocketImpl.localPort0:(I)I
            putfield java.net.DualStackPlainSocketImpl.localport:I
         6: .line 109
            goto 8
         7: .line 110
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* port */
            putfield java.net.DualStackPlainSocketImpl.localport:I
         8: .line 113
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* address */
            putfield java.net.DualStackPlainSocketImpl.address:Ljava/net/InetAddress;
         9: .line 114
            return
        end local 3 // int nativefd
        end local 2 // int port
        end local 1 // java.net.InetAddress address
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   10     0      this  Ljava/net/DualStackPlainSocketImpl;
            0   10     1   address  Ljava/net/InetAddress;
            0   10     2      port  I
            1   10     3  nativefd  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      address  
      port     

  void socketListen(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // int backlog
         0: .line 117
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 2 /* nativefd */
        start local 2 // int nativefd
         1: .line 119
            iload 2 /* nativefd */
            iload 1 /* backlog */
            invokestatic java.net.DualStackPlainSocketImpl.listen0:(II)V
         2: .line 120
            return
        end local 2 // int nativefd
        end local 1 // int backlog
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljava/net/DualStackPlainSocketImpl;
            0    3     1   backlog  I
            1    3     2  nativefd  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      backlog  

  void socketAccept(java.net.SocketImpl);
    descriptor: (Ljava/net/SocketImpl;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // java.net.SocketImpl s
         0: .line 123
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 2 /* nativefd */
        start local 2 // int nativefd
         1: .line 125
            aload 1 /* s */
            ifnonnull 3
         2: .line 126
            new java.lang.NullPointerException
            dup
            ldc "socket is null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 128
      StackMap locals: int
      StackMap stack:
            iconst_m1
            istore 3 /* newfd */
        start local 3 // int newfd
         4: .line 129
            iconst_1
            anewarray java.net.InetSocketAddress
            astore 4 /* isaa */
        start local 4 // java.net.InetSocketAddress[] isaa
         5: .line 130
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.timeout:I
            ifgt 8
         6: .line 131
            iload 2 /* nativefd */
            aload 4 /* isaa */
            invokestatic java.net.DualStackPlainSocketImpl.accept0:(I[Ljava/net/InetSocketAddress;)I
            istore 3 /* newfd */
         7: .line 132
            goto 18
         8: .line 133
      StackMap locals: int java.net.InetSocketAddress[]
      StackMap stack:
            iload 2 /* nativefd */
            iconst_0
            invokestatic java.net.DualStackPlainSocketImpl.configureBlocking:(IZ)V
         9: .line 135
            iload 2 /* nativefd */
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.timeout:I
            invokestatic java.net.DualStackPlainSocketImpl.waitForNewConnection:(II)V
        10: .line 136
            iload 2 /* nativefd */
            aload 4 /* isaa */
            invokestatic java.net.DualStackPlainSocketImpl.accept0:(I[Ljava/net/InetSocketAddress;)I
            istore 3 /* newfd */
        11: .line 137
            iload 3 /* newfd */
            iconst_m1
            if_icmpeq 17
        12: .line 138
            iload 3 /* newfd */
            iconst_1
            invokestatic java.net.DualStackPlainSocketImpl.configureBlocking:(IZ)V
        13: .line 140
            goto 17
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 5
        15: .line 141
            iload 2 /* nativefd */
            iconst_1
            invokestatic java.net.DualStackPlainSocketImpl.configureBlocking:(IZ)V
        16: .line 142
            aload 5
            athrow
        17: .line 141
      StackMap locals:
      StackMap stack:
            iload 2 /* nativefd */
            iconst_1
            invokestatic java.net.DualStackPlainSocketImpl.configureBlocking:(IZ)V
        18: .line 145
      StackMap locals:
      StackMap stack:
            getstatic java.net.DualStackPlainSocketImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 1 /* s */
            getfield java.net.SocketImpl.fd:Ljava/io/FileDescriptor;
            iload 3 /* newfd */
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.set:(Ljava/io/FileDescriptor;I)V
        19: .line 147
            aload 4 /* isaa */
            iconst_0
            aaload
            astore 5 /* isa */
        start local 5 // java.net.InetSocketAddress isa
        20: .line 148
            aload 1 /* s */
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getPort:()I
            putfield java.net.SocketImpl.port:I
        21: .line 149
            aload 1 /* s */
            aload 5 /* isa */
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            putfield java.net.SocketImpl.address:Ljava/net/InetAddress;
        22: .line 150
            aload 1 /* s */
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.localport:I
            putfield java.net.SocketImpl.localport:I
        23: .line 151
            return
        end local 5 // java.net.InetSocketAddress isa
        end local 4 // java.net.InetSocketAddress[] isaa
        end local 3 // int newfd
        end local 2 // int nativefd
        end local 1 // java.net.SocketImpl s
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   24     0      this  Ljava/net/DualStackPlainSocketImpl;
            0   24     1         s  Ljava/net/SocketImpl;
            1   24     2  nativefd  I
            4   24     3     newfd  I
            5   24     4      isaa  [Ljava/net/InetSocketAddress;
           20   24     5       isa  Ljava/net/InetSocketAddress;
      Exception table:
        from    to  target  type
           9    14      14  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     

  int socketAvailable();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.net.DualStackPlainSocketImpl this
         0: .line 154
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 1 /* nativefd */
        start local 1 // int nativefd
         1: .line 155
            iload 1 /* nativefd */
            invokestatic java.net.DualStackPlainSocketImpl.available0:(I)I
            ireturn
        end local 1 // int nativefd
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Ljava/net/DualStackPlainSocketImpl;
            1    2     1  nativefd  I
    Exceptions:
      throws java.io.IOException

  void socketClose0(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // boolean useDeferredClose
         0: .line 159
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            ifnonnull 2
         1: .line 160
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 162
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual java.io.FileDescriptor.valid:()Z
            ifne 4
         3: .line 163
            return
         4: .line 165
      StackMap locals:
      StackMap stack:
            getstatic java.net.DualStackPlainSocketImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.get:(Ljava/io/FileDescriptor;)I
            istore 2 /* nativefd */
        start local 2 // int nativefd
         5: .line 166
            getstatic java.net.DualStackPlainSocketImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            iconst_m1
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.set:(Ljava/io/FileDescriptor;I)V
         6: .line 167
            iload 2 /* nativefd */
            invokestatic java.net.DualStackPlainSocketImpl.close0:(I)V
         7: .line 168
            return
        end local 2 // int nativefd
        end local 1 // boolean useDeferredClose
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    8     0              this  Ljava/net/DualStackPlainSocketImpl;
            0    8     1  useDeferredClose  Z
            5    8     2          nativefd  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                  Name  Flags
      useDeferredClose  

  void socketShutdown(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // int howto
         0: .line 171
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 2 /* nativefd */
        start local 2 // int nativefd
         1: .line 172
            iload 2 /* nativefd */
            iload 1 /* howto */
            invokestatic java.net.DualStackPlainSocketImpl.shutdown0:(II)V
         2: .line 173
            return
        end local 2 // int nativefd
        end local 1 // int howto
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljava/net/DualStackPlainSocketImpl;
            0    3     1     howto  I
            1    3     2  nativefd  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      howto  

  void socketSetOption(int, boolean, java.lang.Object);
    descriptor: (IZLjava/lang/Object;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // int opt
        start local 2 // boolean on
        start local 3 // java.lang.Object value
         0: .line 179
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 4 /* nativefd */
        start local 4 // int nativefd
         1: .line 181
            iload 1 /* opt */
            sipush 4102
            if_icmpne 3
         2: .line 182
            return
         3: .line 185
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 5 /* optionValue */
        start local 5 // int optionValue
         4: .line 187
            iload 1 /* opt */
            lookupswitch { // 8
                    1: 8
                    3: 12
                    4: 5
                    8: 8
                  128: 14
                 4097: 12
                 4098: 12
                 4099: 8
              default: 19
          }
         5: .line 189
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.exclusiveBind:Z
            ifeq 8
         6: .line 191
            aload 0 /* this */
            iload 2 /* on */
            putfield java.net.DualStackPlainSocketImpl.isReuseAddress:Z
         7: .line 192
            return
         8: .line 198
      StackMap locals:
      StackMap stack:
            iload 2 /* on */
            ifeq 9
            iconst_1
            goto 10
      StackMap locals:
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 5 /* optionValue */
        11: .line 199
            goto 20
        12: .line 203
      StackMap locals:
      StackMap stack:
            aload 3 /* value */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 5 /* optionValue */
        13: .line 204
            goto 20
        14: .line 206
      StackMap locals:
      StackMap stack:
            iload 2 /* on */
            ifeq 17
        15: .line 207
            aload 3 /* value */
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 5 /* optionValue */
        16: .line 208
            goto 20
        17: .line 209
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 5 /* optionValue */
        18: .line 211
            goto 20
        19: .line 213
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "Option not supported"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        20: .line 216
      StackMap locals:
      StackMap stack:
            iload 4 /* nativefd */
            iload 1 /* opt */
            iload 5 /* optionValue */
            invokestatic java.net.DualStackPlainSocketImpl.setIntOption:(III)V
        21: .line 217
            return
        end local 5 // int optionValue
        end local 4 // int nativefd
        end local 3 // java.lang.Object value
        end local 2 // boolean on
        end local 1 // int opt
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   22     0         this  Ljava/net/DualStackPlainSocketImpl;
            0   22     1          opt  I
            0   22     2           on  Z
            0   22     3        value  Ljava/lang/Object;
            1   22     4     nativefd  I
            4   22     5  optionValue  I
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
       Name  Flags
      opt    
      on     
      value  

  int socketGetOption(int, java.lang.Object);
    descriptor: (ILjava/lang/Object;)I
    flags: (0x0000) 
    Code:
      stack=2, locals=5, args_size=3
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // int opt
        start local 2 // java.lang.Object iaContainerObj
         0: .line 220
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 3 /* nativefd */
        start local 3 // int nativefd
         1: .line 223
            iload 1 /* opt */
            bipush 15
            if_icmpne 4
         2: .line 224
            iload 3 /* nativefd */
            aload 2 /* iaContainerObj */
            checkcast java.net.InetAddressContainer
            invokestatic java.net.DualStackPlainSocketImpl.localAddress:(ILjava/net/InetAddressContainer;)V
         3: .line 225
            iconst_0
            ireturn
         4: .line 229
      StackMap locals: int
      StackMap stack:
            iload 1 /* opt */
            iconst_4
            if_icmpne 8
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.exclusiveBind:Z
            ifeq 8
         5: .line 230
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.isReuseAddress:Z
            ifeq 6
            iconst_1
            goto 7
      StackMap locals:
      StackMap stack:
         6: iconst_m1
      StackMap locals:
      StackMap stack: int
         7: ireturn
         8: .line 232
      StackMap locals:
      StackMap stack:
            iload 3 /* nativefd */
            iload 1 /* opt */
            invokestatic java.net.DualStackPlainSocketImpl.getIntOption:(II)I
            istore 4 /* value */
        start local 4 // int value
         9: .line 234
            iload 1 /* opt */
            lookupswitch { // 4
                    1: 10
                    4: 10
                    8: 10
                 4099: 10
              default: 13
          }
        10: .line 239
      StackMap locals: int
      StackMap stack:
            iload 4 /* value */
            ifne 11
            iconst_m1
            goto 12
      StackMap locals:
      StackMap stack:
        11: iconst_1
      StackMap locals:
      StackMap stack: int
        12: ireturn
        13: .line 241
      StackMap locals:
      StackMap stack:
            iload 4 /* value */
            ireturn
        end local 4 // int value
        end local 3 // int nativefd
        end local 2 // java.lang.Object iaContainerObj
        end local 1 // int opt
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   14     0            this  Ljava/net/DualStackPlainSocketImpl;
            0   14     1             opt  I
            0   14     2  iaContainerObj  Ljava/lang/Object;
            1   14     3        nativefd  I
            9   14     4           value  I
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
                Name  Flags
      opt             
      iaContainerObj  

  void socketSendUrgentData(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.net.DualStackPlainSocketImpl this
        start local 1 // int data
         0: .line 245
            aload 0 /* this */
            invokevirtual java.net.DualStackPlainSocketImpl.checkAndReturnNativeFD:()I
            istore 2 /* nativefd */
        start local 2 // int nativefd
         1: .line 246
            iload 2 /* nativefd */
            iload 1 /* data */
            invokestatic java.net.DualStackPlainSocketImpl.sendOOB:(II)V
         2: .line 247
            return
        end local 2 // int nativefd
        end local 1 // int data
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Ljava/net/DualStackPlainSocketImpl;
            0    3     1      data  I
            1    3     2  nativefd  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      data  

  private int checkAndReturnNativeFD();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.net.DualStackPlainSocketImpl this
         0: .line 250
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            ifnull 1
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            invokevirtual java.io.FileDescriptor.valid:()Z
            ifne 2
         1: .line 251
      StackMap locals:
      StackMap stack:
            new java.net.SocketException
            dup
            ldc "Socket closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 253
      StackMap locals:
      StackMap stack:
            getstatic java.net.DualStackPlainSocketImpl.fdAccess:Lsun/misc/JavaIOFileDescriptorAccess;
            aload 0 /* this */
            getfield java.net.DualStackPlainSocketImpl.fd:Ljava/io/FileDescriptor;
            invokeinterface sun.misc.JavaIOFileDescriptorAccess.get:(Ljava/io/FileDescriptor;)I
            ireturn
        end local 0 // java.net.DualStackPlainSocketImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/net/DualStackPlainSocketImpl;
    Exceptions:
      throws java.net.SocketException

  static native void initIDs();
    descriptor: ()V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE

  static native int socket0(boolean, boolean);
    descriptor: (ZZ)I
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      stream  
      v6Only  

  static native void bind0(int, java.net.InetAddress, int, boolean);
    descriptor: (ILjava/net/InetAddress;IZ)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      fd            
      localAddress  
      localport     
      exclBind      

  static native int connect0(int, java.net.InetAddress, int);
    descriptor: (ILjava/net/InetAddress;I)I
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      fd          
      remote      
      remotePort  

  static native void waitForConnect(int, int);
    descriptor: (II)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      fd       
      timeout  

  static native int localPort0(int);
    descriptor: (I)I
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  static native void localAddress(int, java.net.InetAddressContainer);
    descriptor: (ILjava/net/InetAddressContainer;)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
      Name  Flags
      fd    
      in    

  static native void listen0(int, int);
    descriptor: (II)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      fd       
      backlog  

  static native int accept0(int, java.net.InetSocketAddress[]);
    descriptor: (I[Ljava/net/InetSocketAddress;)I
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      isaa  

  static native void waitForNewConnection(int, int);
    descriptor: (II)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      fd       
      timeout  

  static native int available0(int);
    descriptor: (I)I
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  static native void close0(int);
    descriptor: (I)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  static native void shutdown0(int, int);
    descriptor: (II)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      howto  

  static native void setIntOption(int, int, int);
    descriptor: (III)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
             Name  Flags
      fd           
      cmd          
      optionValue  

  static native int getIntOption(int, int);
    descriptor: (II)I
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
      Name  Flags
      fd    
      cmd   

  static native void sendOOB(int, int);
    descriptor: (II)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      data  

  static native void configureBlocking(int, boolean);
    descriptor: (IZ)V
    flags: (0x0108) ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      fd        
      blocking  
}
SourceFile: "DualStackPlainSocketImpl.java"