class sun.nio.ch.UnixDomainSockets
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.nio.ch.UnixDomainSockets
  super_class: java.lang.Object
{
  static final java.net.UnixDomainSocketAddress UNNAMED;
    descriptor: Ljava/net/UnixDomainSocketAddress;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private static final boolean supported;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String tempDir;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.net.NetPermission accessUnixDomainSocket;
    descriptor: Ljava/net/NetPermission;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Random random;
    descriptor: Ljava/util/Random;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 47
            ldc ""
            invokestatic java.net.UnixDomainSocketAddress.of:(Ljava/lang/String;)Ljava/net/UnixDomainSocketAddress;
            putstatic sun.nio.ch.UnixDomainSockets.UNNAMED:Ljava/net/UnixDomainSocketAddress;
         1: .line 51
            invokestatic sun.nio.ch.UnixDomainSocketsUtil.getTempDir:()Ljava/lang/String;
            putstatic sun.nio.ch.UnixDomainSockets.tempDir:Ljava/lang/String;
         2: .line 54
            new java.net.NetPermission
            dup
            ldc "accessUnixDomainSocket"
            invokespecial java.net.NetPermission.<init>:(Ljava/lang/String;)V
         3: .line 53
            putstatic sun.nio.ch.UnixDomainSockets.accessUnixDomainSocket:Ljava/net/NetPermission;
         4: .line 122
            invokestatic sun.nio.ch.UnixDomainSockets.getRandom:()Ljava/util/Random;
            putstatic sun.nio.ch.UnixDomainSockets.random:Ljava/util/Random;
         5: .line 176
            invokestatic sun.nio.ch.IOUtil.load:()V
         6: .line 177
            invokestatic sun.nio.ch.UnixDomainSockets.socketSupported:()Z
            putstatic sun.nio.ch.UnixDomainSockets.supported:Z
         7: .line 178
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.nio.ch.UnixDomainSockets this
         0: .line 45
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // sun.nio.ch.UnixDomainSockets this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/nio/ch/UnixDomainSockets;

  static boolean isSupported();
    descriptor: ()Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 57
            getstatic sun.nio.ch.UnixDomainSockets.supported:Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void checkPermission();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 61
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            astore 0 /* sm */
        start local 0 // java.lang.SecurityManager sm
         1: .line 62
            aload 0 /* sm */
            ifnull 3
         2: .line 63
            aload 0 /* sm */
            getstatic sun.nio.ch.UnixDomainSockets.accessUnixDomainSocket:Ljava/net/NetPermission;
            invokevirtual java.lang.SecurityManager.checkPermission:(Ljava/security/Permission;)V
         3: .line 64
      StackMap locals: java.lang.SecurityManager
      StackMap stack:
            return
        end local 0 // java.lang.SecurityManager sm
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    4     0    sm  Ljava/lang/SecurityManager;

  static java.net.UnixDomainSocketAddress getRevealedLocalAddress(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Ljava/net/UnixDomainSocketAddress;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.net.SocketAddress sa
         0: .line 67
            aload 0 /* sa */
            checkcast java.net.UnixDomainSocketAddress
            astore 1 /* addr */
        start local 1 // java.net.UnixDomainSocketAddress addr
         1: .line 69
            invokestatic sun.nio.ch.UnixDomainSockets.checkPermission:()V
         2: .line 71
            goto 5
      StackMap locals: java.net.SocketAddress java.net.UnixDomainSocketAddress
      StackMap stack: java.lang.SecurityException
         3: pop
         4: .line 73
            getstatic sun.nio.ch.UnixDomainSockets.UNNAMED:Ljava/net/UnixDomainSocketAddress;
            astore 1 /* addr */
         5: .line 75
      StackMap locals:
      StackMap stack:
            aload 1 /* addr */
            areturn
        end local 1 // java.net.UnixDomainSocketAddress addr
        end local 0 // java.net.SocketAddress sa
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0    sa  Ljava/net/SocketAddress;
            1    6     1  addr  Ljava/net/UnixDomainSocketAddress;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.SecurityException
    MethodParameters:
      Name  Flags
      sa    

  static java.net.UnixDomainSocketAddress localAddress(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)Ljava/net/UnixDomainSocketAddress;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // java.io.FileDescriptor fd
         0: .line 79
            new java.lang.String
            dup
            aload 0 /* fd */
            invokestatic sun.nio.ch.UnixDomainSockets.localAddress0:(Ljava/io/FileDescriptor;)[B
            invokestatic sun.nio.ch.UnixDomainSocketsUtil.getCharset:()Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
            astore 1 /* path */
        start local 1 // java.lang.String path
         1: .line 80
            aload 1 /* path */
            invokestatic java.net.UnixDomainSocketAddress.of:(Ljava/lang/String;)Ljava/net/UnixDomainSocketAddress;
            areturn
        end local 1 // java.lang.String path
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0    fd  Ljava/io/FileDescriptor;
            1    2     1  path  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  private static native byte[] localAddress0(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)[B
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  static java.lang.String getRevealedLocalAddressAsString(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Ljava/lang/String;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.net.SocketAddress sa
         0: .line 86
            invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
            ifnull 1
            aload 0 /* sa */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            goto 2
      StackMap locals:
      StackMap stack:
         1: ldc ""
      StackMap locals:
      StackMap stack: java.lang.String
         2: areturn
        end local 0 // java.net.SocketAddress sa
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0    sa  Ljava/net/SocketAddress;
    MethodParameters:
      Name  Flags
      sa    

  static java.net.UnixDomainSocketAddress checkAddress(java.net.SocketAddress);
    descriptor: (Ljava/net/SocketAddress;)Ljava/net/UnixDomainSocketAddress;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.SocketAddress sa
         0: .line 90
            aload 0 /* sa */
            ifnonnull 2
         1: .line 91
            new java.lang.NullPointerException
            dup
            invokespecial java.lang.NullPointerException.<init>:()V
            athrow
         2: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* sa */
            instanceof java.net.UnixDomainSocketAddress
            ifne 4
         3: .line 93
            new java.nio.channels.UnsupportedAddressTypeException
            dup
            invokespecial java.nio.channels.UnsupportedAddressTypeException.<init>:()V
            athrow
         4: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* sa */
            checkcast java.net.UnixDomainSocketAddress
            areturn
        end local 0 // java.net.SocketAddress sa
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0    sa  Ljava/net/SocketAddress;
    MethodParameters:
      Name  Flags
      sa    

  static byte[] getPathBytes(java.nio.file.Path);
    descriptor: (Ljava/nio/file/Path;)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.nio.file.Path path
         0: .line 98
            invokestatic java.nio.file.FileSystems.getDefault:()Ljava/nio/file/FileSystem;
            invokevirtual java.nio.file.FileSystem.provider:()Ljava/nio/file/spi/FileSystemProvider;
            astore 1 /* provider */
        start local 1 // java.nio.file.spi.FileSystemProvider provider
         1: .line 99
            aload 1 /* provider */
            checkcast sun.nio.fs.AbstractFileSystemProvider
            aload 0 /* path */
            invokevirtual sun.nio.fs.AbstractFileSystemProvider.getSunPathForSocketFile:(Ljava/nio/file/Path;)[B
            areturn
        end local 1 // java.nio.file.spi.FileSystemProvider provider
        end local 0 // java.nio.file.Path path
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      path  Ljava/nio/file/Path;
            1    2     1  provider  Ljava/nio/file/spi/FileSystemProvider;
    MethodParameters:
      Name  Flags
      path  

  static java.io.FileDescriptor socket();
    descriptor: ()Ljava/io/FileDescriptor;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 103
            invokestatic sun.nio.ch.UnixDomainSockets.socket0:()I
            invokestatic sun.nio.ch.IOUtil.newFD:(I)Ljava/io/FileDescriptor;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException

  static void bind(java.io.FileDescriptor, java.nio.file.Path);
    descriptor: (Ljava/io/FileDescriptor;Ljava/nio/file/Path;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.io.FileDescriptor fd
        start local 1 // java.nio.file.Path addr
         0: .line 107
            aload 1 /* addr */
            invokestatic sun.nio.ch.UnixDomainSockets.getPathBytes:(Ljava/nio/file/Path;)[B
            astore 2 /* path */
        start local 2 // byte[] path
         1: .line 108
            aload 2 /* path */
            arraylength
            ifne 3
         2: .line 109
            new java.net.BindException
            dup
            ldc "Server socket cannot bind to unnamed address"
            invokespecial java.net.BindException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 111
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* fd */
            aload 2 /* path */
            invokestatic sun.nio.ch.UnixDomainSockets.bind0:(Ljava/io/FileDescriptor;[B)V
         4: .line 112
            return
        end local 2 // byte[] path
        end local 1 // java.nio.file.Path addr
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0    fd  Ljava/io/FileDescriptor;
            0    5     1  addr  Ljava/nio/file/Path;
            1    5     2  path  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      addr  

  private static java.util.Random getRandom();
    descriptor: ()Ljava/util/Random;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 116
            ldc "NativePRNGNonBlocking"
            invokestatic java.security.SecureRandom.getInstance:(Ljava/lang/String;)Ljava/security/SecureRandom;
         1: areturn
         2: .line 117
      StackMap locals:
      StackMap stack: java.security.NoSuchAlgorithmException
            pop
         3: .line 118
            new java.security.SecureRandom
            dup
            invokespecial java.security.SecureRandom.<init>:()V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
      Exception table:
        from    to  target  type
           0     1       2  Class java.security.NoSuchAlgorithmException

  static java.net.UnixDomainSocketAddress generateTempName();
    descriptor: ()Ljava/net/UnixDomainSocketAddress;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=3, args_size=0
         0: .line 129
            getstatic sun.nio.ch.UnixDomainSockets.tempDir:Ljava/lang/String;
            astore 0 /* dir */
        start local 0 // java.lang.String dir
         1: .line 130
            aload 0 /* dir */
            ifnonnull 3
         2: .line 131
            new java.net.BindException
            dup
            ldc "Could not locate temporary directory for sockets"
            invokespecial java.net.BindException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 132
      StackMap locals: java.lang.String
      StackMap stack:
            getstatic sun.nio.ch.UnixDomainSockets.random:Ljava/util/Random;
            ldc 2147483647
            invokevirtual java.util.Random.nextInt:(I)I
            istore 1 /* rnd */
        start local 1 // int rnd
         4: .line 134
            aload 0 /* dir */
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            new java.lang.StringBuilder
            dup
            ldc "socket_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* rnd */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
            invokestatic java.nio.file.Path.of:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
            astore 2 /* path */
        start local 2 // java.nio.file.Path path
         5: .line 135
            aload 2 /* path */
            invokestatic java.net.UnixDomainSocketAddress.of:(Ljava/nio/file/Path;)Ljava/net/UnixDomainSocketAddress;
         6: areturn
        end local 2 // java.nio.file.Path path
         7: .line 136
      StackMap locals: java.lang.String int
      StackMap stack: java.nio.file.InvalidPathException
            pop
         8: .line 137
            new java.net.BindException
            dup
            ldc "Invalid temporary directory"
            invokespecial java.net.BindException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // int rnd
        end local 0 // java.lang.String dir
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    9     0   dir  Ljava/lang/String;
            4    9     1   rnd  I
            5    7     2  path  Ljava/nio/file/Path;
      Exception table:
        from    to  target  type
           4     6       7  Class java.nio.file.InvalidPathException
    Exceptions:
      throws java.io.IOException

  static int connect(java.io.FileDescriptor, java.net.SocketAddress);
    descriptor: (Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.io.FileDescriptor fd
        start local 1 // java.net.SocketAddress sa
         0: .line 142
            aload 0 /* fd */
            aload 1 /* sa */
            checkcast java.net.UnixDomainSocketAddress
            invokevirtual java.net.UnixDomainSocketAddress.getPath:()Ljava/nio/file/Path;
            invokestatic sun.nio.ch.UnixDomainSockets.connect:(Ljava/io/FileDescriptor;Ljava/nio/file/Path;)I
            ireturn
        end local 1 // java.net.SocketAddress sa
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    fd  Ljava/io/FileDescriptor;
            0    1     1    sa  Ljava/net/SocketAddress;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      sa    

  static int connect(java.io.FileDescriptor, java.nio.file.Path);
    descriptor: (Ljava/io/FileDescriptor;Ljava/nio/file/Path;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.io.FileDescriptor fd
        start local 1 // java.nio.file.Path path
         0: .line 146
            aload 0 /* fd */
            aload 1 /* path */
            invokestatic sun.nio.ch.UnixDomainSockets.getPathBytes:(Ljava/nio/file/Path;)[B
            invokestatic sun.nio.ch.UnixDomainSockets.connect0:(Ljava/io/FileDescriptor;[B)I
            ireturn
        end local 1 // java.nio.file.Path path
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    fd  Ljava/io/FileDescriptor;
            0    1     1  path  Ljava/nio/file/Path;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      path  

  static int accept(java.io.FileDescriptor, java.io.FileDescriptor, java.lang.String[]);
    descriptor: (Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=6, args_size=3
        start local 0 // java.io.FileDescriptor fd
        start local 1 // java.io.FileDescriptor newfd
        start local 2 // java.lang.String[] paths
         0: .line 152
            iconst_1
            anewarray java.lang.Object
            astore 3 /* array */
        start local 3 // java.lang.Object[] array
         1: .line 153
            aload 0 /* fd */
            aload 1 /* newfd */
            aload 3 /* array */
            invokestatic sun.nio.ch.UnixDomainSockets.accept0:(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/Object;)I
            istore 4 /* n */
        start local 4 // int n
         2: .line 154
            iload 4 /* n */
            ifle 5
         3: .line 155
            aload 3 /* array */
            iconst_0
            aaload
            checkcast byte[]
            astore 5 /* bytes */
        start local 5 // byte[] bytes
         4: .line 156
            aload 2 /* paths */
            iconst_0
            new java.lang.String
            dup
            aload 5 /* bytes */
            invokestatic sun.nio.ch.UnixDomainSocketsUtil.getCharset:()Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
            aastore
        end local 5 // byte[] bytes
         5: .line 158
      StackMap locals: java.lang.Object[] int
      StackMap stack:
            iload 4 /* n */
            ireturn
        end local 4 // int n
        end local 3 // java.lang.Object[] array
        end local 2 // java.lang.String[] paths
        end local 1 // java.io.FileDescriptor newfd
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0     fd  Ljava/io/FileDescriptor;
            0    6     1  newfd  Ljava/io/FileDescriptor;
            0    6     2  paths  [Ljava/lang/String;
            1    6     3  array  [Ljava/lang/Object;
            2    6     4      n  I
            4    5     5  bytes  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      newfd  
      paths  

  private static native boolean socketSupported();
    descriptor: ()Z
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE

  private static native int socket0();
    descriptor: ()I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException

  private static native void bind0(java.io.FileDescriptor, byte[]);
    descriptor: (Ljava/io/FileDescriptor;[B)V
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      path  

  private static native int connect0(java.io.FileDescriptor, byte[]);
    descriptor: (Ljava/io/FileDescriptor;[B)I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      path  

  private static native int accept0(java.io.FileDescriptor, java.io.FileDescriptor, java.lang.Object[]);
    descriptor: (Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/Object;)I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
       Name  Flags
      fd     
      newfd  
      array  
}
SourceFile: "UnixDomainSockets.java"