public class org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder<V> extends org.ehcache.impl.internal.store.offheap.OffHeapValueHolder<V> implements org.ehcache.impl.internal.store.BinaryValueHolder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder
  super_class: org.ehcache.impl.internal.store.offheap.OffHeapValueHolder
{
  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 org.terracotta.offheapstore.storage.portability.WriteContext writeContext;
    descriptor: Lorg/terracotta/offheapstore/storage/portability/WriteContext;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder$Mode mode;
    descriptor: Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;

  private java.nio.ByteBuffer binaryValue;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private V value;
    descriptor: Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Signature: TV;

  public void <init>(long, java.nio.ByteBuffer, org.ehcache.spi.serialization.Serializer<V>, long, long, long, org.terracotta.offheapstore.storage.portability.WriteContext);
    descriptor: (JLjava/nio/ByteBuffer;Lorg/ehcache/spi/serialization/Serializer;JJJLorg/terracotta/offheapstore/storage/portability/WriteContext;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=12, args_size=8
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
        start local 1 // long id
        start local 3 // java.nio.ByteBuffer binaryValue
        start local 4 // org.ehcache.spi.serialization.Serializer serializer
        start local 5 // long creationTime
        start local 7 // long expireTime
        start local 9 // long lastAccessTime
        start local 11 // org.terracotta.offheapstore.storage.portability.WriteContext writeContext
         0: .line 40
            aload 0 /* this */
            lload 1 /* id */
            lload 5 /* creationTime */
            lload 7 /* expireTime */
            invokespecial org.ehcache.impl.internal.store.offheap.OffHeapValueHolder.<init>:(JJJ)V
         1: .line 41
            aload 0 /* this */
            lload 9 /* lastAccessTime */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.setLastAccessTime:(J)V
         2: .line 42
            aload 0 /* this */
            aload 3 /* binaryValue */
            putfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.binaryValue:Ljava/nio/ByteBuffer;
         3: .line 43
            aload 0 /* this */
            aload 4 /* serializer */
            putfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.valueSerializer:Lorg/ehcache/spi/serialization/Serializer;
         4: .line 44
            aload 0 /* this */
            aload 11 /* writeContext */
            putfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.writeContext:Lorg/terracotta/offheapstore/storage/portability/WriteContext;
         5: .line 45
            aload 0 /* this */
            getstatic org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder$Mode.ATTACHED:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
            putfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.mode:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
         6: .line 46
            return
        end local 11 // org.terracotta.offheapstore.storage.portability.WriteContext writeContext
        end local 9 // long lastAccessTime
        end local 7 // long expireTime
        end local 5 // long creationTime
        end local 4 // org.ehcache.spi.serialization.Serializer serializer
        end local 3 // java.nio.ByteBuffer binaryValue
        end local 1 // long id
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;
            0    7     1              id  J
            0    7     3     binaryValue  Ljava/nio/ByteBuffer;
            0    7     4      serializer  Lorg/ehcache/spi/serialization/Serializer<TV;>;
            0    7     5    creationTime  J
            0    7     7      expireTime  J
            0    7     9  lastAccessTime  J
            0    7    11    writeContext  Lorg/terracotta/offheapstore/storage/portability/WriteContext;
    Signature: (JLjava/nio/ByteBuffer;Lorg/ehcache/spi/serialization/Serializer<TV;>;JJJLorg/terracotta/offheapstore/storage/portability/WriteContext;)V
    MethodParameters:
                Name  Flags
      id              
      binaryValue     
      serializer      
      creationTime    
      expireTime      
      lastAccessTime  
      writeContext    

  public V get();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
         0: .line 50
            aload 0 /* this */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.forceDeserialization:()V
         1: .line 51
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.value:Ljava/lang/Object;
            areturn
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;
    Signature: ()TV;

  public java.nio.ByteBuffer getBinaryValue();
    descriptor: ()Ljava/nio/ByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
         0: .line 56
            aload 0 /* this */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.isBinaryValueAvailable:()Z
            ifeq 2
         1: .line 57
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.binaryValue:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            areturn
         2: .line 59
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            ldc "This OffHeapValueHolder has not been prepared to hand off its binary form"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;
    Exceptions:
      throws java.lang.IllegalStateException

  public boolean isBinaryValueAvailable();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
         0: .line 65
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.mode:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
            getstatic org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder$Mode.DETACHED:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
            if_acmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;

  void updateMetadata(org.ehcache.core.spi.store.Store$ValueHolder<V>);
    descriptor: (Lorg/ehcache/core/spi/store/Store$ValueHolder;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
        start local 1 // org.ehcache.core.spi.store.Store$ValueHolder valueFlushed
         0: .line 70
            aload 0 /* this */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.getId:()J
            aload 1 /* valueFlushed */
            invokeinterface org.ehcache.core.spi.store.Store$ValueHolder.getId:()J
            lcmp
            ifeq 2
         1: .line 71
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Wrong id passed in [this.id != id] : "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.getId:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " != "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* valueFlushed */
            invokeinterface org.ehcache.core.spi.store.Store$ValueHolder.getId:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 73
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* valueFlushed */
            invokeinterface org.ehcache.core.spi.store.Store$ValueHolder.lastAccessTime:()J
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.setLastAccessTime:(J)V
         3: .line 74
            aload 0 /* this */
            aload 1 /* valueFlushed */
            invokeinterface org.ehcache.core.spi.store.Store$ValueHolder.expirationTime:()J
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.setExpirationTime:(J)V
         4: .line 75
            return
        end local 1 // org.ehcache.core.spi.store.Store$ValueHolder valueFlushed
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;
            0    5     1  valueFlushed  Lorg/ehcache/core/spi/store/Store$ValueHolder<TV;>;
    Signature: (Lorg/ehcache/core/spi/store/Store$ValueHolder<TV;>;)V
    MethodParameters:
              Name  Flags
      valueFlushed  final

  void writeBack();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
         0: .line 82
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.writeContext:Lorg/terracotta/offheapstore/storage/portability/WriteContext;
            bipush 16
            aload 0 /* this */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.lastAccessTime:()J
            invokeinterface org.terracotta.offheapstore.storage.portability.WriteContext.setLong:(IJ)V
         1: .line 83
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.writeContext:Lorg/terracotta/offheapstore/storage/portability/WriteContext;
            bipush 24
            aload 0 /* this */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.expirationTime:()J
            invokeinterface org.terracotta.offheapstore.storage.portability.WriteContext.setLong:(IJ)V
         2: .line 84
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.writeContext:Lorg/terracotta/offheapstore/storage/portability/WriteContext;
            invokeinterface org.terracotta.offheapstore.storage.portability.WriteContext.flush:()V
         3: .line 85
            return
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;

  void forceDeserialization();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
         0: .line 92
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.value:Ljava/lang/Object;
            ifnonnull 2
         1: .line 93
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.deserialize:()Ljava/lang/Object;
            putfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.value:Ljava/lang/Object;
         2: .line 95
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;

  V deserialize();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
         0: .line 99
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.valueSerializer:Lorg/ehcache/spi/serialization/Serializer;
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.binaryValue:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
            invokeinterface org.ehcache.spi.serialization.Serializer.read:(Ljava/nio/ByteBuffer;)Ljava/lang/Object;
         1: areturn
         2: .line 100
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 1 /* e */
        start local 1 // java.lang.ClassNotFoundException e
         3: .line 101
            new org.ehcache.spi.serialization.SerializerException
            dup
            aload 1 /* e */
            invokespecial org.ehcache.spi.serialization.SerializerException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.ClassNotFoundException e
         4: .line 102
      StackMap locals:
      StackMap stack: org.ehcache.spi.serialization.SerializerException
            astore 1 /* e */
        start local 1 // org.ehcache.spi.serialization.SerializerException e
         5: .line 103
            new org.ehcache.spi.serialization.SerializerException
            dup
            ldc "Seeing this exception and having no other serialization related issues is a red flag!"
         6: .line 104
            aload 1 /* e */
         7: .line 103
            invokespecial org.ehcache.spi.serialization.SerializerException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // org.ehcache.spi.serialization.SerializerException e
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;
            3    4     1     e  Ljava/lang/ClassNotFoundException;
            5    8     1     e  Lorg/ehcache/spi/serialization/SerializerException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.ClassNotFoundException
           0     1       4  Class org.ehcache.spi.serialization.SerializerException
    Signature: ()TV;

  void detach();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
         0: .line 113
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.mode:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
            getstatic org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder$Mode.ATTACHED:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
            if_acmpne 6
         1: .line 114
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.binaryValue:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            newarray 8
            astore 1 /* bytes */
        start local 1 // byte[] bytes
         2: .line 115
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.binaryValue:Ljava/nio/ByteBuffer;
            aload 1 /* bytes */
            invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
            pop
         3: .line 116
            aload 0 /* this */
            aload 1 /* bytes */
            invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
            putfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.binaryValue:Ljava/nio/ByteBuffer;
         4: .line 117
            aload 0 /* this */
            getstatic org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder$Mode.DETACHED:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
            putfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.mode:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
        end local 1 // byte[] bytes
         5: .line 118
            goto 7
         6: .line 119
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            new java.lang.StringBuilder
            dup
            ldc "OffHeapValueHolder in mode "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder.mode:Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder$Mode;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " cannot be prepared for delayed deserialization"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         7: .line 121
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;
            2    5     1  bytes  [B

  private void writeObject(java.io.ObjectOutputStream);
    descriptor: (Ljava/io/ObjectOutputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
        start local 1 // java.io.ObjectOutputStream out
         0: .line 128
            new java.lang.UnsupportedOperationException
            dup
            ldc "This subclass of AbstractValueHolder is NOT serializable"
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.io.ObjectOutputStream out
        end local 0 // org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/ehcache/impl/internal/store/offheap/LazyOffHeapValueHolder<TV;>;
            0    1     1   out  Ljava/io/ObjectOutputStream;
    MethodParameters:
      Name  Flags
      out   
}
Signature: <V:Ljava/lang/Object;>Lorg/ehcache/impl/internal/store/offheap/OffHeapValueHolder<TV;>;Lorg/ehcache/impl/internal/store/BinaryValueHolder;
SourceFile: "LazyOffHeapValueHolder.java"
NestMembers:
  org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder$Mode
InnerClasses:
  public abstract ValueHolder = org.ehcache.core.spi.store.Store$ValueHolder of org.ehcache.core.spi.store.Store
  private final Mode = org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder$Mode of org.ehcache.impl.internal.store.offheap.LazyOffHeapValueHolder