public class org.ehcache.impl.persistence.DefaultLocalPersistenceService implements org.ehcache.core.spi.service.LocalPersistenceService
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.ehcache.impl.persistence.DefaultLocalPersistenceService
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger LOGGER;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final java.io.File rootDirectory;
    descriptor: Ljava/io/File;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.File lockFile;
    descriptor: Ljava/io/File;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.nio.channels.FileLock lock;
    descriptor: Ljava/nio/channels/FileLock;
    flags: (0x0002) ACC_PRIVATE

  private java.io.RandomAccessFile rw;
    descriptor: Ljava/io/RandomAccessFile;
    flags: (0x0002) ACC_PRIVATE

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 47
            ldc Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.ehcache.impl.config.persistence.DefaultPersistenceConfiguration);
    descriptor: (Lorg/ehcache/impl/config/persistence/DefaultPersistenceConfiguration;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // org.ehcache.impl.config.persistence.DefaultPersistenceConfiguration persistenceConfiguration
         0: .line 61
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 62
            aload 1 /* persistenceConfiguration */
            ifnull 4
         2: .line 63
            aload 0 /* this */
            aload 1 /* persistenceConfiguration */
            invokevirtual org.ehcache.impl.config.persistence.DefaultPersistenceConfiguration.getRootDirectory:()Ljava/io/File;
            putfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
         3: .line 64
            goto 5
         4: .line 65
      StackMap locals: org.ehcache.impl.persistence.DefaultLocalPersistenceService org.ehcache.impl.config.persistence.DefaultPersistenceConfiguration
      StackMap stack:
            new java.lang.NullPointerException
            dup
            ldc "DefaultPersistenceConfiguration cannot be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            ldc ".lock"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            putfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lockFile:Ljava/io/File;
         6: .line 68
            return
        end local 1 // org.ehcache.impl.config.persistence.DefaultPersistenceConfiguration persistenceConfiguration
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    7     0                      this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    7     1  persistenceConfiguration  Lorg/ehcache/impl/config/persistence/DefaultPersistenceConfiguration;
    MethodParameters:
                          Name  Flags
      persistenceConfiguration  final

  public synchronized void start(org.ehcache.spi.service.ServiceProvider<org.ehcache.spi.service.Service>);
    descriptor: (Lorg/ehcache/spi/service/ServiceProvider;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // org.ehcache.spi.service.ServiceProvider serviceProvider
         0: .line 75
            aload 0 /* this */
            invokevirtual org.ehcache.impl.persistence.DefaultLocalPersistenceService.internalStart:()V
         1: .line 76
            return
        end local 1 // org.ehcache.spi.service.ServiceProvider serviceProvider
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    2     1  serviceProvider  Lorg/ehcache/spi/service/ServiceProvider<Lorg/ehcache/spi/service/Service;>;
    Signature: (Lorg/ehcache/spi/service/ServiceProvider<Lorg/ehcache/spi/service/Service;>;)V
    MethodParameters:
                 Name  Flags
      serviceProvider  final

  public synchronized void startForMaintenance(org.ehcache.spi.service.ServiceProvider<? super org.ehcache.spi.service.MaintainableService>, org.ehcache.spi.service.MaintainableService$MaintenanceScope);
    descriptor: (Lorg/ehcache/spi/service/ServiceProvider;Lorg/ehcache/spi/service/MaintainableService$MaintenanceScope;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // org.ehcache.spi.service.ServiceProvider serviceProvider
        start local 2 // org.ehcache.spi.service.MaintainableService$MaintenanceScope maintenanceScope
         0: .line 80
            aload 0 /* this */
            invokevirtual org.ehcache.impl.persistence.DefaultLocalPersistenceService.internalStart:()V
         1: .line 81
            return
        end local 2 // org.ehcache.spi.service.MaintainableService$MaintenanceScope maintenanceScope
        end local 1 // org.ehcache.spi.service.ServiceProvider serviceProvider
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    2     1   serviceProvider  Lorg/ehcache/spi/service/ServiceProvider<-Lorg/ehcache/spi/service/MaintainableService;>;
            0    2     2  maintenanceScope  Lorg/ehcache/spi/service/MaintainableService$MaintenanceScope;
    Signature: (Lorg/ehcache/spi/service/ServiceProvider<-Lorg/ehcache/spi/service/MaintainableService;>;Lorg/ehcache/spi/service/MaintainableService$MaintenanceScope;)V
    MethodParameters:
                  Name  Flags
      serviceProvider   
      maintenanceScope  

  private void internalStart();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
         0: .line 84
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.started:Z
            ifne 19
         1: .line 85
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            invokestatic org.ehcache.impl.persistence.FileUtils.createLocationIfRequiredAndVerify:(Ljava/io/File;)V
         2: .line 87
            aload 0 /* this */
            new java.io.RandomAccessFile
            dup
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lockFile:Ljava/io/File;
            ldc "rw"
            invokespecial java.io.RandomAccessFile.<init>:(Ljava/io/File;Ljava/lang/String;)V
            putfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rw:Ljava/io/RandomAccessFile;
         3: .line 88
            goto 6
      StackMap locals:
      StackMap stack: java.io.FileNotFoundException
         4: astore 1 /* e */
        start local 1 // java.io.FileNotFoundException e
         5: .line 90
            new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.FileNotFoundException e
         6: .line 93
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rw:Ljava/io/RandomAccessFile;
            invokevirtual java.io.RandomAccessFile.getChannel:()Ljava/nio/channels/FileChannel;
            invokevirtual java.nio.channels.FileChannel.tryLock:()Ljava/nio/channels/FileLock;
            putfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lock:Ljava/nio/channels/FileLock;
         7: .line 94
            goto 15
      StackMap locals:
      StackMap stack: java.nio.channels.OverlappingFileLockException
         8: astore 1 /* e */
        start local 1 // java.nio.channels.OverlappingFileLockException e
         9: .line 95
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Persistence directory already locked by this process: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.nio.channels.OverlappingFileLockException e
        10: .line 96
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        11: .line 98
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rw:Ljava/io/RandomAccessFile;
            invokevirtual java.io.RandomAccessFile.close:()V
        12: .line 99
            goto 14
      StackMap locals: org.ehcache.impl.persistence.DefaultLocalPersistenceService java.lang.Exception
      StackMap stack: java.io.IOException
        13: pop
        14: .line 102
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Persistence directory couldn't be locked: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        15: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lock:Ljava/nio/channels/FileLock;
            ifnonnull 17
        16: .line 105
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Persistence directory already locked by another process: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 107
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.started:Z
        18: .line 108
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "RootDirectory Locked"
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        19: .line 110
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   20     0  this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            5    6     1     e  Ljava/io/FileNotFoundException;
            9   10     1     e  Ljava/nio/channels/OverlappingFileLockException;
           11   15     1     e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           2     3       4  Class java.io.FileNotFoundException
           6     7       8  Class java.nio.channels.OverlappingFileLockException
           6     7      10  Class java.lang.Exception
          11    12      13  Class java.io.IOException

  public synchronized void stop();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
         0: .line 117
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.started:Z
            ifeq 12
         1: .line 119
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lock:Ljava/nio/channels/FileLock;
            invokevirtual java.nio.channels.FileLock.release:()V
         2: .line 123
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rw:Ljava/io/RandomAccessFile;
            invokevirtual java.io.RandomAccessFile.close:()V
         3: .line 125
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lockFile:Ljava/io/File;
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            invokestatic org.terracotta.utilities.io.Files.delete:(Ljava/nio/file/Path;)V
         4: .line 126
            goto 10
      StackMap locals:
      StackMap stack: java.io.IOException
         5: pop
         6: .line 127
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "Lock file was not deleted {}."
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lockFile:Ljava/io/File;
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
         7: .line 129
            goto 10
      StackMap locals:
      StackMap stack: java.io.IOException
         8: astore 1 /* e */
        start local 1 // java.io.IOException e
         9: .line 130
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Couldn't unlock rootDir: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.io.IOException e
        10: .line 132
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.started:Z
        11: .line 133
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "RootDirectory Unlocked"
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;)V
        12: .line 135
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            9   10     1     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.io.IOException
           1     7       8  Class java.io.IOException

  java.io.File getLockFile();
    descriptor: ()Ljava/io/File;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
         0: .line 138
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.lockFile:Ljava/io/File;
            areturn
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;

  public org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier createSafeSpaceIdentifier(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Lorg/ehcache/core/spi/service/LocalPersistenceService$SafeSpaceIdentifier;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // java.lang.String owner
        start local 2 // java.lang.String identifier
         0: .line 146
            aload 1 /* owner */
            invokestatic org.ehcache.impl.persistence.FileUtils.validateName:(Ljava/lang/String;)V
         1: .line 147
            aload 0 /* this */
            aload 1 /* owner */
            aload 2 /* identifier */
            invokevirtual org.ehcache.impl.persistence.DefaultLocalPersistenceService.createSafeSpaceLogical:(Ljava/lang/String;Ljava/lang/String;)Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
            astore 3 /* ss */
        start local 3 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
         2: .line 149
            aload 3 /* ss */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.directory:Ljava/io/File;
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 4 /* parent */
        start local 4 // java.io.File parent
         3: goto 7
         4: .line 150
      StackMap locals: org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace java.io.File
      StackMap stack:
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            aload 4 /* parent */
            invokevirtual java.io.File.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 151
            new org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier
            dup
            aload 3 /* ss */
            invokespecial org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier.<init>:(Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;)V
            areturn
         6: .line 149
      StackMap locals:
      StackMap stack:
            aload 4 /* parent */
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            astore 4 /* parent */
      StackMap locals:
      StackMap stack:
         7: aload 4 /* parent */
            ifnonnull 4
        end local 4 // java.io.File parent
         8: .line 155
            new java.lang.IllegalArgumentException
            dup
            ldc "Attempted to access file outside the persistence path"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
        end local 2 // java.lang.String identifier
        end local 1 // java.lang.String owner
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    9     1       owner  Ljava/lang/String;
            0    9     2  identifier  Ljava/lang/String;
            2    9     3          ss  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
            3    8     4      parent  Ljava/io/File;
    MethodParameters:
            Name  Flags
      owner       
      identifier  

  public void createSafeSpace(org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier);
    descriptor: (Lorg/ehcache/core/spi/service/LocalPersistenceService$SafeSpaceIdentifier;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier safeSpaceId
         0: .line 163
            aload 1 /* safeSpaceId */
            ifnull 1
            aload 1 /* safeSpaceId */
            instanceof org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier
            ifne 2
         1: .line 165
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            ldc "Invalid safe space identifier. Identifier not created"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 167
      StackMap locals:
      StackMap stack:
            aload 1 /* safeSpaceId */
            checkcast org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier.safeSpace:Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
            astore 2 /* ss */
        start local 2 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
         3: .line 168
            aload 2 /* ss */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.directory:Ljava/io/File;
            invokevirtual java.io.File.getParentFile:()Ljava/io/File;
            invokestatic org.ehcache.impl.persistence.FileUtils.create:(Ljava/io/File;)V
         4: .line 169
            aload 2 /* ss */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.directory:Ljava/io/File;
            invokestatic org.ehcache.impl.persistence.FileUtils.create:(Ljava/io/File;)V
         5: .line 170
            return
        end local 2 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
        end local 1 // org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier safeSpaceId
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    6     1  safeSpaceId  Lorg/ehcache/core/spi/service/LocalPersistenceService$SafeSpaceIdentifier;
            3    6     2           ss  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
    Exceptions:
      throws org.ehcache.CachePersistenceException
    MethodParameters:
             Name  Flags
      safeSpaceId  

  public void destroySafeSpace(org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier, boolean);
    descriptor: (Lorg/ehcache/core/spi/service/LocalPersistenceService$SafeSpaceIdentifier;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier safeSpaceId
        start local 2 // boolean verbose
         0: .line 177
            aload 1 /* safeSpaceId */
            ifnull 1
            aload 1 /* safeSpaceId */
            instanceof org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier
            ifne 2
         1: .line 179
      StackMap locals:
      StackMap stack:
            new java.lang.AssertionError
            dup
            ldc "Invalid safe space identifier. Identifier not created"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         2: .line 181
      StackMap locals:
      StackMap stack:
            aload 1 /* safeSpaceId */
            checkcast org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier.safeSpace:Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
            astore 3 /* ss */
        start local 3 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
         3: .line 182
            aload 0 /* this */
            aload 3 /* ss */
            iload 2 /* verbose */
            invokevirtual org.ehcache.impl.persistence.DefaultLocalPersistenceService.destroy:(Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;Z)V
         4: .line 183
            return
        end local 3 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
        end local 2 // boolean verbose
        end local 1 // org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier safeSpaceId
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    5     1  safeSpaceId  Lorg/ehcache/core/spi/service/LocalPersistenceService$SafeSpaceIdentifier;
            0    5     2      verbose  Z
            3    5     3           ss  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
    MethodParameters:
             Name  Flags
      safeSpaceId  
      verbose      

  public void destroyAll(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // java.lang.String owner
         0: .line 189
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            aload 1 /* owner */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 2 /* ownerDirectory */
        start local 2 // java.io.File ownerDirectory
         1: .line 190
            aload 2 /* ownerDirectory */
            invokevirtual java.io.File.exists:()Z
            ifeq 7
            aload 2 /* ownerDirectory */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 7
         2: .line 191
            aload 2 /* ownerDirectory */
            invokestatic org.ehcache.impl.persistence.FileUtils.tryRecursiveDelete:(Ljava/io/File;)Z
            ifeq 5
         3: .line 192
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "Destroyed all file based persistence contexts owned by {}"
            aload 1 /* owner */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 193
            goto 8
         5: .line 194
      StackMap locals: java.io.File
      StackMap stack:
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "Could not delete all file based persistence contexts owned by {}"
            aload 1 /* owner */
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 196
            goto 8
         7: .line 197
      StackMap locals:
      StackMap stack:
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "Could not delete all file based persistence contexts owned by {} - is not a directory!"
            aload 1 /* owner */
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
         8: .line 199
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.io.File ownerDirectory
        end local 1 // java.lang.String owner
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    9     0            this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    9     1           owner  Ljava/lang/String;
            1    9     2  ownerDirectory  Ljava/io/File;
    MethodParameters:
       Name  Flags
      owner  

  private void destroy(org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace, boolean);
    descriptor: (Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
        start local 2 // boolean verbose
         0: .line 202
            iload 2 /* verbose */
            ifeq 2
         1: .line 203
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "Destroying file based persistence context for {}"
            aload 1 /* ss */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.identifier:Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
         2: .line 205
      StackMap locals:
      StackMap stack:
            aload 1 /* ss */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.directory:Ljava/io/File;
            invokevirtual java.io.File.exists:()Z
            ifeq 5
            aload 1 /* ss */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.directory:Ljava/io/File;
            invokestatic org.ehcache.impl.persistence.FileUtils.tryRecursiveDelete:(Ljava/io/File;)Z
            ifne 5
         3: .line 206
            iload 2 /* verbose */
            ifeq 5
         4: .line 207
            getstatic org.ehcache.impl.persistence.DefaultLocalPersistenceService.LOGGER:Lorg/slf4j/Logger;
            ldc "Could not delete directory for context {}"
            aload 1 /* ss */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.identifier:Ljava/lang/String;
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 210
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean verbose
        end local 1 // org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace ss
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    6     1       ss  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
            0    6     2  verbose  Z
    MethodParameters:
         Name  Flags
      ss       
      verbose  

  private org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace createSafeSpaceLogical(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService$SafeSpace;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
        start local 1 // java.lang.String owner
        start local 2 // java.lang.String identifier
         0: .line 214
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.ehcache.impl.persistence.DefaultLocalPersistenceService.rootDirectory:Ljava/io/File;
            aload 1 /* owner */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* ownerDirectory */
        start local 3 // java.io.File ownerDirectory
         1: .line 215
            new java.io.File
            dup
            aload 3 /* ownerDirectory */
            aload 2 /* identifier */
            invokestatic org.ehcache.impl.persistence.FileUtils.safeIdentifier:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* directory */
        start local 4 // java.io.File directory
         2: .line 216
            new org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace
            dup
            aload 2 /* identifier */
            aload 4 /* directory */
            invokespecial org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace.<init>:(Ljava/lang/String;Ljava/io/File;)V
            areturn
        end local 4 // java.io.File directory
        end local 3 // java.io.File ownerDirectory
        end local 2 // java.lang.String identifier
        end local 1 // java.lang.String owner
        end local 0 // org.ehcache.impl.persistence.DefaultLocalPersistenceService this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Lorg/ehcache/impl/persistence/DefaultLocalPersistenceService;
            0    3     1           owner  Ljava/lang/String;
            0    3     2      identifier  Ljava/lang/String;
            1    3     3  ownerDirectory  Ljava/io/File;
            2    3     4       directory  Ljava/io/File;
    MethodParameters:
            Name  Flags
      owner       
      identifier  
}
SourceFile: "DefaultLocalPersistenceService.java"
NestMembers:
  org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier  org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace
InnerClasses:
  public abstract SafeSpaceIdentifier = org.ehcache.core.spi.service.LocalPersistenceService$SafeSpaceIdentifier of org.ehcache.core.spi.service.LocalPersistenceService
  private final DefaultSafeSpaceIdentifier = org.ehcache.impl.persistence.DefaultLocalPersistenceService$DefaultSafeSpaceIdentifier of org.ehcache.impl.persistence.DefaultLocalPersistenceService
  private final SafeSpace = org.ehcache.impl.persistence.DefaultLocalPersistenceService$SafeSpace of org.ehcache.impl.persistence.DefaultLocalPersistenceService
  public final MaintenanceScope = org.ehcache.spi.service.MaintainableService$MaintenanceScope of org.ehcache.spi.service.MaintainableService