public class java.net.MulticastSocket extends java.net.DatagramSocket
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.net.MulticastSocket
  super_class: java.net.DatagramSocket
{
  private boolean interfaceSet;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Object ttlLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Object infLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE

  private java.net.InetAddress infAddress;
    descriptor: Ljava/net/InetAddress;
    flags: (0x0002) ACC_PRIVATE

  private static java.util.Set<java.net.SocketOption<?>> options;
    descriptor: Ljava/util/Set;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Signature: Ljava/util/Set<Ljava/net/SocketOption<*>;>;

  private static boolean optionsSet;
    descriptor: Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 717
            iconst_0
            putstatic java.net.MulticastSocket.optionsSet:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.net.MulticastSocket this
         0: .line 114
            aload 0 /* this */
            new java.net.InetSocketAddress
            dup
            iconst_0
            invokespecial java.net.InetSocketAddress.<init>:(I)V
            invokespecial java.net.MulticastSocket.<init>:(Ljava/net/SocketAddress;)V
         1: .line 115
            return
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/net/MulticastSocket;
    Exceptions:
      throws java.io.IOException

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // int port
         0: .line 139
            aload 0 /* this */
            new java.net.InetSocketAddress
            dup
            iload 1 /* port */
            invokespecial java.net.InetSocketAddress.<init>:(I)V
            invokespecial java.net.MulticastSocket.<init>:(Ljava/net/SocketAddress;)V
         1: .line 140
            return
        end local 1 // int port
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/net/MulticastSocket;
            0    2     1  port  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      port  

  public void <init>(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.SocketAddress bindaddr
         0: .line 168
            aload 0 /* this */
            aconst_null
            invokespecial java.net.DatagramSocket.<init>:(Ljava/net/SocketAddress;)V
         1: .line 188
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield java.net.MulticastSocket.ttlLock:Ljava/lang/Object;
         2: .line 194
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
         3: .line 199
            aload 0 /* this */
            aconst_null
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
         4: .line 171
            aload 0 /* this */
            iconst_1
            invokevirtual java.net.MulticastSocket.setReuseAddress:(Z)V
         5: .line 173
            aload 1 /* bindaddr */
            ifnull 14
         6: .line 175
            aload 0 /* this */
            aload 1 /* bindaddr */
            invokevirtual java.net.MulticastSocket.bind:(Ljava/net/SocketAddress;)V
         7: .line 176
            goto 12
      StackMap locals: java.net.MulticastSocket java.net.SocketAddress
      StackMap stack: java.lang.Throwable
         8: astore 2
         9: .line 177
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isBound:()Z
            ifne 11
        10: .line 178
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.close:()V
        11: .line 180
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2
            athrow
        12: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isBound:()Z
            ifne 14
        13: .line 178
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.close:()V
        14: .line 182
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.net.SocketAddress bindaddr
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Ljava/net/MulticastSocket;
            0   15     1  bindaddr  Ljava/net/SocketAddress;
      Exception table:
        from    to  target  type
           6     8       8  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      bindaddr  

  public void setTTL(byte);
    descriptor: (B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // byte ttl
         0: .line 219
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 220
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            iload 1 /* ttl */
            invokevirtual java.net.DatagramSocketImpl.setTTL:(B)V
         3: .line 222
            return
        end local 1 // byte ttl
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/net/MulticastSocket;
            0    4     1   ttl  B
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      ttl   

  public void setTimeToLive(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // int ttl
         0: .line 244
            iload 1 /* ttl */
            iflt 1
            iload 1 /* ttl */
            sipush 255
            if_icmple 2
         1: .line 245
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "ttl out of range"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 247
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 4
         3: .line 248
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 249
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            iload 1 /* ttl */
            invokevirtual java.net.DatagramSocketImpl.setTimeToLive:(I)V
         5: .line 250
            return
        end local 1 // int ttl
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Ljava/net/MulticastSocket;
            0    6     1   ttl  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      ttl   

  public byte getTTL();
    descriptor: ()B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.net.MulticastSocket this
         0: .line 265
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 266
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 267
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            invokevirtual java.net.DatagramSocketImpl.getTTL:()B
            ireturn
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/net/MulticastSocket;
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public int getTimeToLive();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.net.MulticastSocket this
         0: .line 279
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 280
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 281
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            invokevirtual java.net.DatagramSocketImpl.getTimeToLive:()I
            ireturn
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Ljava/net/MulticastSocket;
    Exceptions:
      throws java.io.IOException

  public void joinGroup(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.InetAddress mcastaddr
         0: .line 304
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 305
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* mcastaddr */
            ldc "joinGroup"
            invokevirtual java.net.MulticastSocket.checkAddress:(Ljava/net/InetAddress;Ljava/lang/String;)V
         3: .line 309
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* security */
        start local 2 // java.lang.SecurityManager security
         4: .line 310
            aload 2 /* security */
            ifnull 6
         5: .line 311
            aload 2 /* security */
            aload 1 /* mcastaddr */
            invokevirtual java.lang.SecurityManager.checkMulticast:(Ljava/net/InetAddress;)V
         6: .line 314
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 1 /* mcastaddr */
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifne 8
         7: .line 315
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 322
      StackMap locals:
      StackMap stack:
            invokestatic java.net.NetworkInterface.getDefault:()Ljava/net/NetworkInterface;
            astore 3 /* defaultInterface */
        start local 3 // java.net.NetworkInterface defaultInterface
         9: .line 324
            aload 0 /* this */
            getfield java.net.MulticastSocket.interfaceSet:Z
            ifne 11
            aload 3 /* defaultInterface */
            ifnull 11
        10: .line 325
            aload 0 /* this */
            aload 3 /* defaultInterface */
            invokevirtual java.net.MulticastSocket.setNetworkInterface:(Ljava/net/NetworkInterface;)V
        11: .line 328
      StackMap locals: java.net.NetworkInterface
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            aload 1 /* mcastaddr */
            invokevirtual java.net.DatagramSocketImpl.join:(Ljava/net/InetAddress;)V
        12: .line 329
            return
        end local 3 // java.net.NetworkInterface defaultInterface
        end local 2 // java.lang.SecurityManager security
        end local 1 // java.net.InetAddress mcastaddr
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   13     0              this  Ljava/net/MulticastSocket;
            0   13     1         mcastaddr  Ljava/net/InetAddress;
            4   13     2          security  Ljava/lang/SecurityManager;
            9   13     3  defaultInterface  Ljava/net/NetworkInterface;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      mcastaddr  

  public void leaveGroup(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.InetAddress mcastaddr
         0: .line 349
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 350
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* mcastaddr */
            ldc "leaveGroup"
            invokevirtual java.net.MulticastSocket.checkAddress:(Ljava/net/InetAddress;Ljava/lang/String;)V
         3: .line 354
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* security */
        start local 2 // java.lang.SecurityManager security
         4: .line 355
            aload 2 /* security */
            ifnull 6
         5: .line 356
            aload 2 /* security */
            aload 1 /* mcastaddr */
            invokevirtual java.lang.SecurityManager.checkMulticast:(Ljava/net/InetAddress;)V
         6: .line 359
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 1 /* mcastaddr */
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifne 8
         7: .line 360
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 363
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            aload 1 /* mcastaddr */
            invokevirtual java.net.DatagramSocketImpl.leave:(Ljava/net/InetAddress;)V
         9: .line 364
            return
        end local 2 // java.lang.SecurityManager security
        end local 1 // java.net.InetAddress mcastaddr
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Ljava/net/MulticastSocket;
            0   10     1  mcastaddr  Ljava/net/InetAddress;
            4   10     2   security  Ljava/lang/SecurityManager;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      mcastaddr  

  public void joinGroup(java.net.SocketAddress, java.net.NetworkInterface);
    descriptor: (Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.SocketAddress mcastaddr
        start local 2 // java.net.NetworkInterface netIf
         0: .line 393
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 394
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 396
      StackMap locals:
      StackMap stack:
            aload 1 /* mcastaddr */
            ifnull 3
            aload 1 /* mcastaddr */
            instanceof java.net.InetSocketAddress
            ifne 4
         3: .line 397
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Unsupported address type"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 399
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.MulticastSocket.oldImpl:Z
            ifeq 6
         5: .line 400
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
         6: .line 402
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* mcastaddr */
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            ldc "joinGroup"
            invokevirtual java.net.MulticastSocket.checkAddress:(Ljava/net/InetAddress;Ljava/lang/String;)V
         7: .line 403
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* security */
        start local 3 // java.lang.SecurityManager security
         8: .line 404
            aload 3 /* security */
            ifnull 10
         9: .line 405
            aload 3 /* security */
            aload 1 /* mcastaddr */
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.lang.SecurityManager.checkMulticast:(Ljava/net/InetAddress;)V
        10: .line 408
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 1 /* mcastaddr */
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifne 12
        11: .line 409
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 412
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            aload 1 /* mcastaddr */
            aload 2 /* netIf */
            invokevirtual java.net.DatagramSocketImpl.joinGroup:(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
        13: .line 413
            return
        end local 3 // java.lang.SecurityManager security
        end local 2 // java.net.NetworkInterface netIf
        end local 1 // java.net.SocketAddress mcastaddr
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Ljava/net/MulticastSocket;
            0   14     1  mcastaddr  Ljava/net/SocketAddress;
            0   14     2      netIf  Ljava/net/NetworkInterface;
            8   14     3   security  Ljava/lang/SecurityManager;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      mcastaddr  
      netIf      

  public void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface);
    descriptor: (Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.SocketAddress mcastaddr
        start local 2 // java.net.NetworkInterface netIf
         0: .line 440
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 441
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 443
      StackMap locals:
      StackMap stack:
            aload 1 /* mcastaddr */
            ifnull 3
            aload 1 /* mcastaddr */
            instanceof java.net.InetSocketAddress
            ifne 4
         3: .line 444
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Unsupported address type"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 446
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.MulticastSocket.oldImpl:Z
            ifeq 6
         5: .line 447
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
         6: .line 449
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* mcastaddr */
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            ldc "leaveGroup"
            invokevirtual java.net.MulticastSocket.checkAddress:(Ljava/net/InetAddress;Ljava/lang/String;)V
         7: .line 450
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* security */
        start local 3 // java.lang.SecurityManager security
         8: .line 451
            aload 3 /* security */
            ifnull 10
         9: .line 452
            aload 3 /* security */
            aload 1 /* mcastaddr */
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.lang.SecurityManager.checkMulticast:(Ljava/net/InetAddress;)V
        10: .line 455
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 1 /* mcastaddr */
            checkcast java.net.InetSocketAddress
            invokevirtual java.net.InetSocketAddress.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifne 12
        11: .line 456
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 459
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            aload 1 /* mcastaddr */
            aload 2 /* netIf */
            invokevirtual java.net.DatagramSocketImpl.leaveGroup:(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
        13: .line 460
            return
        end local 3 // java.lang.SecurityManager security
        end local 2 // java.net.NetworkInterface netIf
        end local 1 // java.net.SocketAddress mcastaddr
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   14     0       this  Ljava/net/MulticastSocket;
            0   14     1  mcastaddr  Ljava/net/SocketAddress;
            0   14     2      netIf  Ljava/net/NetworkInterface;
            8   14     3   security  Ljava/lang/SecurityManager;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      mcastaddr  
      netIf      

  public void setInterface(java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.InetAddress inf
         0: .line 472
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 473
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 475
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* inf */
            ldc "setInterface"
            invokevirtual java.net.MulticastSocket.checkAddress:(Ljava/net/InetAddress;Ljava/lang/String;)V
         3: .line 476
            aload 0 /* this */
            getfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 477
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            bipush 16
            aload 1 /* inf */
            invokevirtual java.net.DatagramSocketImpl.setOption:(ILjava/lang/Object;)V
         5: .line 478
            aload 0 /* this */
            aload 1 /* inf */
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
         6: .line 479
            aload 0 /* this */
            iconst_1
            putfield java.net.MulticastSocket.interfaceSet:Z
         7: .line 476
            aload 2
            monitorexit
         8: goto 11
      StackMap locals: java.net.MulticastSocket java.net.InetAddress java.lang.Object
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 481
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.net.InetAddress inf
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Ljava/net/MulticastSocket;
            0   12     1   inf  Ljava/net/InetAddress;
      Exception table:
        from    to  target  type
           4     8       9  any
           9    10       9  any
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
      Name  Flags
      inf   

  public java.net.InetAddress getInterface();
    descriptor: ()Ljava/net/InetAddress;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.net.MulticastSocket this
         0: .line 497
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 498
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 502
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            bipush 16
            invokevirtual java.net.DatagramSocketImpl.getOption:(I)Ljava/lang/Object;
            checkcast java.net.InetAddress
         4: .line 501
            astore 2 /* ia */
        start local 2 // java.net.InetAddress ia
         5: .line 508
            aload 0 /* this */
            getfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
            ifnonnull 8
         6: .line 509
            aload 2 /* ia */
            aload 1
            monitorexit
         7: areturn
         8: .line 515
      StackMap locals: java.lang.Object java.net.InetAddress
      StackMap stack:
            aload 2 /* ia */
            aload 0 /* this */
            getfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 516
            aload 2 /* ia */
            aload 1
            monitorexit
        10: areturn
        11: .line 525
      StackMap locals:
      StackMap stack:
            aload 2 /* ia */
            invokestatic java.net.NetworkInterface.getByInetAddress:(Ljava/net/InetAddress;)Ljava/net/NetworkInterface;
            astore 3 /* ni */
        start local 3 // java.net.NetworkInterface ni
        12: .line 526
            aload 3 /* ni */
            invokevirtual java.net.NetworkInterface.getInetAddresses:()Ljava/util/Enumeration;
            astore 4 /* addrs */
        start local 4 // java.util.Enumeration addrs
        13: .line 527
            goto 19
        14: .line 528
      StackMap locals: java.net.NetworkInterface java.util.Enumeration
      StackMap stack:
            aload 4 /* addrs */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 5 /* addr */
        start local 5 // java.net.InetAddress addr
        15: .line 529
            aload 5 /* addr */
            aload 0 /* this */
            getfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifeq 19
        16: .line 530
            aload 0 /* this */
            getfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
        17: aload 1
            monitorexit
        18: areturn
        end local 5 // java.net.InetAddress addr
        19: .line 527
      StackMap locals:
      StackMap stack:
            aload 4 /* addrs */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 14
        20: .line 538
            aload 0 /* this */
            aconst_null
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
        21: .line 539
            aload 2 /* ia */
        22: aload 1
            monitorexit
        23: areturn
        end local 4 // java.util.Enumeration addrs
        end local 3 // java.net.NetworkInterface ni
        24: .line 540
      StackMap locals: java.net.MulticastSocket java.lang.Object java.net.InetAddress
      StackMap stack: java.lang.Exception
            pop
        25: .line 541
            aload 2 /* ia */
            aload 1
            monitorexit
        26: areturn
        end local 2 // java.net.InetAddress ia
        27: .line 500
      StackMap locals: java.net.MulticastSocket java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        28: athrow
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   29     0   this  Ljava/net/MulticastSocket;
            5   27     2     ia  Ljava/net/InetAddress;
           12   24     3     ni  Ljava/net/NetworkInterface;
           13   24     4  addrs  Ljava/util/Enumeration<Ljava/net/InetAddress;>;
           15   19     5   addr  Ljava/net/InetAddress;
      Exception table:
        from    to  target  type
          11    17      24  Class java.lang.Exception
          19    22      24  Class java.lang.Exception
           3     7      27  any
           8    10      27  any
          11    18      27  any
          19    23      27  any
          24    26      27  any
          27    28      27  any
    Exceptions:
      throws java.net.SocketException

  public void setNetworkInterface(java.net.NetworkInterface);
    descriptor: (Ljava/net/NetworkInterface;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.NetworkInterface netIf
         0: .line 559
            aload 0 /* this */
            getfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 560
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            bipush 31
            aload 1 /* netIf */
            invokevirtual java.net.DatagramSocketImpl.setOption:(ILjava/lang/Object;)V
         2: .line 561
            aload 0 /* this */
            aconst_null
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
         3: .line 562
            aload 0 /* this */
            iconst_1
            putfield java.net.MulticastSocket.interfaceSet:Z
         4: .line 559
            aload 2
            monitorexit
         5: goto 8
      StackMap locals: java.net.MulticastSocket java.net.NetworkInterface java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 564
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.net.NetworkInterface netIf
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Ljava/net/MulticastSocket;
            0    9     1  netIf  Ljava/net/NetworkInterface;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
       Name  Flags
      netIf  

  public java.net.NetworkInterface getNetworkInterface();
    descriptor: ()Ljava/net/NetworkInterface;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // java.net.MulticastSocket this
         0: .line 577
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            bipush 31
            invokevirtual java.net.DatagramSocketImpl.getOption:(I)Ljava/lang/Object;
            checkcast java.net.NetworkInterface
         1: .line 576
            astore 1 /* ni */
        start local 1 // java.net.NetworkInterface ni
         2: .line 578
            aload 1 /* ni */
            invokevirtual java.net.NetworkInterface.getIndex:()I
            ifeq 3
            aload 1 /* ni */
            invokevirtual java.net.NetworkInterface.getIndex:()I
            iconst_m1
            if_icmpne 6
         3: .line 579
      StackMap locals: java.net.NetworkInterface
      StackMap stack:
            iconst_1
            anewarray java.net.InetAddress
            astore 2 /* addrs */
        start local 2 // java.net.InetAddress[] addrs
         4: .line 580
            aload 2 /* addrs */
            iconst_0
            invokestatic java.net.InetAddress.anyLocalAddress:()Ljava/net/InetAddress;
            aastore
         5: .line 581
            new java.net.NetworkInterface
            dup
            aload 2 /* addrs */
            iconst_0
            aaload
            invokevirtual java.net.InetAddress.getHostName:()Ljava/lang/String;
            iconst_0
            aload 2 /* addrs */
            invokespecial java.net.NetworkInterface.<init>:(Ljava/lang/String;I[Ljava/net/InetAddress;)V
            areturn
        end local 2 // java.net.InetAddress[] addrs
         6: .line 583
      StackMap locals:
      StackMap stack:
            aload 1 /* ni */
            areturn
        end local 1 // java.net.NetworkInterface ni
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Ljava/net/MulticastSocket;
            2    7     1     ni  Ljava/net/NetworkInterface;
            4    6     2  addrs  [Ljava/net/InetAddress;
    Exceptions:
      throws java.net.SocketException

  public void setLoopbackMode(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.net.MulticastSocket this
        start local 1 // boolean disable
         0: .line 602
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            bipush 18
            iload 1 /* disable */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokevirtual java.net.DatagramSocketImpl.setOption:(ILjava/lang/Object;)V
         1: .line 603
            return
        end local 1 // boolean disable
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Ljava/net/MulticastSocket;
            0    2     1  disable  Z
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
         Name  Flags
      disable  

  public boolean getLoopbackMode();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.MulticastSocket this
         0: .line 614
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            bipush 18
            invokevirtual java.net.DatagramSocketImpl.getOption:(I)Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ireturn
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/net/MulticastSocket;
    Exceptions:
      throws java.net.SocketException

  public void send(java.net.DatagramPacket, byte);
    descriptor: (Ljava/net/DatagramPacket;B)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // java.net.MulticastSocket this
        start local 1 // java.net.DatagramPacket p
        start local 2 // byte ttl
         0: .line 667
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 668
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 669
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getAddress:()Ljava/net/InetAddress;
            ldc "send"
            invokevirtual java.net.MulticastSocket.checkAddress:(Ljava/net/InetAddress;Ljava/lang/String;)V
         3: .line 670
            aload 0 /* this */
            getfield java.net.MulticastSocket.ttlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         4: .line 671
            aload 1 /* p */
            dup
            astore 4
            monitorenter
         5: .line 672
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectState:I
            ifne 15
         6: .line 676
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 5 /* security */
        start local 5 // java.lang.SecurityManager security
         7: .line 677
            aload 5 /* security */
            ifnull 24
         8: .line 678
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifeq 11
         9: .line 679
            aload 5 /* security */
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getAddress:()Ljava/net/InetAddress;
            iload 2 /* ttl */
            invokevirtual java.lang.SecurityManager.checkMulticast:(Ljava/net/InetAddress;B)V
        10: .line 680
            goto 24
        11: .line 681
      StackMap locals: java.lang.Object java.net.DatagramPacket java.lang.SecurityManager
      StackMap stack:
            aload 5 /* security */
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
        12: .line 682
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getPort:()I
        13: .line 681
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
        end local 5 // java.lang.SecurityManager security
        14: .line 685
            goto 24
        15: .line 687
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* packetAddress */
        start local 5 // java.net.InetAddress packetAddress
        16: .line 688
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getAddress:()Ljava/net/InetAddress;
            astore 5 /* packetAddress */
        17: .line 689
            aload 5 /* packetAddress */
            ifnonnull 21
        18: .line 690
            aload 1 /* p */
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectedAddress:Ljava/net/InetAddress;
            invokevirtual java.net.DatagramPacket.setAddress:(Ljava/net/InetAddress;)V
        19: .line 691
            aload 1 /* p */
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectedPort:I
            invokevirtual java.net.DatagramPacket.setPort:(I)V
        20: .line 692
            goto 24
      StackMap locals: java.net.InetAddress
      StackMap stack:
        21: aload 5 /* packetAddress */
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectedAddress:Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifeq 23
        22: .line 693
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getPort:()I
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectedPort:I
            if_icmpeq 24
        23: .line 694
      StackMap locals:
      StackMap stack:
            new java.lang.SecurityException
            dup
            ldc "connected address and packet address differ"
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 5 // java.net.InetAddress packetAddress
        24: .line 698
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getTTL:()B
            istore 5 /* dttl */
        start local 5 // byte dttl
        25: .line 700
            iload 2 /* ttl */
            iload 5 /* dttl */
            if_icmpeq 27
        26: .line 702
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            iload 2 /* ttl */
            invokevirtual java.net.DatagramSocketImpl.setTTL:(B)V
        27: .line 705
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            aload 1 /* p */
            invokevirtual java.net.DatagramSocketImpl.send:(Ljava/net/DatagramPacket;)V
        28: .line 706
            goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: astore 6
        30: .line 708
            iload 2 /* ttl */
            iload 5 /* dttl */
            if_icmpeq 32
        31: .line 709
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            iload 5 /* dttl */
            invokevirtual java.net.DatagramSocketImpl.setTTL:(B)V
        32: .line 711
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        33: .line 708
      StackMap locals:
      StackMap stack:
            iload 2 /* ttl */
            iload 5 /* dttl */
            if_icmpeq 35
        34: .line 709
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            iload 5 /* dttl */
            invokevirtual java.net.DatagramSocketImpl.setTTL:(B)V
        end local 5 // byte dttl
        35: .line 671
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        36: goto 39
      StackMap locals:
      StackMap stack: java.lang.Throwable
        37: aload 4
            monitorexit
        38: athrow
        39: .line 670
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        40: goto 43
      StackMap locals:
      StackMap stack: java.lang.Throwable
        41: aload 3
            monitorexit
        42: athrow
        43: .line 714
      StackMap locals:
      StackMap stack:
            return
        end local 2 // byte ttl
        end local 1 // java.net.DatagramPacket p
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   44     0           this  Ljava/net/MulticastSocket;
            0   44     1              p  Ljava/net/DatagramPacket;
            0   44     2            ttl  B
            7   14     5       security  Ljava/lang/SecurityManager;
           16   24     5  packetAddress  Ljava/net/InetAddress;
           25   35     5           dttl  B
      Exception table:
        from    to  target  type
          25    29      29  any
           5    36      37  any
          37    38      37  any
           4    40      41  any
          41    42      41  any
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
      Name  Flags
      p     
      ttl   

  public java.util.Set<java.net.SocketOption<?>> supportedOptions();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // java.net.MulticastSocket this
         0: .line 721
            ldc Ljava/net/MulticastSocket;
            dup
            astore 1
            monitorenter
         1: .line 722
            getstatic java.net.MulticastSocket.optionsSet:Z
            ifeq 4
         2: .line 723
            getstatic java.net.MulticastSocket.options:Ljava/util/Set;
            aload 1
            monitorexit
         3: areturn
         4: .line 726
      StackMap locals: java.lang.Class
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            astore 2 /* impl */
        start local 2 // java.net.DatagramSocketImpl impl
         5: .line 727
            aload 2 /* impl */
            invokevirtual java.net.DatagramSocketImpl.supportedOptions:()Ljava/util/Set;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            putstatic java.net.MulticastSocket.options:Ljava/util/Set;
        end local 2 // java.net.DatagramSocketImpl impl
         6: .line 728
            goto 9
      StackMap locals:
      StackMap stack: java.net.SocketException
         7: pop
         8: .line 729
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            putstatic java.net.MulticastSocket.options:Ljava/util/Set;
         9: .line 731
      StackMap locals:
      StackMap stack:
            iconst_1
            putstatic java.net.MulticastSocket.optionsSet:Z
        10: .line 732
            getstatic java.net.MulticastSocket.options:Ljava/util/Set;
            aload 1
            monitorexit
        11: areturn
        12: .line 721
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
        13: athrow
        end local 0 // java.net.MulticastSocket this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Ljava/net/MulticastSocket;
            5    6     2  impl  Ljava/net/DatagramSocketImpl;
      Exception table:
        from    to  target  type
           4     6       7  Class java.net.SocketException
           1     3      12  any
           4    11      12  any
          12    13      12  any
    Signature: ()Ljava/util/Set<Ljava/net/SocketOption<*>;>;
}
SourceFile: "MulticastSocket.java"