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

  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 111
            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 112
            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 136
            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 137
            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 165
            aload 0 /* this */
            aconst_null
            invokespecial java.net.DatagramSocket.<init>:(Ljava/net/SocketAddress;)V
         1: .line 184
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield java.net.MulticastSocket.ttlLock:Ljava/lang/Object;
         2: .line 190
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
         3: .line 195
            aload 0 /* this */
            aconst_null
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
         4: .line 168
            aload 0 /* this */
            iconst_1
            invokevirtual java.net.MulticastSocket.setReuseAddress:(Z)V
         5: .line 170
            aload 1 /* bindaddr */
            ifnull 14
         6: .line 172
            aload 0 /* this */
            aload 1 /* bindaddr */
            invokevirtual java.net.MulticastSocket.bind:(Ljava/net/SocketAddress;)V
         7: .line 173
            goto 12
      StackMap locals: java.net.MulticastSocket java.net.SocketAddress
      StackMap stack: java.lang.Throwable
         8: astore 2
         9: .line 174
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isBound:()Z
            ifne 11
        10: .line 175
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.close:()V
        11: .line 176
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 2
            athrow
        12: .line 174
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isBound:()Z
            ifne 14
        13: .line 175
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.close:()V
        14: .line 178
      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 215
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 216
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 217
      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 218
            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 240
            iload 1 /* ttl */
            iflt 1
            iload 1 /* ttl */
            sipush 255
            if_icmple 2
         1: .line 241
      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 243
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 4
         3: .line 244
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 245
      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 246
            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 261
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 262
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 263
      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 275
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 276
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 277
      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 299
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 300
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 303
      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 304
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* security */
        start local 2 // java.lang.SecurityManager security
         4: .line 305
            aload 2 /* security */
            ifnull 6
         5: .line 306
            aload 2 /* security */
            aload 1 /* mcastaddr */
            invokevirtual java.lang.SecurityManager.checkMulticast:(Ljava/net/InetAddress;)V
         6: .line 309
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 1 /* mcastaddr */
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifne 8
         7: .line 310
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 317
      StackMap locals:
      StackMap stack:
            invokestatic java.net.NetworkInterface.getDefault:()Ljava/net/NetworkInterface;
            astore 3 /* defaultInterface */
        start local 3 // java.net.NetworkInterface defaultInterface
         9: .line 319
            aload 0 /* this */
            getfield java.net.MulticastSocket.interfaceSet:Z
            ifne 11
            aload 3 /* defaultInterface */
            ifnull 11
        10: .line 320
            aload 0 /* this */
            aload 3 /* defaultInterface */
            invokevirtual java.net.MulticastSocket.setNetworkInterface:(Ljava/net/NetworkInterface;)V
        11: .line 323
      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 324
            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 344
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 345
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 348
      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 349
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 2 /* security */
        start local 2 // java.lang.SecurityManager security
         4: .line 350
            aload 2 /* security */
            ifnull 6
         5: .line 351
            aload 2 /* security */
            aload 1 /* mcastaddr */
            invokevirtual java.lang.SecurityManager.checkMulticast:(Ljava/net/InetAddress;)V
         6: .line 354
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            aload 1 /* mcastaddr */
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifne 8
         7: .line 355
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 358
      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 359
            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 387
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 388
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 390
      StackMap locals:
      StackMap stack:
            aload 1 /* mcastaddr */
            ifnull 3
            aload 1 /* mcastaddr */
            instanceof java.net.InetSocketAddress
            ifne 4
         3: .line 391
      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 393
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.MulticastSocket.oldImpl:Z
            ifeq 6
         5: .line 394
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
         6: .line 396
      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 397
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* security */
        start local 3 // java.lang.SecurityManager security
         8: .line 398
            aload 3 /* security */
            ifnull 10
         9: .line 399
            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 402
      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 403
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 406
      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 407
            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 434
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 435
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 437
      StackMap locals:
      StackMap stack:
            aload 1 /* mcastaddr */
            ifnull 3
            aload 1 /* mcastaddr */
            instanceof java.net.InetSocketAddress
            ifne 4
         3: .line 438
      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 440
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.MulticastSocket.oldImpl:Z
            ifeq 6
         5: .line 441
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
         6: .line 443
      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 444
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 3 /* security */
        start local 3 // java.lang.SecurityManager security
         8: .line 445
            aload 3 /* security */
            ifnull 10
         9: .line 446
            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 449
      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 450
            new java.net.SocketException
            dup
            ldc "Not a multicast address"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 453
      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 454
            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 466
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 467
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 469
      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 470
            aload 0 /* this */
            getfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         4: .line 471
            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 472
            aload 0 /* this */
            aload 1 /* inf */
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
         6: .line 473
            aload 0 /* this */
            iconst_1
            putfield java.net.MulticastSocket.interfaceSet:Z
         7: .line 470
            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 475
      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 491
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 492
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 494
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 496
            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 495
            astore 2 /* ia */
        start local 2 // java.net.InetAddress ia
         5: .line 502
            aload 0 /* this */
            getfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
            ifnonnull 8
         6: .line 503
            aload 2 /* ia */
            aload 1
            monitorexit
         7: areturn
         8: .line 509
      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 510
            aload 2 /* ia */
            aload 1
            monitorexit
        10: areturn
        11: .line 519
      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 520
            aload 3 /* ni */
            invokevirtual java.net.NetworkInterface.getInetAddresses:()Ljava/util/Enumeration;
            astore 4 /* addrs */
        start local 4 // java.util.Enumeration addrs
        13: .line 521
            goto 19
        14: .line 522
      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 523
            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 524
            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 521
      StackMap locals:
      StackMap stack:
            aload 4 /* addrs */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 14
        20: .line 532
            aload 0 /* this */
            aconst_null
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
        21: .line 533
            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 534
      StackMap locals: java.net.MulticastSocket java.lang.Object java.net.InetAddress
      StackMap stack: java.lang.Exception
            pop
        25: .line 535
            aload 2 /* ia */
            aload 1
            monitorexit
        26: areturn
        end local 2 // java.net.InetAddress ia
        27: .line 494
      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 553
            aload 0 /* this */
            getfield java.net.MulticastSocket.infLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 554
            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 555
            aload 0 /* this */
            aconst_null
            putfield java.net.MulticastSocket.infAddress:Ljava/net/InetAddress;
         3: .line 556
            aload 0 /* this */
            iconst_1
            putfield java.net.MulticastSocket.interfaceSet:Z
         4: .line 553
            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 558
      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 571
            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 570
            astore 1 /* ni */
        start local 1 // java.net.NetworkInterface ni
         2: .line 572
            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 573
      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 574
            aload 2 /* addrs */
            iconst_0
            invokestatic java.net.InetAddress.anyLocalAddress:()Ljava/net/InetAddress;
            aastore
         5: .line 575
            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 577
      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 596
            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 597
            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 608
            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 661
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.isClosed:()Z
            ifeq 2
         1: .line 662
            new java.net.SocketException
            dup
            ldc "Socket is closed"
            invokespecial java.net.SocketException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 663
      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 664
            aload 0 /* this */
            getfield java.net.MulticastSocket.ttlLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         4: .line 665
            aload 1 /* p */
            dup
            astore 4
            monitorenter
         5: .line 666
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectState:I
            ifne 15
         6: .line 670
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 5 /* security */
        start local 5 // java.lang.SecurityManager security
         7: .line 671
            aload 5 /* security */
            ifnull 24
         8: .line 672
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getAddress:()Ljava/net/InetAddress;
            invokevirtual java.net.InetAddress.isMulticastAddress:()Z
            ifeq 11
         9: .line 673
            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 674
            goto 24
        11: .line 675
      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 676
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getPort:()I
        13: .line 675
            invokevirtual java.lang.SecurityManager.checkConnect:(Ljava/lang/String;I)V
        end local 5 // java.lang.SecurityManager security
        14: .line 679
            goto 24
        15: .line 681
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5 /* packetAddress */
        start local 5 // java.net.InetAddress packetAddress
        16: .line 682
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getAddress:()Ljava/net/InetAddress;
            astore 5 /* packetAddress */
        17: .line 683
            aload 5 /* packetAddress */
            ifnonnull 21
        18: .line 684
            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 685
            aload 1 /* p */
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectedPort:I
            invokevirtual java.net.DatagramPacket.setPort:(I)V
        20: .line 686
            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 687
            aload 1 /* p */
            invokevirtual java.net.DatagramPacket.getPort:()I
            aload 0 /* this */
            getfield java.net.MulticastSocket.connectedPort:I
            if_icmpeq 24
        23: .line 688
      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 692
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getTTL:()B
            istore 5 /* dttl */
        start local 5 // byte dttl
        25: .line 694
            iload 2 /* ttl */
            iload 5 /* dttl */
            if_icmpeq 27
        26: .line 696
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            iload 2 /* ttl */
            invokevirtual java.net.DatagramSocketImpl.setTTL:(B)V
        27: .line 699
      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 700
            goto 33
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: astore 6
        30: .line 702
            iload 2 /* ttl */
            iload 5 /* dttl */
            if_icmpeq 32
        31: .line 703
            aload 0 /* this */
            invokevirtual java.net.MulticastSocket.getImpl:()Ljava/net/DatagramSocketImpl;
            iload 5 /* dttl */
            invokevirtual java.net.DatagramSocketImpl.setTTL:(B)V
        32: .line 705
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 6
            athrow
        33: .line 702
      StackMap locals:
      StackMap stack:
            iload 2 /* ttl */
            iload 5 /* dttl */
            if_icmpeq 35
        34: .line 703
            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 665
      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 664
      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 708
      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   
}
SourceFile: "MulticastSocket.java"