final class javafx.scene.web.DirectoryLock
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: javafx.scene.web.DirectoryLock
  super_class: java.lang.Object
{
  private static final com.sun.javafx.logging.PlatformLogger logger;
    descriptor: Lcom/sun/javafx/logging/PlatformLogger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Map<java.io.File, javafx.scene.web.DirectoryLock$Descriptor> descriptors;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/io/File;Ljavafx/scene/web/DirectoryLock$Descriptor;>;

  private javafx.scene.web.DirectoryLock$Descriptor descriptor;
    descriptor: Ljavafx/scene/web/DirectoryLock$Descriptor;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 41
            ldc Ljavafx/scene/web/DirectoryLock;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokestatic com.sun.javafx.logging.PlatformLogger.getLogger:(Ljava/lang/String;)Lcom/sun/javafx/logging/PlatformLogger;
         1: .line 40
            putstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
         2: .line 42
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=7, args_size=2
        start local 0 // javafx.scene.web.DirectoryLock this
        start local 1 // java.io.File directory
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 51
            aload 1 /* directory */
            invokestatic javafx.scene.web.DirectoryLock.canonicalize:(Ljava/io/File;)Ljava/io/File;
            astore 1 /* directory */
         2: .line 52
            aload 0 /* this */
            getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
            aload 1 /* directory */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javafx.scene.web.DirectoryLock$Descriptor
            putfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
         3: .line 53
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            ifnonnull 38
         4: .line 54
            aload 1 /* directory */
            invokestatic javafx.scene.web.DirectoryLock.lockFile:(Ljava/io/File;)Ljava/io/File;
            astore 2 /* lockFile */
        start local 2 // java.io.File lockFile
         5: .line 55
            new java.io.RandomAccessFile
            dup
            aload 2 /* lockFile */
            ldc "rw"
            invokespecial java.io.RandomAccessFile.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* lockRaf */
        start local 3 // java.io.RandomAccessFile lockRaf
         6: .line 57
            aload 3 /* lockRaf */
            invokevirtual java.io.RandomAccessFile.getChannel:()Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.tryLock:()Ljava/nio/channels/FileLock;
            astore 4 /* lock */
        start local 4 // java.nio.channels.FileLock lock
         7: .line 58
            aload 4 /* lock */
            ifnonnull 11
         8: .line 59
            new javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
            dup
            aload 0 /* this */
         9: .line 60
            aload 1 /* directory */
            invokevirtual java.io.File.toString:()Ljava/lang/String;
            aconst_null
        10: .line 59
            invokespecial javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException.<init>:(Ljavafx/scene/web/DirectoryLock;Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        11: .line 62
      StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile java.nio.channels.FileLock
      StackMap stack:
            aload 0 /* this */
            new javafx.scene.web.DirectoryLock$Descriptor
            dup
            aload 1 /* directory */
            aload 3 /* lockRaf */
            aload 4 /* lock */
            invokespecial javafx.scene.web.DirectoryLock$Descriptor.<init>:(Ljava/io/File;Ljava/io/RandomAccessFile;Ljava/nio/channels/FileLock;)V
            putfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
        12: .line 63
            getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
            aload 1 /* directory */
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // java.nio.channels.FileLock lock
        13: .line 64
            goto 29
      StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile
      StackMap stack: java.nio.channels.OverlappingFileLockException
        14: astore 4 /* ex */
        start local 4 // java.nio.channels.OverlappingFileLockException ex
        15: .line 65
            new javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
            dup
            aload 0 /* this */
        16: .line 66
            aload 1 /* directory */
            invokevirtual java.io.File.toString:()Ljava/lang/String;
            aload 4 /* ex */
        17: .line 65
            invokespecial javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException.<init>:(Ljavafx/scene/web/DirectoryLock;Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 4 // java.nio.channels.OverlappingFileLockException ex
        18: .line 67
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 5
        19: .line 68
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            ifnonnull 28
        20: .line 70
            aload 3 /* lockRaf */
            invokevirtual java.io.RandomAccessFile.close:()V
        21: .line 71
            goto 28
      StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile top java.lang.Throwable
      StackMap stack: java.io.IOException
        22: astore 6 /* ex */
        start local 6 // java.io.IOException ex
        23: .line 72
            getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
            ldc "Error closing [%s]"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        24: .line 73
            aload 2 /* lockFile */
            aastore
        25: .line 72
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        26: .line 73
            aload 6 /* ex */
        27: .line 72
            invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 6 // java.io.IOException ex
        28: .line 76
      StackMap locals:
      StackMap stack:
            aload 5
            athrow
        29: .line 68
      StackMap locals: javafx.scene.web.DirectoryLock java.io.File java.io.File java.io.RandomAccessFile
      StackMap stack:
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            ifnonnull 38
        30: .line 70
            aload 3 /* lockRaf */
            invokevirtual java.io.RandomAccessFile.close:()V
        31: .line 71
            goto 38
      StackMap locals:
      StackMap stack: java.io.IOException
        32: astore 6 /* ex */
        start local 6 // java.io.IOException ex
        33: .line 72
            getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
            ldc "Error closing [%s]"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        34: .line 73
            aload 2 /* lockFile */
            aastore
        35: .line 72
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        36: .line 73
            aload 6 /* ex */
        37: .line 72
            invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 6 // java.io.IOException ex
        end local 3 // java.io.RandomAccessFile lockRaf
        end local 2 // java.io.File lockFile
        38: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            dup
            getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
            iconst_1
            iadd
            putfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
        39: .line 79
            return
        end local 1 // java.io.File directory
        end local 0 // javafx.scene.web.DirectoryLock this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   40     0       this  Ljavafx/scene/web/DirectoryLock;
            0   40     1  directory  Ljava/io/File;
            5   38     2   lockFile  Ljava/io/File;
            6   38     3    lockRaf  Ljava/io/RandomAccessFile;
            7   13     4       lock  Ljava/nio/channels/FileLock;
           15   18     4         ex  Ljava/nio/channels/OverlappingFileLockException;
           23   28     6         ex  Ljava/io/IOException;
           33   38     6         ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           6    13      14  Class java.nio.channels.OverlappingFileLockException
           6    18      18  any
          20    21      22  Class java.io.IOException
          30    31      32  Class java.io.IOException
    Exceptions:
      throws java.io.IOException, javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
    MethodParameters:
           Name  Flags
      directory  

  void close();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // javafx.scene.web.DirectoryLock this
         0: .line 83
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            ifnonnull 2
         1: .line 84
            return
         2: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            dup
            getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
            iconst_1
            isub
            putfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
         3: .line 87
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
            ifne 21
         4: .line 89
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            getfield javafx.scene.web.DirectoryLock$Descriptor.lock:Ljava/nio/channels/FileLock;
            invokevirtual java.nio.channels.FileLock.release:()V
         5: .line 90
            goto 12
      StackMap locals:
      StackMap stack: java.io.IOException
         6: astore 1 /* ex */
        start local 1 // java.io.IOException ex
         7: .line 91
            getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
            ldc "Error releasing lock on [%s]"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 92
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            getfield javafx.scene.web.DirectoryLock$Descriptor.directory:Ljava/io/File;
            invokestatic javafx.scene.web.DirectoryLock.lockFile:(Ljava/io/File;)Ljava/io/File;
            aastore
         9: .line 91
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        10: .line 92
            aload 1 /* ex */
        11: .line 91
            invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.io.IOException ex
        12: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            getfield javafx.scene.web.DirectoryLock$Descriptor.lockRaf:Ljava/io/RandomAccessFile;
            invokevirtual java.io.RandomAccessFile.close:()V
        13: .line 96
            goto 20
      StackMap locals:
      StackMap stack: java.io.IOException
        14: astore 1 /* ex */
        start local 1 // java.io.IOException ex
        15: .line 97
            getstatic javafx.scene.web.DirectoryLock.logger:Lcom/sun/javafx/logging/PlatformLogger;
            ldc "Error closing [%s]"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        16: .line 98
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            getfield javafx.scene.web.DirectoryLock$Descriptor.directory:Ljava/io/File;
            invokestatic javafx.scene.web.DirectoryLock.lockFile:(Ljava/io/File;)Ljava/io/File;
            aastore
        17: .line 97
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
        18: .line 98
            aload 1 /* ex */
        19: .line 97
            invokevirtual com.sun.javafx.logging.PlatformLogger.warning:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.io.IOException ex
        20: .line 100
      StackMap locals:
      StackMap stack:
            getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
            aload 0 /* this */
            getfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
            getfield javafx.scene.web.DirectoryLock$Descriptor.directory:Ljava/io/File;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        21: .line 102
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield javafx.scene.web.DirectoryLock.descriptor:Ljavafx/scene/web/DirectoryLock$Descriptor;
        22: .line 103
            return
        end local 0 // javafx.scene.web.DirectoryLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   23     0  this  Ljavafx/scene/web/DirectoryLock;
            7   12     1    ex  Ljava/io/IOException;
           15   20     1    ex  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4     5       6  Class java.io.IOException
          12    13      14  Class java.io.IOException

  static int referenceCount(java.io.File);
    descriptor: (Ljava/io/File;)I
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.io.File directory
         0: .line 107
            getstatic javafx.scene.web.DirectoryLock.descriptors:Ljava/util/Map;
            aload 0 /* directory */
            invokestatic javafx.scene.web.DirectoryLock.canonicalize:(Ljava/io/File;)Ljava/io/File;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast javafx.scene.web.DirectoryLock$Descriptor
            astore 1 /* d */
        start local 1 // javafx.scene.web.DirectoryLock$Descriptor d
         1: .line 108
            aload 1 /* d */
            ifnonnull 2
            iconst_0
            goto 3
      StackMap locals: javafx.scene.web.DirectoryLock$Descriptor
      StackMap stack:
         2: aload 1 /* d */
            getfield javafx.scene.web.DirectoryLock$Descriptor.referenceCount:I
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 1 // javafx.scene.web.DirectoryLock$Descriptor d
        end local 0 // java.io.File directory
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0  directory  Ljava/io/File;
            1    4     1          d  Ljavafx/scene/web/DirectoryLock$Descriptor;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      directory  

  static java.io.File canonicalize(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/io/File;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.io.File directory
         0: .line 112
            aload 0 /* directory */
            invokevirtual java.io.File.getCanonicalPath:()Ljava/lang/String;
            astore 1 /* path */
        start local 1 // java.lang.String path
         1: .line 113
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            ifle 4
         2: .line 114
            aload 1 /* path */
            aload 1 /* path */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.charAt:(I)C
            getstatic java.io.File.separatorChar:C
            if_icmpeq 4
         3: .line 116
            new java.lang.StringBuilder
            dup
            aload 1 /* path */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic java.io.File.separatorChar:C
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* path */
         4: .line 118
      StackMap locals: java.lang.String
      StackMap stack:
            new java.io.File
            dup
            aload 1 /* path */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            areturn
        end local 1 // java.lang.String path
        end local 0 // java.io.File directory
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0  directory  Ljava/io/File;
            1    5     1       path  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      directory  

  private static java.io.File lockFile(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/io/File;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // java.io.File directory
         0: .line 122
            new java.io.File
            dup
            aload 0 /* directory */
            ldc ".lock"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            areturn
        end local 0 // java.io.File directory
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0  directory  Ljava/io/File;
    MethodParameters:
           Name  Flags
      directory  
}
SourceFile: "DirectoryLock.java"
NestMembers:
  javafx.scene.web.DirectoryLock$Descriptor  javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException
InnerClasses:
  private Descriptor = javafx.scene.web.DirectoryLock$Descriptor of javafx.scene.web.DirectoryLock
  final DirectoryAlreadyInUseException = javafx.scene.web.DirectoryLock$DirectoryAlreadyInUseException of javafx.scene.web.DirectoryLock