public class org.apache.cassandra.cache.AutoSavingCache<K extends org.apache.cassandra.cache.CacheKey, V> extends org.apache.cassandra.cache.InstrumentingCache<K, V>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.cache.AutoSavingCache
  super_class: org.apache.cassandra.cache.InstrumentingCache
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public static final java.util.Set<org.apache.cassandra.service.CacheService$CacheType> flushInProgress;
    descriptor: Ljava/util/Set;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Set<Lorg/apache/cassandra/service/CacheService$CacheType;>;

  protected volatile java.util.concurrent.ScheduledFuture<?> saveTask;
    descriptor: Ljava/util/concurrent/ScheduledFuture;
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE
    Signature: Ljava/util/concurrent/ScheduledFuture<*>;

  protected final org.apache.cassandra.service.CacheService$CacheType cacheType;
    descriptor: Lorg/apache/cassandra/service/CacheService$CacheType;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private final org.apache.cassandra.cache.AutoSavingCache$CacheSerializer<K, V> cacheLoader;
    descriptor: Lorg/apache/cassandra/cache/AutoSavingCache$CacheSerializer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/apache/cassandra/cache/AutoSavingCache$CacheSerializer<TK;TV;>;

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

  private static volatile org.apache.cassandra.cache.AutoSavingCache$IStreamFactory streamFactory;
    descriptor: Lorg/apache/cassandra/cache/AutoSavingCache$IStreamFactory;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 63
            ldc Lorg/apache/cassandra/cache/AutoSavingCache;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.cache.AutoSavingCache.logger:Lorg/slf4j/Logger;
         1: .line 66
            new org.cliffc.high_scale_lib.NonBlockingHashSet
            dup
            invokespecial org.cliffc.high_scale_lib.NonBlockingHashSet.<init>:()V
            putstatic org.apache.cassandra.cache.AutoSavingCache.flushInProgress:Ljava/util/Set;
         2: .line 86
            new org.apache.cassandra.cache.AutoSavingCache$1
            dup
            invokespecial org.apache.cassandra.cache.AutoSavingCache$1.<init>:()V
            putstatic org.apache.cassandra.cache.AutoSavingCache.streamFactory:Lorg/apache/cassandra/cache/AutoSavingCache$IStreamFactory;
         3: .line 102
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static void setStreamFactory(org.apache.cassandra.cache.AutoSavingCache$IStreamFactory);
    descriptor: (Lorg/apache/cassandra/cache/AutoSavingCache$IStreamFactory;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.cache.AutoSavingCache$IStreamFactory streamFactory
         0: .line 107
            aload 0 /* streamFactory */
            putstatic org.apache.cassandra.cache.AutoSavingCache.streamFactory:Lorg/apache/cassandra/cache/AutoSavingCache$IStreamFactory;
         1: .line 108
            return
        end local 0 // org.apache.cassandra.cache.AutoSavingCache$IStreamFactory streamFactory
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0  streamFactory  Lorg/apache/cassandra/cache/AutoSavingCache$IStreamFactory;
    MethodParameters:
               Name  Flags
      streamFactory  

  public void <init>(org.apache.cassandra.cache.ICache<K, V>, org.apache.cassandra.service.CacheService$CacheType, org.apache.cassandra.cache.AutoSavingCache$CacheSerializer<K, V>);
    descriptor: (Lorg/apache/cassandra/cache/ICache;Lorg/apache/cassandra/service/CacheService$CacheType;Lorg/apache/cassandra/cache/AutoSavingCache$CacheSerializer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
        start local 1 // org.apache.cassandra.cache.ICache cache
        start local 2 // org.apache.cassandra.service.CacheService$CacheType cacheType
        start local 3 // org.apache.cassandra.cache.AutoSavingCache$CacheSerializer cacheloader
         0: .line 112
            aload 0 /* this */
            aload 2 /* cacheType */
            invokevirtual org.apache.cassandra.service.CacheService$CacheType.toString:()Ljava/lang/String;
            aload 1 /* cache */
            invokespecial org.apache.cassandra.cache.InstrumentingCache.<init>:(Ljava/lang/String;Lorg/apache/cassandra/cache/ICache;)V
         1: .line 113
            aload 0 /* this */
            aload 2 /* cacheType */
            putfield org.apache.cassandra.cache.AutoSavingCache.cacheType:Lorg/apache/cassandra/service/CacheService$CacheType;
         2: .line 114
            aload 0 /* this */
            aload 3 /* cacheloader */
            putfield org.apache.cassandra.cache.AutoSavingCache.cacheLoader:Lorg/apache/cassandra/cache/AutoSavingCache$CacheSerializer;
         3: .line 115
            return
        end local 3 // org.apache.cassandra.cache.AutoSavingCache$CacheSerializer cacheloader
        end local 2 // org.apache.cassandra.service.CacheService$CacheType cacheType
        end local 1 // org.apache.cassandra.cache.ICache cache
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            0    4     1        cache  Lorg/apache/cassandra/cache/ICache<TK;TV;>;
            0    4     2    cacheType  Lorg/apache/cassandra/service/CacheService$CacheType;
            0    4     3  cacheloader  Lorg/apache/cassandra/cache/AutoSavingCache$CacheSerializer<TK;TV;>;
    Signature: (Lorg/apache/cassandra/cache/ICache<TK;TV;>;Lorg/apache/cassandra/service/CacheService$CacheType;Lorg/apache/cassandra/cache/AutoSavingCache$CacheSerializer<TK;TV;>;)V
    MethodParameters:
             Name  Flags
      cache        
      cacheType    
      cacheloader  

  public java.io.File getCacheDataPath(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
        start local 1 // java.lang.String version
         0: .line 119
            aload 0 /* this */
            getfield org.apache.cassandra.cache.AutoSavingCache.cacheType:Lorg/apache/cassandra/service/CacheService$CacheType;
            aload 1 /* version */
            ldc "db"
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getSerializedCachePath:(Lorg/apache/cassandra/service/CacheService$CacheType;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            areturn
        end local 1 // java.lang.String version
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            0    1     1  version  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      version  

  public java.io.File getCacheCrcPath(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
        start local 1 // java.lang.String version
         0: .line 124
            aload 0 /* this */
            getfield org.apache.cassandra.cache.AutoSavingCache.cacheType:Lorg/apache/cassandra/service/CacheService$CacheType;
            aload 1 /* version */
            ldc "crc"
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getSerializedCachePath:(Lorg/apache/cassandra/service/CacheService$CacheType;Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
            areturn
        end local 1 // java.lang.String version
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            0    1     1  version  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      version  

  public org.apache.cassandra.cache.AutoSavingCache<K, V>.Writer getWriter(int);
    descriptor: (I)Lorg/apache/cassandra/cache/AutoSavingCache$Writer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
        start local 1 // int keysToSave
         0: .line 129
            new org.apache.cassandra.cache.AutoSavingCache$Writer
            dup
            aload 0 /* this */
            iload 1 /* keysToSave */
            invokespecial org.apache.cassandra.cache.AutoSavingCache$Writer.<init>:(Lorg/apache/cassandra/cache/AutoSavingCache;I)V
            areturn
        end local 1 // int keysToSave
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            0    1     1  keysToSave  I
    Signature: (I)Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>.Writer;
    MethodParameters:
            Name  Flags
      keysToSave  

  public void scheduleSaving(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=4, args_size=3
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
        start local 1 // int savePeriodInSeconds
        start local 2 // int keysToSave
         0: .line 134
            aload 0 /* this */
            getfield org.apache.cassandra.cache.AutoSavingCache.saveTask:Ljava/util/concurrent/ScheduledFuture;
            ifnull 3
         1: .line 136
            aload 0 /* this */
            getfield org.apache.cassandra.cache.AutoSavingCache.saveTask:Ljava/util/concurrent/ScheduledFuture;
            iconst_0
            invokeinterface java.util.concurrent.ScheduledFuture.cancel:(Z)Z
            pop
         2: .line 137
            aload 0 /* this */
            aconst_null
            putfield org.apache.cassandra.cache.AutoSavingCache.saveTask:Ljava/util/concurrent/ScheduledFuture;
         3: .line 139
      StackMap locals:
      StackMap stack:
            iload 1 /* savePeriodInSeconds */
            ifle 10
         4: .line 141
            new org.apache.cassandra.cache.AutoSavingCache$2
            dup
            aload 0 /* this */
            iload 2 /* keysToSave */
            invokespecial org.apache.cassandra.cache.AutoSavingCache$2.<init>:(Lorg/apache/cassandra/cache/AutoSavingCache;I)V
            astore 3 /* runnable */
        start local 3 // java.lang.Runnable runnable
         5: .line 148
            aload 0 /* this */
            getstatic org.apache.cassandra.concurrent.ScheduledExecutors.optionalTasks:Lorg/apache/cassandra/concurrent/DebuggableScheduledThreadPoolExecutor;
            aload 3 /* runnable */
         6: .line 149
            iload 1 /* savePeriodInSeconds */
            i2l
         7: .line 150
            iload 1 /* savePeriodInSeconds */
            i2l
         8: .line 151
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
         9: .line 148
            invokevirtual org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor.scheduleWithFixedDelay:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            putfield org.apache.cassandra.cache.AutoSavingCache.saveTask:Ljava/util/concurrent/ScheduledFuture;
        end local 3 // java.lang.Runnable runnable
        10: .line 153
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int keysToSave
        end local 1 // int savePeriodInSeconds
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   11     0                 this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            0   11     1  savePeriodInSeconds  I
            0   11     2           keysToSave  I
            5   10     3             runnable  Ljava/lang/Runnable;
    MethodParameters:
                     Name  Flags
      savePeriodInSeconds  
      keysToSave           final

  public com.google.common.util.concurrent.ListenableFuture<java.lang.Integer> loadSavedAsync();
    descriptor: ()Lcom/google/common/util/concurrent/ListenableFuture;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
         0: .line 157
            invokestatic java.util.concurrent.Executors.newSingleThreadExecutor:()Ljava/util/concurrent/ExecutorService;
            invokestatic com.google.common.util.concurrent.MoreExecutors.listeningDecorator:(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/ListeningExecutorService;
            astore 1 /* es */
        start local 1 // com.google.common.util.concurrent.ListeningExecutorService es
         1: .line 158
            invokestatic java.lang.System.nanoTime:()J
            lstore 2 /* start */
        start local 2 // long start
         2: .line 160
            aload 1 /* es */
            new org.apache.cassandra.cache.AutoSavingCache$3
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.cache.AutoSavingCache$3.<init>:(Lorg/apache/cassandra/cache/AutoSavingCache;)V
            invokeinterface com.google.common.util.concurrent.ListeningExecutorService.submit:(Ljava/util/concurrent/Callable;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 4 /* cacheLoad */
        start local 4 // com.google.common.util.concurrent.ListenableFuture cacheLoad
         3: .line 168
            aload 4 /* cacheLoad */
            new org.apache.cassandra.cache.AutoSavingCache$4
            dup
            aload 0 /* this */
            lload 2 /* start */
            aload 1 /* es */
            invokespecial org.apache.cassandra.cache.AutoSavingCache$4.<init>:(Lorg/apache/cassandra/cache/AutoSavingCache;JLcom/google/common/util/concurrent/ListeningExecutorService;)V
         4: .line 180
            invokestatic com.google.common.util.concurrent.MoreExecutors.directExecutor:()Ljava/util/concurrent/Executor;
         5: .line 168
            invokeinterface com.google.common.util.concurrent.ListenableFuture.addListener:(Ljava/lang/Runnable;Ljava/util/concurrent/Executor;)V
         6: .line 182
            aload 4 /* cacheLoad */
            areturn
        end local 4 // com.google.common.util.concurrent.ListenableFuture cacheLoad
        end local 2 // long start
        end local 1 // com.google.common.util.concurrent.ListeningExecutorService es
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            1    7     1         es  Lcom/google/common/util/concurrent/ListeningExecutorService;
            2    7     2      start  J
            3    7     4  cacheLoad  Lcom/google/common/util/concurrent/ListenableFuture<Ljava/lang/Integer;>;
    Signature: ()Lcom/google/common/util/concurrent/ListenableFuture<Ljava/lang/Integer;>;

  public int loadSaved();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=16, args_size=1
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
         0: .line 187
            iconst_0
            istore 1 /* count */
        start local 1 // int count
         1: .line 188
            invokestatic java.lang.System.nanoTime:()J
            lstore 2 /* start */
        start local 2 // long start
         2: .line 191
            aload 0 /* this */
            ldc "e"
            invokevirtual org.apache.cassandra.cache.AutoSavingCache.getCacheDataPath:(Ljava/lang/String;)Ljava/io/File;
            astore 4 /* dataPath */
        start local 4 // java.io.File dataPath
         3: .line 192
            aload 0 /* this */
            ldc "e"
            invokevirtual org.apache.cassandra.cache.AutoSavingCache.getCacheCrcPath:(Ljava/lang/String;)Ljava/io/File;
            astore 5 /* crcPath */
        start local 5 // java.io.File crcPath
         4: .line 193
            aload 4 /* dataPath */
            invokevirtual java.io.File.exists:()Z
            ifeq 55
            aload 5 /* crcPath */
            invokevirtual java.io.File.exists:()Z
            ifeq 55
         5: .line 195
            aconst_null
            astore 6 /* in */
        start local 6 // org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus in
         6: .line 198
            getstatic org.apache.cassandra.cache.AutoSavingCache.logger:Lorg/slf4j/Logger;
            ldc "reading saved cache {}"
            aload 4 /* dataPath */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
         7: .line 199
            new org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus
            dup
            new org.apache.cassandra.io.util.LengthAvailableInputStream
            dup
            new java.io.BufferedInputStream
            dup
            getstatic org.apache.cassandra.cache.AutoSavingCache.streamFactory:Lorg/apache/cassandra/cache/AutoSavingCache$IStreamFactory;
            aload 4 /* dataPath */
            aload 5 /* crcPath */
            invokeinterface org.apache.cassandra.cache.AutoSavingCache$IStreamFactory.getInputStream:(Ljava/io/File;Ljava/io/File;)Ljava/io/InputStream;
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            aload 4 /* dataPath */
            invokevirtual java.io.File.length:()J
            invokespecial org.apache.cassandra.io.util.LengthAvailableInputStream.<init>:(Ljava/io/InputStream;J)V
            invokespecial org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus.<init>:(Ljava/io/InputStream;)V
            astore 6 /* in */
         8: .line 202
            new java.util.UUID
            dup
            aload 6 /* in */
            invokevirtual org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus.readLong:()J
            aload 6 /* in */
            invokevirtual org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus.readLong:()J
            invokespecial java.util.UUID.<init>:(JJ)V
            astore 7 /* schemaVersion */
        start local 7 // java.util.UUID schemaVersion
         9: .line 203
            aload 7 /* schemaVersion */
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            invokevirtual org.apache.cassandra.config.Schema.getVersion:()Ljava/util/UUID;
            invokevirtual java.util.UUID.equals:(Ljava/lang/Object;)Z
            ifne 15
        10: .line 204
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cache schema version "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 205
            aload 7 /* schemaVersion */
            invokevirtual java.util.UUID.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 206
            ldc " does not match current schema version "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        13: .line 207
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            invokevirtual org.apache.cassandra.config.Schema.getVersion:()Ljava/util/UUID;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 204
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 209
      StackMap locals: org.apache.cassandra.cache.AutoSavingCache int long java.io.File java.io.File org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus java.util.UUID
      StackMap stack:
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            astore 8 /* futures */
        start local 8 // java.util.ArrayDeque futures
        16: .line 210
            goto 35
        17: .line 215
      StackMap locals: java.util.ArrayDeque
      StackMap stack:
            aload 6 /* in */
            invokevirtual org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus.readUTF:()Ljava/lang/String;
            astore 9 /* ksname */
        start local 9 // java.lang.String ksname
        18: .line 216
            aload 6 /* in */
            invokevirtual org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus.readUTF:()Ljava/lang/String;
            astore 10 /* cfname */
        start local 10 // java.lang.String cfname
        19: .line 218
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 9 /* ksname */
            aload 10 /* cfname */
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            invokevirtual org.apache.cassandra.config.Schema.getColumnFamilyStoreIncludingIndexes:(Lorg/apache/cassandra/utils/Pair;)Lorg/apache/cassandra/db/ColumnFamilyStore;
            astore 11 /* cfs */
        start local 11 // org.apache.cassandra.db.ColumnFamilyStore cfs
        20: .line 220
            aload 0 /* this */
            getfield org.apache.cassandra.cache.AutoSavingCache.cacheLoader:Lorg/apache/cassandra/cache/AutoSavingCache$CacheSerializer;
            aload 6 /* in */
            aload 11 /* cfs */
            invokeinterface org.apache.cassandra.cache.AutoSavingCache$CacheSerializer.deserialize:(Lorg/apache/cassandra/io/util/DataInputPlus;Lorg/apache/cassandra/db/ColumnFamilyStore;)Ljava/util/concurrent/Future;
            astore 12 /* entryFuture */
        start local 12 // java.util.concurrent.Future entryFuture
        21: .line 222
            aload 12 /* entryFuture */
            ifnonnull 23
        22: .line 223
            goto 35
        23: .line 225
      StackMap locals: org.apache.cassandra.cache.AutoSavingCache int long java.io.File java.io.File org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus java.util.UUID java.util.ArrayDeque java.lang.String java.lang.String org.apache.cassandra.db.ColumnFamilyStore java.util.concurrent.Future
      StackMap stack:
            aload 8 /* futures */
            aload 12 /* entryFuture */
            invokevirtual java.util.ArrayDeque.offer:(Ljava/lang/Object;)Z
            pop
        24: .line 226
            iinc 1 /* count */ 1
        25: .line 234
            goto 30
        26: .line 236
      StackMap locals:
      StackMap stack:
            aload 8 /* futures */
            invokevirtual java.util.ArrayDeque.poll:()Ljava/lang/Object;
            checkcast java.util.concurrent.Future
            astore 13 /* future */
        start local 13 // java.util.concurrent.Future future
        27: .line 237
            aload 13 /* future */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.Pair
            astore 14 /* entry */
        start local 14 // org.apache.cassandra.utils.Pair entry
        28: .line 238
            aload 14 /* entry */
            ifnull 30
            aload 14 /* entry */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            ifnull 30
        29: .line 239
            aload 0 /* this */
            aload 14 /* entry */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast org.apache.cassandra.cache.CacheKey
            aload 14 /* entry */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            invokevirtual org.apache.cassandra.cache.AutoSavingCache.put:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 14 // org.apache.cassandra.utils.Pair entry
        end local 13 // java.util.concurrent.Future future
        30: .line 234
      StackMap locals:
      StackMap stack:
            aload 8 /* futures */
            invokevirtual java.util.ArrayDeque.peek:()Ljava/lang/Object;
            ifnull 31
            aload 8 /* futures */
            invokevirtual java.util.ArrayDeque.peek:()Ljava/lang/Object;
            checkcast java.util.concurrent.Future
            invokeinterface java.util.concurrent.Future.isDone:()Z
            ifne 26
        31: .line 242
      StackMap locals:
      StackMap stack:
            aload 8 /* futures */
            invokevirtual java.util.ArrayDeque.size:()I
            sipush 1000
            if_icmple 33
        32: .line 243
            invokestatic java.lang.Thread.yield:()V
        33: .line 244
      StackMap locals:
      StackMap stack:
            aload 8 /* futures */
            invokevirtual java.util.ArrayDeque.size:()I
            sipush 1000
        34: .line 232
            if_icmpgt 30
        end local 12 // java.util.concurrent.Future entryFuture
        end local 11 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 10 // java.lang.String cfname
        end local 9 // java.lang.String ksname
        35: .line 210
      StackMap locals: org.apache.cassandra.cache.AutoSavingCache int long java.io.File java.io.File org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus java.util.UUID java.util.ArrayDeque
      StackMap stack:
            aload 6 /* in */
            invokevirtual org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus.available:()I
            ifgt 17
        36: .line 247
            aconst_null
            astore 9 /* future */
        start local 9 // java.util.concurrent.Future future
        37: .line 248
            goto 41
        38: .line 250
      StackMap locals: java.util.concurrent.Future
      StackMap stack:
            aload 9 /* future */
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.Pair
            astore 10 /* entry */
        start local 10 // org.apache.cassandra.utils.Pair entry
        39: .line 251
            aload 10 /* entry */
            ifnull 41
            aload 10 /* entry */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            ifnull 41
        40: .line 252
            aload 0 /* this */
            aload 10 /* entry */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast org.apache.cassandra.cache.CacheKey
            aload 10 /* entry */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            invokevirtual org.apache.cassandra.cache.AutoSavingCache.put:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 10 // org.apache.cassandra.utils.Pair entry
        41: .line 248
      StackMap locals:
      StackMap stack:
            aload 8 /* futures */
            invokevirtual java.util.ArrayDeque.poll:()Ljava/lang/Object;
            checkcast java.util.concurrent.Future
            dup
            astore 9 /* future */
            ifnonnull 38
        end local 9 // java.util.concurrent.Future future
        end local 8 // java.util.ArrayDeque futures
        end local 7 // java.util.UUID schemaVersion
        42: .line 254
            goto 54
        43: .line 255
      StackMap locals: org.apache.cassandra.cache.AutoSavingCache int long java.io.File java.io.File org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus
      StackMap stack: org.apache.cassandra.io.util.CorruptFileException
            astore 7 /* e */
        start local 7 // org.apache.cassandra.io.util.CorruptFileException e
        44: .line 257
            aload 7 /* e */
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable:(Ljava/lang/Throwable;)V
        45: .line 258
            getstatic org.apache.cassandra.cache.AutoSavingCache.logger:Lorg/slf4j/Logger;
            ldc "Non-fatal checksum error reading saved cache %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* dataPath */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 7 /* e */
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 7 // org.apache.cassandra.io.util.CorruptFileException e
        46: .line 267
            aload 6 /* in */
            invokestatic org.apache.cassandra.io.util.FileUtils.closeQuietly:(Ljava/io/Closeable;)V
            goto 55
        47: .line 260
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 7 /* t */
        start local 7 // java.lang.Throwable t
        48: .line 262
            aload 7 /* t */
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable:(Ljava/lang/Throwable;)V
        49: .line 263
            getstatic org.apache.cassandra.cache.AutoSavingCache.logger:Lorg/slf4j/Logger;
            ldc "Harmless error reading saved cache %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* dataPath */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 7 /* t */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 7 // java.lang.Throwable t
        50: .line 267
            aload 6 /* in */
            invokestatic org.apache.cassandra.io.util.FileUtils.closeQuietly:(Ljava/io/Closeable;)V
            goto 55
        51: .line 266
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 15
        52: .line 267
            aload 6 /* in */
            invokestatic org.apache.cassandra.io.util.FileUtils.closeQuietly:(Ljava/io/Closeable;)V
        53: .line 268
            aload 15
            athrow
        54: .line 267
      StackMap locals:
      StackMap stack:
            aload 6 /* in */
            invokestatic org.apache.cassandra.io.util.FileUtils.closeQuietly:(Ljava/io/Closeable;)V
        end local 6 // org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus in
        55: .line 270
      StackMap locals:
      StackMap stack:
            getstatic org.apache.cassandra.cache.AutoSavingCache.logger:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isTraceEnabled:()Z
            ifeq 59
        56: .line 271
            getstatic org.apache.cassandra.cache.AutoSavingCache.logger:Lorg/slf4j/Logger;
            ldc "completed reading ({} ms; {} keys) saved cache {}"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
        57: .line 272
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic java.lang.System.nanoTime:()J
            lload 2 /* start */
            lsub
            invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            iload 1 /* count */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 4 /* dataPath */
            aastore
        58: .line 271
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;[Ljava/lang/Object;)V
        59: .line 273
      StackMap locals:
      StackMap stack:
            iload 1 /* count */
            ireturn
        end local 5 // java.io.File crcPath
        end local 4 // java.io.File dataPath
        end local 2 // long start
        end local 1 // int count
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   60     0           this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            1   60     1          count  I
            2   60     2          start  J
            3   60     4       dataPath  Ljava/io/File;
            4   60     5        crcPath  Ljava/io/File;
            6   55     6             in  Lorg/apache/cassandra/io/util/DataInputPlus$DataInputStreamPlus;
            9   42     7  schemaVersion  Ljava/util/UUID;
           16   42     8        futures  Ljava/util/ArrayDeque<Ljava/util/concurrent/Future<Lorg/apache/cassandra/utils/Pair<TK;TV;>;>;>;
           18   35     9         ksname  Ljava/lang/String;
           19   35    10         cfname  Ljava/lang/String;
           20   35    11            cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
           21   35    12    entryFuture  Ljava/util/concurrent/Future<Lorg/apache/cassandra/utils/Pair<TK;TV;>;>;
           27   30    13         future  Ljava/util/concurrent/Future<Lorg/apache/cassandra/utils/Pair<TK;TV;>;>;
           28   30    14          entry  Lorg/apache/cassandra/utils/Pair<TK;TV;>;
           37   42     9         future  Ljava/util/concurrent/Future<Lorg/apache/cassandra/utils/Pair<TK;TV;>;>;
           39   41    10          entry  Lorg/apache/cassandra/utils/Pair<TK;TV;>;
           44   46     7              e  Lorg/apache/cassandra/io/util/CorruptFileException;
           48   50     7              t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           6    42      43  Class org.apache.cassandra.io.util.CorruptFileException
           6    42      47  Class java.lang.Throwable
           6    46      51  any
          47    50      51  any

  public java.util.concurrent.Future<?> submitWrite(int);
    descriptor: (I)Ljava/util/concurrent/Future;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.cache.AutoSavingCache this
        start local 1 // int keysToSave
         0: .line 278
            getstatic org.apache.cassandra.db.compaction.CompactionManager.instance:Lorg/apache/cassandra/db/compaction/CompactionManager;
            aload 0 /* this */
            iload 1 /* keysToSave */
            invokevirtual org.apache.cassandra.cache.AutoSavingCache.getWriter:(I)Lorg/apache/cassandra/cache/AutoSavingCache$Writer;
            invokevirtual org.apache.cassandra.db.compaction.CompactionManager.submitCacheWrite:(Lorg/apache/cassandra/cache/AutoSavingCache$Writer;)Ljava/util/concurrent/Future;
            areturn
        end local 1 // int keysToSave
        end local 0 // org.apache.cassandra.cache.AutoSavingCache this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lorg/apache/cassandra/cache/AutoSavingCache<TK;TV;>;
            0    1     1  keysToSave  I
    Signature: (I)Ljava/util/concurrent/Future<*>;
    MethodParameters:
            Name  Flags
      keysToSave  
}
Signature: <K:Lorg/apache/cassandra/cache/CacheKey;V:Ljava/lang/Object;>Lorg/apache/cassandra/cache/InstrumentingCache<TK;TV;>;
SourceFile: "AutoSavingCache.java"
NestMembers:
  org.apache.cassandra.cache.AutoSavingCache$1  org.apache.cassandra.cache.AutoSavingCache$2  org.apache.cassandra.cache.AutoSavingCache$3  org.apache.cassandra.cache.AutoSavingCache$4  org.apache.cassandra.cache.AutoSavingCache$CacheSerializer  org.apache.cassandra.cache.AutoSavingCache$IStreamFactory  org.apache.cassandra.cache.AutoSavingCache$Writer
InnerClasses:
  org.apache.cassandra.cache.AutoSavingCache$1
  org.apache.cassandra.cache.AutoSavingCache$2
  org.apache.cassandra.cache.AutoSavingCache$3
  org.apache.cassandra.cache.AutoSavingCache$4
  public abstract CacheSerializer = org.apache.cassandra.cache.AutoSavingCache$CacheSerializer of org.apache.cassandra.cache.AutoSavingCache
  public abstract IStreamFactory = org.apache.cassandra.cache.AutoSavingCache$IStreamFactory of org.apache.cassandra.cache.AutoSavingCache
  public Writer = org.apache.cassandra.cache.AutoSavingCache$Writer of org.apache.cassandra.cache.AutoSavingCache
  public DataInputStreamPlus = org.apache.cassandra.io.util.DataInputPlus$DataInputStreamPlus of org.apache.cassandra.io.util.DataInputPlus
  public final CacheType = org.apache.cassandra.service.CacheService$CacheType of org.apache.cassandra.service.CacheService