class org.apache.cassandra.db.lifecycle.LogTransaction extends org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional implements org.apache.cassandra.utils.concurrent.Transactional
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.cassandra.db.lifecycle.LogTransaction
  super_class: org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final org.apache.cassandra.db.lifecycle.Tracker tracker;
    descriptor: Lorg/apache/cassandra/db/lifecycle/Tracker;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.db.lifecycle.LogFile txnFile;
    descriptor: Lorg/apache/cassandra/db/lifecycle/LogFile;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.utils.concurrent.Ref<org.apache.cassandra.db.lifecycle.LogTransaction> selfRef;
    descriptor: Lorg/apache/cassandra/utils/concurrent/Ref;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/apache/cassandra/utils/concurrent/Ref<Lorg/apache/cassandra/db/lifecycle/LogTransaction;>;

  private static final java.util.Queue<java.lang.Runnable> failedDeletions;
    descriptor: Ljava/util/Queue;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Queue<Ljava/lang/Runnable;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 93
            ldc Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
         1: .line 117
            new java.util.concurrent.ConcurrentLinkedQueue
            dup
            invokespecial java.util.concurrent.ConcurrentLinkedQueue.<init>:()V
            putstatic org.apache.cassandra.db.lifecycle.LogTransaction.failedDeletions:Ljava/util/Queue;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.apache.cassandra.db.compaction.OperationType);
    descriptor: (Lorg/apache/cassandra/db/compaction/OperationType;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // org.apache.cassandra.db.compaction.OperationType opType
         0: .line 121
            aload 0 /* this */
            aload 1 /* opType */
            aconst_null
            invokespecial org.apache.cassandra.db.lifecycle.LogTransaction.<init>:(Lorg/apache/cassandra/db/compaction/OperationType;Lorg/apache/cassandra/db/lifecycle/Tracker;)V
         1: .line 122
            return
        end local 1 // org.apache.cassandra.db.compaction.OperationType opType
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    2     1  opType  Lorg/apache/cassandra/db/compaction/OperationType;
    MethodParameters:
        Name  Flags
      opType  

  void <init>(org.apache.cassandra.db.compaction.OperationType, org.apache.cassandra.db.lifecycle.Tracker);
    descriptor: (Lorg/apache/cassandra/db/compaction/OperationType;Lorg/apache/cassandra/db/lifecycle/Tracker;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // org.apache.cassandra.db.compaction.OperationType opType
        start local 2 // org.apache.cassandra.db.lifecycle.Tracker tracker
         0: .line 124
            aload 0 /* this */
            invokespecial org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.<init>:()V
         1: .line 126
            aload 0 /* this */
            aload 2 /* tracker */
            putfield org.apache.cassandra.db.lifecycle.LogTransaction.tracker:Lorg/apache/cassandra/db/lifecycle/Tracker;
         2: .line 127
            aload 0 /* this */
            new org.apache.cassandra.db.lifecycle.LogFile
            dup
            aload 1 /* opType */
            invokestatic org.apache.cassandra.utils.UUIDGen.getTimeUUID:()Ljava/util/UUID;
            invokespecial org.apache.cassandra.db.lifecycle.LogFile.<init>:(Lorg/apache/cassandra/db/compaction/OperationType;Ljava/util/UUID;)V
            putfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
         3: .line 128
            aload 0 /* this */
            new org.apache.cassandra.utils.concurrent.Ref
            dup
            aload 0 /* this */
            new org.apache.cassandra.db.lifecycle.LogTransaction$TransactionTidier
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            invokespecial org.apache.cassandra.db.lifecycle.LogTransaction$TransactionTidier.<init>:(Lorg/apache/cassandra/db/lifecycle/LogFile;)V
            invokespecial org.apache.cassandra.utils.concurrent.Ref.<init>:(Ljava/lang/Object;Lorg/apache/cassandra/utils/concurrent/RefCounted$Tidy;)V
            putfield org.apache.cassandra.db.lifecycle.LogTransaction.selfRef:Lorg/apache/cassandra/utils/concurrent/Ref;
         4: .line 130
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            ifeq 6
         5: .line 131
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            ldc "Created transaction logs with id {}"
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.id:()Ljava/util/UUID;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 132
      StackMap locals: org.apache.cassandra.db.lifecycle.LogTransaction org.apache.cassandra.db.compaction.OperationType org.apache.cassandra.db.lifecycle.Tracker
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.db.lifecycle.Tracker tracker
        end local 1 // org.apache.cassandra.db.compaction.OperationType opType
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    7     1   opType  Lorg/apache/cassandra/db/compaction/OperationType;
            0    7     2  tracker  Lorg/apache/cassandra/db/lifecycle/Tracker;
    MethodParameters:
         Name  Flags
      opType   
      tracker  

  void trackNew(org.apache.cassandra.io.sstable.SSTable);
    descriptor: (Lorg/apache/cassandra/io/sstable/SSTable;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // org.apache.cassandra.io.sstable.SSTable table
         0: .line 139
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            getstatic org.apache.cassandra.db.lifecycle.LogRecord$Type.ADD:Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;
            aload 1 /* table */
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.add:(Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;Lorg/apache/cassandra/io/sstable/SSTable;)V
         1: .line 140
            return
        end local 1 // org.apache.cassandra.io.sstable.SSTable table
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    2     1  table  Lorg/apache/cassandra/io/sstable/SSTable;
    MethodParameters:
       Name  Flags
      table  

  void untrackNew(org.apache.cassandra.io.sstable.SSTable);
    descriptor: (Lorg/apache/cassandra/io/sstable/SSTable;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // org.apache.cassandra.io.sstable.SSTable table
         0: .line 147
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            getstatic org.apache.cassandra.db.lifecycle.LogRecord$Type.ADD:Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;
            aload 1 /* table */
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.remove:(Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;Lorg/apache/cassandra/io/sstable/SSTable;)V
         1: .line 148
            return
        end local 1 // org.apache.cassandra.io.sstable.SSTable table
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    2     1  table  Lorg/apache/cassandra/io/sstable/SSTable;
    MethodParameters:
       Name  Flags
      table  

  org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier obsoleted(org.apache.cassandra.io.sstable.format.SSTableReader);
    descriptor: (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)Lorg/apache/cassandra/db/lifecycle/LogTransaction$SSTableTidier;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
         0: .line 156
            aload 0 /* this */
            aload 1 /* sstable */
            getstatic org.apache.cassandra.db.lifecycle.LogRecord$Type.REMOVE:Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;
            aload 1 /* sstable */
            invokestatic org.apache.cassandra.db.lifecycle.LogRecord.make:(Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;Lorg/apache/cassandra/io/sstable/SSTable;)Lorg/apache/cassandra/db/lifecycle/LogRecord;
            invokevirtual org.apache.cassandra.db.lifecycle.LogTransaction.obsoleted:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;Lorg/apache/cassandra/db/lifecycle/LogRecord;)Lorg/apache/cassandra/db/lifecycle/LogTransaction$SSTableTidier;
            areturn
        end local 1 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    1     1  sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
         Name  Flags
      sstable  

  org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier obsoleted(org.apache.cassandra.io.sstable.format.SSTableReader, org.apache.cassandra.db.lifecycle.LogRecord);
    descriptor: (Lorg/apache/cassandra/io/sstable/format/SSTableReader;Lorg/apache/cassandra/db/lifecycle/LogRecord;)Lorg/apache/cassandra/db/lifecycle/LogTransaction$SSTableTidier;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // org.apache.cassandra.io.sstable.format.SSTableReader reader
        start local 2 // org.apache.cassandra.db.lifecycle.LogRecord logRecord
         0: .line 164
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            getstatic org.apache.cassandra.db.lifecycle.LogRecord$Type.ADD:Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;
            aload 1 /* reader */
            aload 2 /* logRecord */
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.contains:(Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;Lorg/apache/cassandra/io/sstable/SSTable;Lorg/apache/cassandra/db/lifecycle/LogRecord;)Z
            ifeq 4
         1: .line 166
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            getstatic org.apache.cassandra.db.lifecycle.LogRecord$Type.REMOVE:Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;
            aload 1 /* reader */
            aload 2 /* logRecord */
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.contains:(Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;Lorg/apache/cassandra/io/sstable/SSTable;Lorg/apache/cassandra/db/lifecycle/LogRecord;)Z
            ifeq 3
         2: .line 167
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         3: .line 169
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier
            dup
            aload 1 /* reader */
            iconst_1
            aload 0 /* this */
            invokespecial org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier.<init>:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;ZLorg/apache/cassandra/db/lifecycle/LogTransaction;)V
            areturn
         4: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            aload 2 /* logRecord */
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.addRecord:(Lorg/apache/cassandra/db/lifecycle/LogRecord;)V
         5: .line 174
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.tracker:Lorg/apache/cassandra/db/lifecycle/Tracker;
            ifnull 7
         6: .line 175
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.tracker:Lorg/apache/cassandra/db/lifecycle/Tracker;
            aload 1 /* reader */
            invokevirtual org.apache.cassandra.db.lifecycle.Tracker.notifyDeleting:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V
         7: .line 177
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier
            dup
            aload 1 /* reader */
            iconst_0
            aload 0 /* this */
            invokespecial org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier.<init>:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;ZLorg/apache/cassandra/db/lifecycle/LogTransaction;)V
            areturn
        end local 2 // org.apache.cassandra.db.lifecycle.LogRecord logRecord
        end local 1 // org.apache.cassandra.io.sstable.format.SSTableReader reader
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    8     1     reader  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            0    8     2  logRecord  Lorg/apache/cassandra/db/lifecycle/LogRecord;
    MethodParameters:
           Name  Flags
      reader     
      logRecord  

  java.util.Map<org.apache.cassandra.io.sstable.SSTable, org.apache.cassandra.db.lifecycle.LogRecord> makeRemoveRecords(java.lang.Iterable<org.apache.cassandra.io.sstable.format.SSTableReader>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/Map;
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // java.lang.Iterable sstables
         0: .line 182
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            getstatic org.apache.cassandra.db.lifecycle.LogRecord$Type.REMOVE:Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;
            aload 1 /* sstables */
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.makeRecords:(Lorg/apache/cassandra/db/lifecycle/LogRecord$Type;Ljava/lang/Iterable;)Ljava/util/Map;
            areturn
        end local 1 // java.lang.Iterable sstables
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    1     1  sstables  Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
    Signature: (Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;)Ljava/util/Map<Lorg/apache/cassandra/io/sstable/SSTable;Lorg/apache/cassandra/db/lifecycle/LogRecord;>;
    MethodParameters:
          Name  Flags
      sstables  

  org.apache.cassandra.db.compaction.OperationType type();
    descriptor: ()Lorg/apache/cassandra/db/compaction/OperationType;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
         0: .line 188
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.type:()Lorg/apache/cassandra/db/compaction/OperationType;
            areturn
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;

  java.util.UUID id();
    descriptor: ()Ljava/util/UUID;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
         0: .line 193
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.id:()Ljava/util/UUID;
            areturn
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;

  org.apache.cassandra.db.lifecycle.LogFile txnFile();
    descriptor: ()Lorg/apache/cassandra/db/lifecycle/LogFile;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
         0: .line 199
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            areturn
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()

  java.util.List<java.io.File> logFiles();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
         0: .line 205
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.getFiles:()Ljava/util/List;
            areturn
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
    Signature: ()Ljava/util/List<Ljava/io/File;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()

  java.util.List<java.lang.String> logFilePaths();
    descriptor: ()Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
         0: .line 211
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            invokevirtual org.apache.cassandra.db.lifecycle.LogFile.getFilePaths:()Ljava/util/List;
            areturn
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
    Signature: ()Ljava/util/List<Ljava/lang/String;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()

  static void delete(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // java.io.File file
         0: .line 218
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            ifeq 2
         1: .line 219
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            ldc "Deleting {}"
            aload 0 /* file */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
         2: .line 221
      StackMap locals:
      StackMap stack:
            aload 0 /* file */
            invokevirtual java.io.File.toPath:()Ljava/nio/file/Path;
            invokestatic java.nio.file.Files.delete:(Ljava/nio/file/Path;)V
         3: .line 222
            goto 22
         4: .line 223
      StackMap locals:
      StackMap stack: java.nio.file.NoSuchFileException
            astore 1 /* e */
        start local 1 // java.nio.file.NoSuchFileException e
         5: .line 225
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            ldc "Unable to delete {} as it does not exist, see debug log file for stack trace"
            aload 0 /* file */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 226
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 22
         7: .line 228
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 2 /* baos */
        start local 2 // java.io.ByteArrayOutputStream baos
         8: .line 229
            aconst_null
            astore 3
            aconst_null
            astore 4
         9: new java.io.PrintStream
            dup
            aload 2 /* baos */
            invokespecial java.io.PrintStream.<init>:(Ljava/io/OutputStream;)V
            astore 5 /* ps */
        start local 5 // java.io.PrintStream ps
        10: .line 231
            aload 1 /* e */
            aload 5 /* ps */
            invokevirtual java.nio.file.NoSuchFileException.printStackTrace:(Ljava/io/PrintStream;)V
        11: .line 232
            aload 5 /* ps */
            ifnull 17
            aload 5 /* ps */
            invokevirtual java.io.PrintStream.close:()V
            goto 17
      StackMap locals: java.io.File java.nio.file.NoSuchFileException java.io.ByteArrayOutputStream java.lang.Throwable java.lang.Throwable java.io.PrintStream
      StackMap stack: java.lang.Throwable
        12: astore 3
            aload 5 /* ps */
            ifnull 13
            aload 5 /* ps */
            invokevirtual java.io.PrintStream.close:()V
        end local 5 // java.io.PrintStream ps
      StackMap locals:
      StackMap stack:
        13: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 4
            aload 3
            ifnonnull 15
            aload 4
            astore 3
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 3
            aload 4
            if_acmpeq 16
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 3
            athrow
        17: .line 233
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            ldc "Unable to delete {} as it does not exist, stack trace:\n {}"
            aload 0 /* file */
            aload 2 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.toString:()Ljava/lang/String;
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        end local 2 // java.io.ByteArrayOutputStream baos
        end local 1 // java.nio.file.NoSuchFileException e
        18: goto 22
        19: .line 236
      StackMap locals: java.io.File
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
        20: .line 238
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            ldc "Unable to delete {}"
            aload 0 /* file */
            aload 1 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        21: .line 239
            new org.apache.cassandra.io.FSWriteError
            dup
            aload 1 /* e */
            aload 0 /* file */
            invokespecial org.apache.cassandra.io.FSWriteError.<init>:(Ljava/lang/Throwable;Ljava/io/File;)V
            invokestatic org.apache.cassandra.io.util.FileUtils.handleFSErrorAndPropagate:(Lorg/apache/cassandra/io/FSError;)V
        end local 1 // java.io.IOException e
        22: .line 241
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.io.File file
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   23     0  file  Ljava/io/File;
            5   18     1     e  Ljava/nio/file/NoSuchFileException;
            8   18     2  baos  Ljava/io/ByteArrayOutputStream;
           10   13     5    ps  Ljava/io/PrintStream;
           20   22     1     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           0     3       4  Class java.nio.file.NoSuchFileException
          10    11      12  any
           9    14      14  any
           0     3      19  Class java.io.IOException
    MethodParameters:
      Name  Flags
      file  

  static void rescheduleFailedDeletions();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 380
            goto 2
        start local 0 // java.lang.Runnable task
         1: .line 381
      StackMap locals: java.lang.Runnable
      StackMap stack:
            getstatic org.apache.cassandra.concurrent.ScheduledExecutors.nonPeriodicTasks:Lorg/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor;
            aload 0 /* task */
            invokevirtual org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor.submit:(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
            pop
        end local 0 // java.lang.Runnable task
         2: .line 380
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.failedDeletions:Ljava/util/Queue;
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            dup
            astore 0 /* task */
        start local 0 // java.lang.Runnable task
         3: ifnonnull 1
         4: .line 384
            invokestatic org.apache.cassandra.io.sstable.SnapshotDeletingTask.rescheduleFailedTasks:()V
         5: .line 385
            return
        end local 0 // java.lang.Runnable task
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    2     0  task  Ljava/lang/Runnable;
            3    6     0  task  Ljava/lang/Runnable;

  static void waitForDeletions();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=0, args_size=0
         0: .line 389
            getstatic org.apache.cassandra.concurrent.ScheduledExecutors.nonPeriodicTasks:Lorg/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor;
            invokestatic com.google.common.util.concurrent.Runnables.doNothing:()Ljava/lang/Runnable;
            lconst_0
            getstatic java.util.concurrent.TimeUnit.MILLISECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor.schedule:(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            invokestatic org.apache.cassandra.utils.FBUtilities.waitOnFuture:(Ljava/util/concurrent/Future;)Ljava/lang/Object;
            pop
         1: .line 390
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  java.lang.Throwable complete(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljava/lang/Throwable;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // java.lang.Throwable accumulate
         0: .line 397
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.selfRef:Lorg/apache/cassandra/utils/concurrent/Ref;
            aload 1 /* accumulate */
            invokevirtual org.apache.cassandra.utils.concurrent.Ref.ensureReleased:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            astore 1 /* accumulate */
         1: .line 398
            aload 1 /* accumulate */
         2: areturn
         3: .line 400
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2 /* t */
        start local 2 // java.lang.Throwable t
         4: .line 402
            getstatic org.apache.cassandra.db.lifecycle.LogTransaction.logger:Lorg/slf4j/Logger;
            ldc "Failed to complete file transaction id {}"
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.lifecycle.LogTransaction.id:()Ljava/util/UUID;
            aload 2 /* t */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         5: .line 403
            aload 1 /* accumulate */
            aload 2 /* t */
            invokestatic org.apache.cassandra.utils.Throwables.merge:(Ljava/lang/Throwable;Ljava/lang/Throwable;)Ljava/lang/Throwable;
            areturn
        end local 2 // java.lang.Throwable t
        end local 1 // java.lang.Throwable accumulate
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    6     1  accumulate  Ljava/lang/Throwable;
            4    6     2           t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     2       3  Class java.lang.Throwable
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
            Name  Flags
      accumulate  

  protected java.lang.Throwable doCommit(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljava/lang/Throwable;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // java.lang.Throwable accumulate
         0: .line 409
            aload 0 /* this */
            aload 1 /* accumulate */
            iconst_1
            anewarray org.apache.cassandra.utils.Throwables$DiscreteAction
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic perform(Lorg/apache/cassandra/db/lifecycle/LogFile;)Lorg/apache/cassandra/utils/Throwables$DiscreteAction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  org/apache/cassandra/db/lifecycle/LogFile.commit()V (5)
                  ()V
            aastore
            invokestatic org.apache.cassandra.utils.Throwables.perform:(Ljava/lang/Throwable;[Lorg/apache/cassandra/utils/Throwables$DiscreteAction;)Ljava/lang/Throwable;
            invokevirtual org.apache.cassandra.db.lifecycle.LogTransaction.complete:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            areturn
        end local 1 // java.lang.Throwable accumulate
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    1     1  accumulate  Ljava/lang/Throwable;
    MethodParameters:
            Name  Flags
      accumulate  

  protected java.lang.Throwable doAbort(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)Ljava/lang/Throwable;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
        start local 1 // java.lang.Throwable accumulate
         0: .line 414
            aload 0 /* this */
            aload 1 /* accumulate */
            iconst_1
            anewarray org.apache.cassandra.utils.Throwables$DiscreteAction
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.db.lifecycle.LogTransaction.txnFile:Lorg/apache/cassandra/db/lifecycle/LogFile;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic perform(Lorg/apache/cassandra/db/lifecycle/LogFile;)Lorg/apache/cassandra/utils/Throwables$DiscreteAction;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  org/apache/cassandra/db/lifecycle/LogFile.abort()V (5)
                  ()V
            aastore
            invokestatic org.apache.cassandra.utils.Throwables.perform:(Ljava/lang/Throwable;[Lorg/apache/cassandra/utils/Throwables$DiscreteAction;)Ljava/lang/Throwable;
            invokevirtual org.apache.cassandra.db.lifecycle.LogTransaction.complete:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
            areturn
        end local 1 // java.lang.Throwable accumulate
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;
            0    1     1  accumulate  Ljava/lang/Throwable;
    MethodParameters:
            Name  Flags
      accumulate  

  protected void doPrepare();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
         0: .line 417
            return
        end local 0 // org.apache.cassandra.db.lifecycle.LogTransaction this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/lifecycle/LogTransaction;

  static boolean removeUnfinishedLeftovers(org.apache.cassandra.config.CFMetaData);
    descriptor: (Lorg/apache/cassandra/config/CFMetaData;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.cassandra.config.CFMetaData metadata
         0: .line 435
            new org.apache.cassandra.db.Directories
            dup
            aload 0 /* metadata */
            invokestatic org.apache.cassandra.db.ColumnFamilyStore.getInitialDirectories:()[Lorg/apache/cassandra/db/Directories$DataDirectory;
            invokespecial org.apache.cassandra.db.Directories.<init>:(Lorg/apache/cassandra/config/CFMetaData;[Lorg/apache/cassandra/db/Directories$DataDirectory;)V
            invokevirtual org.apache.cassandra.db.Directories.getCFDirectories:()Ljava/util/List;
            invokestatic org.apache.cassandra.db.lifecycle.LogTransaction.removeUnfinishedLeftovers:(Ljava/util/List;)Z
            ireturn
        end local 0 // org.apache.cassandra.config.CFMetaData metadata
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  metadata  Lorg/apache/cassandra/config/CFMetaData;
    MethodParameters:
          Name  Flags
      metadata  

  static boolean removeUnfinishedLeftovers(java.util.List<java.io.File>);
    descriptor: (Ljava/util/List;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.List directories
         0: .line 441
            new org.apache.cassandra.db.lifecycle.LogTransaction$LogFilesByName
            dup
            invokespecial org.apache.cassandra.db.lifecycle.LogTransaction$LogFilesByName.<init>:()V
            astore 1 /* logFiles */
        start local 1 // org.apache.cassandra.db.lifecycle.LogTransaction$LogFilesByName logFiles
         1: .line 442
            aload 0 /* directories */
            aload 1 /* logFiles */
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic accept(Lorg/apache/cassandra/db/lifecycle/LogTransaction$LogFilesByName;)Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  org/apache/cassandra/db/lifecycle/LogTransaction$LogFilesByName.list(Ljava/io/File;)V (5)
                  (Ljava/io/File;)V
            invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
         2: .line 443
            aload 1 /* logFiles */
            invokevirtual org.apache.cassandra.db.lifecycle.LogTransaction$LogFilesByName.removeUnfinishedLeftovers:()Z
            ireturn
        end local 1 // org.apache.cassandra.db.lifecycle.LogTransaction$LogFilesByName logFiles
        end local 0 // java.util.List directories
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0  directories  Ljava/util/List<Ljava/io/File;>;
            1    3     1     logFiles  Lorg/apache/cassandra/db/lifecycle/LogTransaction$LogFilesByName;
    Signature: (Ljava/util/List<Ljava/io/File;>;)Z
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
             Name  Flags
      directories  
}
SourceFile: "LogTransaction.java"
NestMembers:
  org.apache.cassandra.db.lifecycle.LogTransaction$CorruptTransactionLogException  org.apache.cassandra.db.lifecycle.LogTransaction$LogFilesByName  org.apache.cassandra.db.lifecycle.LogTransaction$Obsoletion  org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier  org.apache.cassandra.db.lifecycle.LogTransaction$TransactionTidier
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public DataDirectory = org.apache.cassandra.db.Directories$DataDirectory of org.apache.cassandra.db.Directories
  public final Type = org.apache.cassandra.db.lifecycle.LogRecord$Type of org.apache.cassandra.db.lifecycle.LogRecord
  public final CorruptTransactionLogException = org.apache.cassandra.db.lifecycle.LogTransaction$CorruptTransactionLogException of org.apache.cassandra.db.lifecycle.LogTransaction
  private final LogFilesByName = org.apache.cassandra.db.lifecycle.LogTransaction$LogFilesByName of org.apache.cassandra.db.lifecycle.LogTransaction
  Obsoletion = org.apache.cassandra.db.lifecycle.LogTransaction$Obsoletion of org.apache.cassandra.db.lifecycle.LogTransaction
  public SSTableTidier = org.apache.cassandra.db.lifecycle.LogTransaction$SSTableTidier of org.apache.cassandra.db.lifecycle.LogTransaction
  private TransactionTidier = org.apache.cassandra.db.lifecycle.LogTransaction$TransactionTidier of org.apache.cassandra.db.lifecycle.LogTransaction
  public abstract DiscreteAction = org.apache.cassandra.utils.Throwables$DiscreteAction of org.apache.cassandra.utils.Throwables
  public abstract Tidy = org.apache.cassandra.utils.concurrent.RefCounted$Tidy of org.apache.cassandra.utils.concurrent.RefCounted
  public abstract AbstractTransactional = org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional of org.apache.cassandra.utils.concurrent.Transactional