public class org.ehcache.impl.internal.store.offheap.OffHeapStore<K, V> extends org.ehcache.impl.internal.store.offheap.AbstractOffHeapStore<K, V>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.ehcache.impl.internal.store.offheap.OffHeapStore
  super_class: org.ehcache.impl.internal.store.offheap.AbstractOffHeapStore
{
  private final org.ehcache.impl.internal.store.offheap.SwitchableEvictionAdvisor<K, org.ehcache.impl.internal.store.offheap.OffHeapValueHolder<V>> evictionAdvisor;
    descriptor: Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;

  private final org.ehcache.spi.serialization.Serializer<K> keySerializer;
    descriptor: Lorg/ehcache/spi/serialization/Serializer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/ehcache/spi/serialization/Serializer<TK;>;

  private final org.ehcache.spi.serialization.Serializer<V> valueSerializer;
    descriptor: Lorg/ehcache/spi/serialization/Serializer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/ehcache/spi/serialization/Serializer<TV;>;

  private final long sizeInBytes;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private volatile org.ehcache.impl.internal.store.offheap.EhcacheConcurrentOffHeapClockCache<K, org.ehcache.impl.internal.store.offheap.OffHeapValueHolder<V>> map;
    descriptor: Lorg/ehcache/impl/internal/store/offheap/EhcacheConcurrentOffHeapClockCache;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: Lorg/ehcache/impl/internal/store/offheap/EhcacheConcurrentOffHeapClockCache<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;

  public void <init>(org.ehcache.core.spi.store.Store$Configuration<K, V>, org.ehcache.core.spi.time.TimeSource, org.ehcache.core.events.StoreEventDispatcher<K, V>, long, org.ehcache.core.spi.service.StatisticsService);
    descriptor: (Lorg/ehcache/core/spi/store/Store$Configuration;Lorg/ehcache/core/spi/time/TimeSource;Lorg/ehcache/core/events/StoreEventDispatcher;JLorg/ehcache/core/spi/service/StatisticsService;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=6
        start local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
        start local 1 // org.ehcache.core.spi.store.Store$Configuration config
        start local 2 // org.ehcache.core.spi.time.TimeSource timeSource
        start local 3 // org.ehcache.core.events.StoreEventDispatcher eventDispatcher
        start local 4 // long sizeInBytes
        start local 6 // org.ehcache.core.spi.service.StatisticsService statisticsService
         0: .line 79
            aload 0 /* this */
            aload 1 /* config */
            aload 2 /* timeSource */
            aload 3 /* eventDispatcher */
            aload 6 /* statisticsService */
            invokespecial org.ehcache.impl.internal.store.offheap.AbstractOffHeapStore.<init>:(Lorg/ehcache/core/spi/store/Store$Configuration;Lorg/ehcache/core/spi/time/TimeSource;Lorg/ehcache/core/events/StoreEventDispatcher;Lorg/ehcache/core/spi/service/StatisticsService;)V
         1: .line 80
            aload 1 /* config */
            invokeinterface org.ehcache.core.spi.store.Store$Configuration.getEvictionAdvisor:()Lorg/ehcache/config/EvictionAdvisor;
            astore 7 /* evictionAdvisor */
        start local 7 // org.ehcache.config.EvictionAdvisor evictionAdvisor
         2: .line 81
            aload 7 /* evictionAdvisor */
            ifnull 5
         3: .line 82
            aload 0 /* this */
            aload 7 /* evictionAdvisor */
            invokestatic org.ehcache.impl.internal.store.offheap.OffHeapStore.wrap:(Lorg/ehcache/config/EvictionAdvisor;)Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;
            putfield org.ehcache.impl.internal.store.offheap.OffHeapStore.evictionAdvisor:Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;
         4: .line 83
            goto 6
         5: .line 84
      StackMap locals: org.ehcache.impl.internal.store.offheap.OffHeapStore org.ehcache.core.spi.store.Store$Configuration org.ehcache.core.spi.time.TimeSource org.ehcache.core.events.StoreEventDispatcher long org.ehcache.core.spi.service.StatisticsService org.ehcache.config.EvictionAdvisor
      StackMap stack:
            aload 0 /* this */
            invokestatic org.ehcache.config.Eviction.noAdvice:()Lorg/ehcache/config/EvictionAdvisor;
            invokestatic org.ehcache.impl.internal.store.offheap.OffHeapStore.wrap:(Lorg/ehcache/config/EvictionAdvisor;)Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;
            putfield org.ehcache.impl.internal.store.offheap.OffHeapStore.evictionAdvisor:Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;
         6: .line 86
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* config */
            invokeinterface org.ehcache.core.spi.store.Store$Configuration.getKeySerializer:()Lorg/ehcache/spi/serialization/Serializer;
            putfield org.ehcache.impl.internal.store.offheap.OffHeapStore.keySerializer:Lorg/ehcache/spi/serialization/Serializer;
         7: .line 87
            aload 0 /* this */
            aload 1 /* config */
            invokeinterface org.ehcache.core.spi.store.Store$Configuration.getValueSerializer:()Lorg/ehcache/spi/serialization/Serializer;
            putfield org.ehcache.impl.internal.store.offheap.OffHeapStore.valueSerializer:Lorg/ehcache/spi/serialization/Serializer;
         8: .line 88
            aload 0 /* this */
            lload 4 /* sizeInBytes */
            putfield org.ehcache.impl.internal.store.offheap.OffHeapStore.sizeInBytes:J
         9: .line 89
            return
        end local 7 // org.ehcache.config.EvictionAdvisor evictionAdvisor
        end local 6 // org.ehcache.core.spi.service.StatisticsService statisticsService
        end local 4 // long sizeInBytes
        end local 3 // org.ehcache.core.events.StoreEventDispatcher eventDispatcher
        end local 2 // org.ehcache.core.spi.time.TimeSource timeSource
        end local 1 // org.ehcache.core.spi.store.Store$Configuration config
        end local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   10     0               this  Lorg/ehcache/impl/internal/store/offheap/OffHeapStore<TK;TV;>;
            0   10     1             config  Lorg/ehcache/core/spi/store/Store$Configuration<TK;TV;>;
            0   10     2         timeSource  Lorg/ehcache/core/spi/time/TimeSource;
            0   10     3    eventDispatcher  Lorg/ehcache/core/events/StoreEventDispatcher<TK;TV;>;
            0   10     4        sizeInBytes  J
            0   10     6  statisticsService  Lorg/ehcache/core/spi/service/StatisticsService;
            2   10     7    evictionAdvisor  Lorg/ehcache/config/EvictionAdvisor<-TK;-TV;>;
    Signature: (Lorg/ehcache/core/spi/store/Store$Configuration<TK;TV;>;Lorg/ehcache/core/spi/time/TimeSource;Lorg/ehcache/core/events/StoreEventDispatcher<TK;TV;>;JLorg/ehcache/core/spi/service/StatisticsService;)V
    MethodParameters:
                   Name  Flags
      config             final
      timeSource         
      eventDispatcher    
      sizeInBytes        
      statisticsService  

  protected java.lang.String getStatisticsTag();
    descriptor: ()Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
         0: .line 93
            ldc "OffHeap"
            areturn
        end local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/ehcache/impl/internal/store/offheap/OffHeapStore<TK;TV;>;

  public java.util.List<org.ehcache.core.CacheConfigurationChangeListener> getConfigurationChangeListeners();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
         0: .line 98
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
        end local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/ehcache/impl/internal/store/offheap/OffHeapStore<TK;TV;>;
    Signature: ()Ljava/util/List<Lorg/ehcache/core/CacheConfigurationChangeListener;>;

  private org.ehcache.impl.internal.store.offheap.EhcacheConcurrentOffHeapClockCache<K, org.ehcache.impl.internal.store.offheap.OffHeapValueHolder<V>> createBackingMap(long, org.ehcache.spi.serialization.Serializer<K>, org.ehcache.spi.serialization.Serializer<V>, org.ehcache.impl.internal.store.offheap.SwitchableEvictionAdvisor<K, org.ehcache.impl.internal.store.offheap.OffHeapValueHolder<V>>);
    descriptor: (JLorg/ehcache/spi/serialization/Serializer;Lorg/ehcache/spi/serialization/Serializer;Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;)Lorg/ehcache/impl/internal/store/offheap/EhcacheConcurrentOffHeapClockCache;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=12, args_size=5
        start local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
        start local 1 // long size
        start local 3 // org.ehcache.spi.serialization.Serializer keySerializer
        start local 4 // org.ehcache.spi.serialization.Serializer valueSerializer
        start local 5 // org.ehcache.impl.internal.store.offheap.SwitchableEvictionAdvisor evictionAdvisor
         0: .line 102
            new org.ehcache.impl.internal.store.offheap.HeuristicConfiguration
            dup
            lload 1 /* size */
            invokespecial org.ehcache.impl.internal.store.offheap.HeuristicConfiguration.<init>:(J)V
            astore 6 /* config */
        start local 6 // org.ehcache.impl.internal.store.offheap.HeuristicConfiguration config
         1: .line 103
            new org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource
            dup
            invokestatic org.ehcache.impl.internal.store.offheap.OffHeapStoreUtils.getBufferSource:()Lorg/terracotta/offheapstore/buffersource/BufferSource;
            aload 6 /* config */
            invokevirtual org.ehcache.impl.internal.store.offheap.HeuristicConfiguration.getMaximumSize:()J
            aload 6 /* config */
            invokevirtual org.ehcache.impl.internal.store.offheap.HeuristicConfiguration.getMaximumChunkSize:()I
            aload 6 /* config */
            invokevirtual org.ehcache.impl.internal.store.offheap.HeuristicConfiguration.getMinimumChunkSize:()I
            invokespecial org.terracotta.offheapstore.paging.UpfrontAllocatingPageSource.<init>:(Lorg/terracotta/offheapstore/buffersource/BufferSource;JII)V
            astore 7 /* source */
        start local 7 // org.terracotta.offheapstore.paging.PageSource source
         2: .line 104
            new org.ehcache.impl.internal.store.offheap.portability.SerializerPortability
            dup
            aload 3 /* keySerializer */
            invokespecial org.ehcache.impl.internal.store.offheap.portability.SerializerPortability.<init>:(Lorg/ehcache/spi/serialization/Serializer;)V
            astore 8 /* keyPortability */
        start local 8 // org.terracotta.offheapstore.storage.portability.Portability keyPortability
         3: .line 105
            aload 0 /* this */
            aload 4 /* valueSerializer */
            invokevirtual org.ehcache.impl.internal.store.offheap.OffHeapStore.createValuePortability:(Lorg/ehcache/spi/serialization/Serializer;)Lorg/ehcache/impl/internal/store/offheap/portability/OffHeapValueHolderPortability;
            astore 9 /* valuePortability */
        start local 9 // org.terracotta.offheapstore.storage.portability.Portability valuePortability
         4: .line 106
            getstatic org.terracotta.offheapstore.storage.PointerSize.INT:Lorg/terracotta/offheapstore/storage/PointerSize;
            aload 7 /* source */
            aload 6 /* config */
         5: .line 107
            invokevirtual org.ehcache.impl.internal.store.offheap.HeuristicConfiguration.getSegmentDataPageSize:()I
            aload 8 /* keyPortability */
            aload 9 /* valuePortability */
            iconst_0
            iconst_1
         6: .line 106
            invokestatic org.terracotta.offheapstore.storage.OffHeapBufferStorageEngine.createFactory:(Lorg/terracotta/offheapstore/storage/PointerSize;Lorg/terracotta/offheapstore/paging/PageSource;ILorg/terracotta/offheapstore/storage/portability/Portability;Lorg/terracotta/offheapstore/storage/portability/Portability;ZZ)Lorg/terracotta/offheapstore/util/Factory;
            astore 10 /* storageEngineFactory */
        start local 10 // org.terracotta.offheapstore.util.Factory storageEngineFactory
         7: .line 109
            new org.ehcache.impl.internal.store.offheap.factories.EhcacheSegmentFactory
            dup
         8: .line 110
            aload 7 /* source */
         9: .line 111
            aload 10 /* storageEngineFactory */
        10: .line 112
            aload 6 /* config */
            invokevirtual org.ehcache.impl.internal.store.offheap.HeuristicConfiguration.getInitialSegmentTableSize:()I
        11: .line 113
            aload 5 /* evictionAdvisor */
        12: .line 114
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.OffHeapStore.mapEvictionListener:Lorg/ehcache/impl/internal/store/offheap/AbstractOffHeapStore$BackingMapEvictionListener;
        13: .line 109
            invokespecial org.ehcache.impl.internal.store.offheap.factories.EhcacheSegmentFactory.<init>:(Lorg/terracotta/offheapstore/paging/PageSource;Lorg/terracotta/offheapstore/util/Factory;ILorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;Lorg/ehcache/impl/internal/store/offheap/factories/EhcacheSegmentFactory$EhcacheSegment$EvictionListener;)V
            astore 11 /* segmentFactory */
        start local 11 // org.terracotta.offheapstore.util.Factory segmentFactory
        14: .line 115
            new org.ehcache.impl.internal.store.offheap.EhcacheConcurrentOffHeapClockCache
            dup
            aload 5 /* evictionAdvisor */
            aload 11 /* segmentFactory */
            aload 6 /* config */
            invokevirtual org.ehcache.impl.internal.store.offheap.HeuristicConfiguration.getConcurrency:()I
            invokespecial org.ehcache.impl.internal.store.offheap.EhcacheConcurrentOffHeapClockCache.<init>:(Lorg/ehcache/config/EvictionAdvisor;Lorg/terracotta/offheapstore/util/Factory;I)V
            areturn
        end local 11 // org.terracotta.offheapstore.util.Factory segmentFactory
        end local 10 // org.terracotta.offheapstore.util.Factory storageEngineFactory
        end local 9 // org.terracotta.offheapstore.storage.portability.Portability valuePortability
        end local 8 // org.terracotta.offheapstore.storage.portability.Portability keyPortability
        end local 7 // org.terracotta.offheapstore.paging.PageSource source
        end local 6 // org.ehcache.impl.internal.store.offheap.HeuristicConfiguration config
        end local 5 // org.ehcache.impl.internal.store.offheap.SwitchableEvictionAdvisor evictionAdvisor
        end local 4 // org.ehcache.spi.serialization.Serializer valueSerializer
        end local 3 // org.ehcache.spi.serialization.Serializer keySerializer
        end local 1 // long size
        end local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   15     0                  this  Lorg/ehcache/impl/internal/store/offheap/OffHeapStore<TK;TV;>;
            0   15     1                  size  J
            0   15     3         keySerializer  Lorg/ehcache/spi/serialization/Serializer<TK;>;
            0   15     4       valueSerializer  Lorg/ehcache/spi/serialization/Serializer<TV;>;
            0   15     5       evictionAdvisor  Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;
            1   15     6                config  Lorg/ehcache/impl/internal/store/offheap/HeuristicConfiguration;
            2   15     7                source  Lorg/terracotta/offheapstore/paging/PageSource;
            3   15     8        keyPortability  Lorg/terracotta/offheapstore/storage/portability/Portability<TK;>;
            4   15     9      valuePortability  Lorg/terracotta/offheapstore/storage/portability/Portability<Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;
            7   15    10  storageEngineFactory  Lorg/terracotta/offheapstore/util/Factory<Lorg/terracotta/offheapstore/storage/OffHeapBufferStorageEngine<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;>;
           14   15    11        segmentFactory  Lorg/terracotta/offheapstore/util/Factory<+Lorg/terracotta/offheapstore/pinning/PinnableSegment<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;>;
    Signature: (JLorg/ehcache/spi/serialization/Serializer<TK;>;Lorg/ehcache/spi/serialization/Serializer<TV;>;Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;)Lorg/ehcache/impl/internal/store/offheap/EhcacheConcurrentOffHeapClockCache<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;
    MethodParameters:
                 Name  Flags
      size             
      keySerializer    
      valueSerializer  
      evictionAdvisor  

  protected org.ehcache.impl.internal.store.offheap.EhcacheOffHeapBackingMap<K, org.ehcache.impl.internal.store.offheap.OffHeapValueHolder<V>> backingMap();
    descriptor: ()Lorg/ehcache/impl/internal/store/offheap/EhcacheOffHeapBackingMap;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
         0: .line 121
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.OffHeapStore.map:Lorg/ehcache/impl/internal/store/offheap/EhcacheConcurrentOffHeapClockCache;
            areturn
        end local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/ehcache/impl/internal/store/offheap/OffHeapStore<TK;TV;>;
    Signature: ()Lorg/ehcache/impl/internal/store/offheap/EhcacheOffHeapBackingMap<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;

  protected org.ehcache.impl.internal.store.offheap.SwitchableEvictionAdvisor<K, org.ehcache.impl.internal.store.offheap.OffHeapValueHolder<V>> evictionAdvisor();
    descriptor: ()Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
         0: .line 126
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.OffHeapStore.evictionAdvisor:Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor;
            areturn
        end local 0 // org.ehcache.impl.internal.store.offheap.OffHeapStore this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/ehcache/impl/internal/store/offheap/OffHeapStore<TK;TV;>;
    Signature: ()Lorg/ehcache/impl/internal/store/offheap/SwitchableEvictionAdvisor<TK;Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;>;
}
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Lorg/ehcache/impl/internal/store/offheap/AbstractOffHeapStore<TK;TV;>;
SourceFile: "OffHeapStore.java"
NestMembers:
  org.ehcache.impl.internal.store.offheap.OffHeapStore$Provider
InnerClasses:
  public abstract Configuration = org.ehcache.core.spi.store.Store$Configuration of org.ehcache.core.spi.store.Store
  public Provider = org.ehcache.impl.internal.store.offheap.OffHeapStore$Provider of org.ehcache.impl.internal.store.offheap.OffHeapStore
  public EhcacheSegment = org.ehcache.impl.internal.store.offheap.factories.EhcacheSegmentFactory$EhcacheSegment of org.ehcache.impl.internal.store.offheap.factories.EhcacheSegmentFactory
  public abstract EvictionListener = org.ehcache.impl.internal.store.offheap.factories.EhcacheSegmentFactory$EhcacheSegment$EvictionListener of org.ehcache.impl.internal.store.offheap.factories.EhcacheSegmentFactory$EhcacheSegment