class org.apache.cassandra.db.Memtable$FlushRunnable implements java.util.concurrent.Callable<org.apache.cassandra.io.sstable.SSTableMultiWriter>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.cassandra.db.Memtable$FlushRunnable
  super_class: java.lang.Object
{
  private final long estimatedSize;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.ConcurrentNavigableMap<org.apache.cassandra.db.PartitionPosition, org.apache.cassandra.db.partitions.AtomicBTreePartition> toFlush;
    descriptor: Ljava/util/concurrent/ConcurrentNavigableMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentNavigableMap<Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/partitions/AtomicBTreePartition;>;

  private final boolean isBatchLogTable;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.io.sstable.SSTableMultiWriter writer;
    descriptor: Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  final org.apache.cassandra.db.Memtable this$0;
    descriptor: Lorg/apache/cassandra/db/Memtable;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 401
            ldc Lorg/apache/cassandra/db/Memtable;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.cassandra.db.Memtable$FlushRunnable.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.apache.cassandra.db.Memtable, org.apache.cassandra.db.PartitionPosition, org.apache.cassandra.db.PartitionPosition, org.apache.cassandra.db.Directories$DataDirectory, org.apache.cassandra.db.lifecycle.LifecycleTransaction);
    descriptor: (Lorg/apache/cassandra/db/Memtable;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/Directories$DataDirectory;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
        start local 2 // org.apache.cassandra.db.PartitionPosition from
        start local 3 // org.apache.cassandra.db.PartitionPosition to
        start local 4 // org.apache.cassandra.db.Directories$DataDirectory flushLocation
        start local 5 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
         0: .line 415
            aload 0 /* this */
            aload 1
            aload 1
            getfield org.apache.cassandra.db.Memtable.partitions:Ljava/util/concurrent/ConcurrentNavigableMap;
            aload 2 /* from */
            aload 3 /* to */
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.subMap:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentNavigableMap;
            aload 4 /* flushLocation */
            aload 2 /* from */
            aload 3 /* to */
            aload 5 /* txn */
            invokespecial org.apache.cassandra.db.Memtable$FlushRunnable.<init>:(Lorg/apache/cassandra/db/Memtable;Ljava/util/concurrent/ConcurrentNavigableMap;Lorg/apache/cassandra/db/Directories$DataDirectory;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)V
         1: .line 416
            return
        end local 5 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
        end local 4 // org.apache.cassandra.db.Directories$DataDirectory flushLocation
        end local 3 // org.apache.cassandra.db.PartitionPosition to
        end local 2 // org.apache.cassandra.db.PartitionPosition from
        end local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/apache/cassandra/db/Memtable$FlushRunnable;
            0    2     2           from  Lorg/apache/cassandra/db/PartitionPosition;
            0    2     3             to  Lorg/apache/cassandra/db/PartitionPosition;
            0    2     4  flushLocation  Lorg/apache/cassandra/db/Directories$DataDirectory;
            0    2     5            txn  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
    MethodParameters:
               Name  Flags
      this$0         final
      from           
      to             
      flushLocation  
      txn            

  void <init>(org.apache.cassandra.db.Memtable, org.apache.cassandra.db.lifecycle.LifecycleTransaction);
    descriptor: (Lorg/apache/cassandra/db/Memtable;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
        start local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
         0: .line 420
            aload 0 /* this */
            aload 1
            aload 1
            getfield org.apache.cassandra.db.Memtable.partitions:Ljava/util/concurrent/ConcurrentNavigableMap;
            aconst_null
            aconst_null
            aconst_null
            aload 2 /* txn */
            invokespecial org.apache.cassandra.db.Memtable$FlushRunnable.<init>:(Lorg/apache/cassandra/db/Memtable;Ljava/util/concurrent/ConcurrentNavigableMap;Lorg/apache/cassandra/db/Directories$DataDirectory;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)V
         1: .line 421
            return
        end local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
        end local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/db/Memtable$FlushRunnable;
            0    2     2   txn  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
    MethodParameters:
        Name  Flags
      this$0  final
      txn     

  void <init>(java.util.concurrent.ConcurrentNavigableMap<org.apache.cassandra.db.PartitionPosition, org.apache.cassandra.db.partitions.AtomicBTreePartition>, org.apache.cassandra.db.Directories$DataDirectory, org.apache.cassandra.db.PartitionPosition, org.apache.cassandra.db.PartitionPosition, org.apache.cassandra.db.lifecycle.LifecycleTransaction);
    descriptor: (Lorg/apache/cassandra/db/Memtable;Ljava/util/concurrent/ConcurrentNavigableMap;Lorg/apache/cassandra/db/Directories$DataDirectory;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=11, args_size=7
        start local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
        start local 2 // java.util.concurrent.ConcurrentNavigableMap toFlush
        start local 3 // org.apache.cassandra.db.Directories$DataDirectory flushLocation
        start local 4 // org.apache.cassandra.db.PartitionPosition from
        start local 5 // org.apache.cassandra.db.PartitionPosition to
        start local 6 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
         0: .line 424
            aload 0 /* this */
            aload 1
            putfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
         1: .line 423
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         2: .line 425
            aload 0 /* this */
            aload 2 /* toFlush */
            putfield org.apache.cassandra.db.Memtable$FlushRunnable.toFlush:Ljava/util/concurrent/ConcurrentNavigableMap;
         3: .line 426
            aload 0 /* this */
            aload 4 /* from */
            putfield org.apache.cassandra.db.Memtable$FlushRunnable.from:Lorg/apache/cassandra/db/PartitionPosition;
         4: .line 427
            aload 0 /* this */
            aload 5 /* to */
            putfield org.apache.cassandra.db.Memtable$FlushRunnable.to:Lorg/apache/cassandra/db/PartitionPosition;
         5: .line 428
            lconst_0
            lstore 7 /* keySize */
        start local 7 // long keySize
         6: .line 429
            aload 2 /* toFlush */
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.keySet:()Ljava/util/NavigableSet;
            invokeinterface java.util.NavigableSet.iterator:()Ljava/util/Iterator;
            astore 10
            goto 10
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable org.apache.cassandra.db.Memtable java.util.concurrent.ConcurrentNavigableMap org.apache.cassandra.db.Directories$DataDirectory org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.lifecycle.LifecycleTransaction long top java.util.Iterator
      StackMap stack:
         7: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.db.PartitionPosition
            astore 9 /* key */
        start local 9 // org.apache.cassandra.db.PartitionPosition key
         8: .line 432
            getstatic org.apache.cassandra.db.Memtable$FlushRunnable.$assertionsDisabled:Z
            ifne 9
            aload 9 /* key */
            instanceof org.apache.cassandra.db.DecoratedKey
            ifne 9
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         9: .line 433
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable org.apache.cassandra.db.Memtable java.util.concurrent.ConcurrentNavigableMap org.apache.cassandra.db.Directories$DataDirectory org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.lifecycle.LifecycleTransaction long org.apache.cassandra.db.PartitionPosition java.util.Iterator
      StackMap stack:
            lload 7 /* keySize */
            aload 9 /* key */
            checkcast org.apache.cassandra.db.DecoratedKey
            invokevirtual org.apache.cassandra.db.DecoratedKey.getKey:()Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            i2l
            ladd
            lstore 7 /* keySize */
        end local 9 // org.apache.cassandra.db.PartitionPosition key
        10: .line 429
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable org.apache.cassandra.db.Memtable java.util.concurrent.ConcurrentNavigableMap org.apache.cassandra.db.Directories$DataDirectory org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.lifecycle.LifecycleTransaction long top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        11: .line 435
            aload 0 /* this */
            lload 7 /* keySize */
        12: .line 436
            lload 7 /* keySize */
            ladd
        13: .line 437
            aload 1
            getfield org.apache.cassandra.db.Memtable.liveDataSize:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            ladd
            l2d
        14: .line 438
            ldc 1.2
            dmul
            d2l
        15: .line 435
            putfield org.apache.cassandra.db.Memtable$FlushRunnable.estimatedSize:J
        16: .line 440
            aload 0 /* this */
            aload 1
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            getfield org.apache.cassandra.db.ColumnFamilyStore.name:Ljava/lang/String;
            ldc "batches"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
            aload 1
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            getfield org.apache.cassandra.db.ColumnFamilyStore.keyspace:Lorg/apache/cassandra/db/Keyspace;
            invokevirtual org.apache.cassandra.db.Keyspace.getName:()Ljava/lang/String;
            ldc "system"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 17
            iconst_1
            goto 18
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable org.apache.cassandra.db.Memtable java.util.concurrent.ConcurrentNavigableMap org.apache.cassandra.db.Directories$DataDirectory org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.lifecycle.LifecycleTransaction long
      StackMap stack: org.apache.cassandra.db.Memtable$FlushRunnable
        17: iconst_0
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable org.apache.cassandra.db.Memtable java.util.concurrent.ConcurrentNavigableMap org.apache.cassandra.db.Directories$DataDirectory org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.PartitionPosition org.apache.cassandra.db.lifecycle.LifecycleTransaction long
      StackMap stack: org.apache.cassandra.db.Memtable$FlushRunnable int
        18: putfield org.apache.cassandra.db.Memtable$FlushRunnable.isBatchLogTable:Z
        19: .line 442
            aload 3 /* flushLocation */
            ifnonnull 21
        20: .line 443
            aload 0 /* this */
            aload 0 /* this */
            aload 6 /* txn */
            aload 1
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.Memtable$FlushRunnable.getDirectories:()Lorg/apache/cassandra/db/Directories;
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.estimatedSize:J
            invokevirtual org.apache.cassandra.db.Directories.getWriteableLocationAsFile:(J)Ljava/io/File;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getSSTablePath:(Ljava/io/File;)Ljava/lang/String;
            aload 1
            getfield org.apache.cassandra.db.Memtable.columnsCollector:Lorg/apache/cassandra/db/Memtable$ColumnsCollector;
            invokevirtual org.apache.cassandra.db.Memtable$ColumnsCollector.get:()Lorg/apache/cassandra/db/PartitionColumns;
            aload 1
            getfield org.apache.cassandra.db.Memtable.statsCollector:Lorg/apache/cassandra/db/Memtable$StatsCollector;
            invokevirtual org.apache.cassandra.db.Memtable$StatsCollector.get:()Lorg/apache/cassandra/db/rows/EncodingStats;
            invokevirtual org.apache.cassandra.db.Memtable$FlushRunnable.createFlushWriter:(Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;Ljava/lang/String;Lorg/apache/cassandra/db/PartitionColumns;Lorg/apache/cassandra/db/rows/EncodingStats;)Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            putfield org.apache.cassandra.db.Memtable$FlushRunnable.writer:Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            goto 22
        21: .line 445
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 6 /* txn */
            aload 1
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.Memtable$FlushRunnable.getDirectories:()Lorg/apache/cassandra/db/Directories;
            aload 3 /* flushLocation */
            invokevirtual org.apache.cassandra.db.Directories.getLocationForDisk:(Lorg/apache/cassandra/db/Directories$DataDirectory;)Ljava/io/File;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getSSTablePath:(Ljava/io/File;)Ljava/lang/String;
            aload 1
            getfield org.apache.cassandra.db.Memtable.columnsCollector:Lorg/apache/cassandra/db/Memtable$ColumnsCollector;
            invokevirtual org.apache.cassandra.db.Memtable$ColumnsCollector.get:()Lorg/apache/cassandra/db/PartitionColumns;
            aload 1
            getfield org.apache.cassandra.db.Memtable.statsCollector:Lorg/apache/cassandra/db/Memtable$StatsCollector;
            invokevirtual org.apache.cassandra.db.Memtable$StatsCollector.get:()Lorg/apache/cassandra/db/rows/EncodingStats;
            invokevirtual org.apache.cassandra.db.Memtable$FlushRunnable.createFlushWriter:(Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;Ljava/lang/String;Lorg/apache/cassandra/db/PartitionColumns;Lorg/apache/cassandra/db/rows/EncodingStats;)Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            putfield org.apache.cassandra.db.Memtable$FlushRunnable.writer:Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
        22: .line 447
      StackMap locals:
      StackMap stack:
            return
        end local 7 // long keySize
        end local 6 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
        end local 5 // org.apache.cassandra.db.PartitionPosition to
        end local 4 // org.apache.cassandra.db.PartitionPosition from
        end local 3 // org.apache.cassandra.db.Directories$DataDirectory flushLocation
        end local 2 // java.util.concurrent.ConcurrentNavigableMap toFlush
        end local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0           this  Lorg/apache/cassandra/db/Memtable$FlushRunnable;
            0   23     2        toFlush  Ljava/util/concurrent/ConcurrentNavigableMap<Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/partitions/AtomicBTreePartition;>;
            0   23     3  flushLocation  Lorg/apache/cassandra/db/Directories$DataDirectory;
            0   23     4           from  Lorg/apache/cassandra/db/PartitionPosition;
            0   23     5             to  Lorg/apache/cassandra/db/PartitionPosition;
            0   23     6            txn  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            6   23     7        keySize  J
            8   10     9            key  Lorg/apache/cassandra/db/PartitionPosition;
    Signature: (Ljava/util/concurrent/ConcurrentNavigableMap<Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/partitions/AtomicBTreePartition;>;Lorg/apache/cassandra/db/Directories$DataDirectory;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/PartitionPosition;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)V
    MethodParameters:
               Name  Flags
      this$0         final
      toFlush        
      flushLocation  
      from           
      to             
      txn            

  protected org.apache.cassandra.db.Directories getDirectories();
    descriptor: ()Lorg/apache/cassandra/db/Directories;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
         0: .line 451
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getDirectories:()Lorg/apache/cassandra/db/Directories;
            areturn
        end local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/Memtable$FlushRunnable;

  private void writeSortedContents();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=1
        start local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
         0: .line 456
            getstatic org.apache.cassandra.db.Memtable.logger:Lorg/slf4j/Logger;
            ldc "Writing {}, flushed range = ({}, {}]"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            invokevirtual org.apache.cassandra.db.Memtable.toString:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.from:Lorg/apache/cassandra/db/PartitionPosition;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.to:Lorg/apache/cassandra/db/PartitionPosition;
            aastore
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         1: .line 458
            getstatic org.apache.cassandra.db.Memtable.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            istore 1 /* trackContention */
        start local 1 // boolean trackContention
         2: .line 459
            iconst_0
            istore 2 /* heavilyContendedRowCount */
        start local 2 // int heavilyContendedRowCount
         3: .line 462
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.toFlush:Ljava/util/concurrent/ConcurrentNavigableMap;
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 19
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable int int top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.db.partitions.AtomicBTreePartition
            astore 3 /* partition */
        start local 3 // org.apache.cassandra.db.partitions.AtomicBTreePartition partition
         5: .line 469
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.isBatchLogTable:Z
            ifeq 7
            aload 3 /* partition */
            invokevirtual org.apache.cassandra.db.partitions.AtomicBTreePartition.partitionLevelDeletion:()Lorg/apache/cassandra/db/DeletionTime;
            invokevirtual org.apache.cassandra.db.DeletionTime.isLive:()Z
            ifne 7
            aload 3 /* partition */
            invokevirtual org.apache.cassandra.db.partitions.AtomicBTreePartition.hasRows:()Z
            ifeq 7
         6: .line 470
            goto 19
         7: .line 472
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable int int org.apache.cassandra.db.partitions.AtomicBTreePartition java.util.Iterator
      StackMap stack:
            iload 1 /* trackContention */
            ifeq 9
            aload 3 /* partition */
            invokevirtual org.apache.cassandra.db.partitions.AtomicBTreePartition.usePessimisticLocking:()Z
            ifeq 9
         8: .line 473
            iinc 2 /* heavilyContendedRowCount */ 1
         9: .line 475
      StackMap locals:
      StackMap stack:
            aload 3 /* partition */
            invokevirtual org.apache.cassandra.db.partitions.AtomicBTreePartition.isEmpty:()Z
            ifne 19
        10: .line 477
            aconst_null
            astore 5
            aconst_null
            astore 6
        11: aload 3 /* partition */
            invokevirtual org.apache.cassandra.db.partitions.AtomicBTreePartition.unfilteredIterator:()Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
            astore 7 /* iter */
        start local 7 // org.apache.cassandra.db.rows.UnfilteredRowIterator iter
        12: .line 479
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.writer:Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            aload 7 /* iter */
            invokeinterface org.apache.cassandra.io.sstable.SSTableMultiWriter.append:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;)Z
            pop
        13: .line 480
            aload 7 /* iter */
            ifnull 19
            aload 7 /* iter */
            invokeinterface org.apache.cassandra.db.rows.UnfilteredRowIterator.close:()V
            goto 19
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable int int org.apache.cassandra.db.partitions.AtomicBTreePartition java.util.Iterator java.lang.Throwable java.lang.Throwable org.apache.cassandra.db.rows.UnfilteredRowIterator
      StackMap stack: java.lang.Throwable
        14: astore 5
            aload 7 /* iter */
            ifnull 15
            aload 7 /* iter */
            invokeinterface org.apache.cassandra.db.rows.UnfilteredRowIterator.close:()V
        end local 7 // org.apache.cassandra.db.rows.UnfilteredRowIterator iter
      StackMap locals:
      StackMap stack:
        15: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 6
            aload 5
            ifnonnull 17
            aload 6
            astore 5
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 5
            aload 6
            if_acmpeq 18
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        18: aload 5
            athrow
        end local 3 // org.apache.cassandra.db.partitions.AtomicBTreePartition partition
        19: .line 462
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable int int top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        20: .line 484
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.writer:Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            invokeinterface org.apache.cassandra.io.sstable.SSTableMultiWriter.getFilePointer:()J
            lstore 3 /* bytesFlushed */
        start local 3 // long bytesFlushed
        21: .line 485
            getstatic org.apache.cassandra.db.Memtable.logger:Lorg/slf4j/Logger;
            ldc "Completed flushing {} ({}) for commitlog position {}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        22: .line 486
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.writer:Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            invokeinterface org.apache.cassandra.io.sstable.SSTableMultiWriter.getFilename:()Ljava/lang/String;
            aastore
            dup
            iconst_1
        23: .line 487
            lload 3 /* bytesFlushed */
            invokestatic org.apache.cassandra.utils.FBUtilities.prettyPrintMemory:(J)Ljava/lang/String;
            aastore
            dup
            iconst_2
        24: .line 488
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.commitLogUpperBound:Ljava/util/concurrent/atomic/AtomicReference;
            aastore
        25: .line 485
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        26: .line 490
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            getfield org.apache.cassandra.db.ColumnFamilyStore.metric:Lorg/apache/cassandra/metrics/TableMetrics;
            getfield org.apache.cassandra.metrics.TableMetrics.bytesFlushed:Lcom/codahale/metrics/Counter;
            lload 3 /* bytesFlushed */
            invokevirtual com.codahale.metrics.Counter.inc:(J)V
        27: .line 492
            iload 2 /* heavilyContendedRowCount */
            ifle 29
        28: .line 493
            getstatic org.apache.cassandra.db.Memtable.logger:Lorg/slf4j/Logger;
            ldc "High update contention in {}/{} partitions of {} "
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            iload 2 /* heavilyContendedRowCount */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.toFlush:Ljava/util/concurrent/ConcurrentNavigableMap;
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.size:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            aastore
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;[Ljava/lang/Object;)V
        29: .line 494
      StackMap locals: org.apache.cassandra.db.Memtable$FlushRunnable int int long
      StackMap stack:
            return
        end local 3 // long bytesFlushed
        end local 2 // int heavilyContendedRowCount
        end local 1 // boolean trackContention
        end local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0   30     0                      this  Lorg/apache/cassandra/db/Memtable$FlushRunnable;
            2   30     1           trackContention  Z
            3   30     2  heavilyContendedRowCount  I
            5   19     3                 partition  Lorg/apache/cassandra/db/partitions/AtomicBTreePartition;
           12   15     7                      iter  Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
           21   30     3              bytesFlushed  J
      Exception table:
        from    to  target  type
          12    13      14  any
          11    16      16  any

  public org.apache.cassandra.io.sstable.SSTableMultiWriter createFlushWriter(org.apache.cassandra.db.lifecycle.LifecycleTransaction, java.lang.String, org.apache.cassandra.db.PartitionColumns, org.apache.cassandra.db.rows.EncodingStats);
    descriptor: (Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;Ljava/lang/String;Lorg/apache/cassandra/db/PartitionColumns;Lorg/apache/cassandra/db/rows/EncodingStats;)Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=13, locals=6, args_size=5
        start local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
        start local 1 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
        start local 2 // java.lang.String filename
        start local 3 // org.apache.cassandra.db.PartitionColumns columns
        start local 4 // org.apache.cassandra.db.rows.EncodingStats stats
         0: .line 501
            new org.apache.cassandra.io.sstable.metadata.MetadataCollector
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
            getfield org.apache.cassandra.config.CFMetaData.comparator:Lorg/apache/cassandra/db/ClusteringComparator;
            invokespecial org.apache.cassandra.io.sstable.metadata.MetadataCollector.<init>:(Lorg/apache/cassandra/db/ClusteringComparator;)V
         1: .line 502
            new org.apache.cassandra.db.commitlog.IntervalSet
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.commitLogLowerBound:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast org.apache.cassandra.db.commitlog.CommitLogPosition
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.commitLogUpperBound:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast org.apache.cassandra.db.commitlog.CommitLogPosition
            invokespecial org.apache.cassandra.db.commitlog.IntervalSet.<init>:(Ljava/lang/Comparable;Ljava/lang/Comparable;)V
            invokevirtual org.apache.cassandra.io.sstable.metadata.MetadataCollector.commitLogIntervals:(Lorg/apache/cassandra/db/commitlog/IntervalSet;)Lorg/apache/cassandra/io/sstable/metadata/MetadataCollector;
         2: .line 501
            astore 5 /* sstableMetadataCollector */
        start local 5 // org.apache.cassandra.io.sstable.metadata.MetadataCollector sstableMetadataCollector
         3: .line 504
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 2 /* filename */
            invokestatic org.apache.cassandra.io.sstable.Descriptor.fromFilename:(Ljava/lang/String;)Lorg/apache/cassandra/io/sstable/Descriptor;
         4: .line 505
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.toFlush:Ljava/util/concurrent/ConcurrentNavigableMap;
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.size:()I
            i2l
         5: .line 506
            lconst_0
         6: .line 507
            aload 5 /* sstableMetadataCollector */
         7: .line 508
            new org.apache.cassandra.db.SerializationHeader
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.this$0:Lorg/apache/cassandra/db/Memtable;
            getfield org.apache.cassandra.db.Memtable.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
            aload 3 /* columns */
            aload 4 /* stats */
            invokespecial org.apache.cassandra.db.SerializationHeader.<init>:(ZLorg/apache/cassandra/config/CFMetaData;Lorg/apache/cassandra/db/PartitionColumns;Lorg/apache/cassandra/db/rows/EncodingStats;)V
            aload 1 /* txn */
         8: .line 504
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.createSSTableMultiWriter:(Lorg/apache/cassandra/io/sstable/Descriptor;JJLorg/apache/cassandra/io/sstable/metadata/MetadataCollector;Lorg/apache/cassandra/db/SerializationHeader;Lorg/apache/cassandra/db/lifecycle/LifecycleNewTracker;)Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            areturn
        end local 5 // org.apache.cassandra.io.sstable.metadata.MetadataCollector sstableMetadataCollector
        end local 4 // org.apache.cassandra.db.rows.EncodingStats stats
        end local 3 // org.apache.cassandra.db.PartitionColumns columns
        end local 2 // java.lang.String filename
        end local 1 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
        end local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
      LocalVariableTable:
        Start  End  Slot                      Name  Signature
            0    9     0                      this  Lorg/apache/cassandra/db/Memtable$FlushRunnable;
            0    9     1                       txn  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            0    9     2                  filename  Ljava/lang/String;
            0    9     3                   columns  Lorg/apache/cassandra/db/PartitionColumns;
            0    9     4                     stats  Lorg/apache/cassandra/db/rows/EncodingStats;
            3    9     5  sstableMetadataCollector  Lorg/apache/cassandra/io/sstable/metadata/MetadataCollector;
    MethodParameters:
          Name  Flags
      txn       
      filename  
      columns   
      stats     

  public org.apache.cassandra.io.sstable.SSTableMultiWriter call();
    descriptor: ()Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
         0: .line 514
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.Memtable$FlushRunnable.writeSortedContents:()V
         1: .line 515
            aload 0 /* this */
            getfield org.apache.cassandra.db.Memtable$FlushRunnable.writer:Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            areturn
        end local 0 // org.apache.cassandra.db.Memtable$FlushRunnable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/db/Memtable$FlushRunnable;

  public java.lang.Object call();
    descriptor: ()Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.apache.cassandra.db.Memtable$FlushRunnable.call:()Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
Signature: Ljava/lang/Object;Ljava/util/concurrent/Callable<Lorg/apache/cassandra/io/sstable/SSTableMultiWriter;>;
SourceFile: "Memtable.java"
NestHost: org.apache.cassandra.db.Memtable
InnerClasses:
  public DataDirectory = org.apache.cassandra.db.Directories$DataDirectory of org.apache.cassandra.db.Directories
  private ColumnsCollector = org.apache.cassandra.db.Memtable$ColumnsCollector of org.apache.cassandra.db.Memtable
  FlushRunnable = org.apache.cassandra.db.Memtable$FlushRunnable of org.apache.cassandra.db.Memtable
  private StatsCollector = org.apache.cassandra.db.Memtable$StatsCollector of org.apache.cassandra.db.Memtable