final class org.h2.mvstore.tx.RollbackDecisionMaker extends org.h2.mvstore.MVMap$DecisionMaker<java.lang.Object[]>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: org.h2.mvstore.tx.RollbackDecisionMaker
  super_class: org.h2.mvstore.MVMap$DecisionMaker
{
  private final org.h2.mvstore.tx.TransactionStore store;
    descriptor: Lorg/h2/mvstore/tx/TransactionStore;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  private final org.h2.mvstore.tx.TransactionStore$RollbackListener listener;
    descriptor: Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.h2.mvstore.MVMap$Decision decision;
    descriptor: Lorg/h2/mvstore/MVMap$Decision;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lorg/h2/mvstore/MVMap$Decision;

  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 16
            ldc Lorg/h2/mvstore/tx/RollbackDecisionMaker;
            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.h2.mvstore.tx.RollbackDecisionMaker.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(org.h2.mvstore.tx.TransactionStore, long, long, org.h2.mvstore.tx.TransactionStore$RollbackListener);
    descriptor: (Lorg/h2/mvstore/tx/TransactionStore;JJLorg/h2/mvstore/tx/TransactionStore$RollbackListener;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=7, args_size=5
        start local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
        start local 1 // org.h2.mvstore.tx.TransactionStore store
        start local 2 // long transactionId
        start local 4 // long toLogId
        start local 6 // org.h2.mvstore.tx.TransactionStore$RollbackListener listener
         0: .line 23
            aload 0 /* this */
            invokespecial org.h2.mvstore.MVMap$DecisionMaker.<init>:()V
         1: .line 25
            aload 0 /* this */
            aload 1 /* store */
            putfield org.h2.mvstore.tx.RollbackDecisionMaker.store:Lorg/h2/mvstore/tx/TransactionStore;
         2: .line 26
            aload 0 /* this */
            lload 2 /* transactionId */
            putfield org.h2.mvstore.tx.RollbackDecisionMaker.transactionId:J
         3: .line 27
            aload 0 /* this */
            lload 4 /* toLogId */
            putfield org.h2.mvstore.tx.RollbackDecisionMaker.toLogId:J
         4: .line 28
            aload 0 /* this */
            aload 6 /* listener */
            putfield org.h2.mvstore.tx.RollbackDecisionMaker.listener:Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
         5: .line 29
            return
        end local 6 // org.h2.mvstore.tx.TransactionStore$RollbackListener listener
        end local 4 // long toLogId
        end local 2 // long transactionId
        end local 1 // org.h2.mvstore.tx.TransactionStore store
        end local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0           this  Lorg/h2/mvstore/tx/RollbackDecisionMaker;
            0    6     1          store  Lorg/h2/mvstore/tx/TransactionStore;
            0    6     2  transactionId  J
            0    6     4        toLogId  J
            0    6     6       listener  Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
    MethodParameters:
               Name  Flags
      store          
      transactionId  
      toLogId        
      listener       

  public org.h2.mvstore.MVMap$Decision decide([], []);
    descriptor: ([Ljava/lang/Object;[Ljava/lang/Object;)Lorg/h2/mvstore/MVMap$Decision;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=10, args_size=3
        start local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
        start local 1 // java.lang.Object[] existingValue
        start local 2 // java.lang.Object[] providedValue
         0: .line 33
            getstatic org.h2.mvstore.tx.RollbackDecisionMaker.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.h2.mvstore.tx.RollbackDecisionMaker.decision:Lorg/h2/mvstore/MVMap$Decision;
            ifnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 34
      StackMap locals:
      StackMap stack:
            aload 1 /* existingValue */
            ifnonnull 4
         2: .line 37
            aload 0 /* this */
            getstatic org.h2.mvstore.MVMap$Decision.ABORT:Lorg/h2/mvstore/MVMap$Decision;
            putfield org.h2.mvstore.tx.RollbackDecisionMaker.decision:Lorg/h2/mvstore/MVMap$Decision;
         3: .line 38
            goto 17
         4: .line 39
      StackMap locals:
      StackMap stack:
            aload 1 /* existingValue */
            iconst_2
            aaload
            checkcast org.h2.value.VersionedValue
            astore 3 /* valueToRestore */
        start local 3 // org.h2.value.VersionedValue valueToRestore
         5: .line 41
            aload 3 /* valueToRestore */
            ifnull 10
         6: .line 42
            aload 3 /* valueToRestore */
            invokevirtual org.h2.value.VersionedValue.getOperationId:()J
            dup2
            lstore 4 /* operationId */
        start local 4 // long operationId
         7: lconst_0
            lcmp
            ifeq 10
         8: .line 43
            lload 4 /* operationId */
            invokestatic org.h2.mvstore.tx.TransactionStore.getTransactionId:(J)I
            i2l
            aload 0 /* this */
            getfield org.h2.mvstore.tx.RollbackDecisionMaker.transactionId:J
            lcmp
            ifne 16
         9: .line 44
            lload 4 /* operationId */
            invokestatic org.h2.mvstore.tx.TransactionStore.getLogId:(J)J
            aload 0 /* this */
            getfield org.h2.mvstore.tx.RollbackDecisionMaker.toLogId:J
            lcmp
            ifge 16
        end local 4 // long operationId
        10: .line 45
      StackMap locals: org.h2.value.VersionedValue
      StackMap stack:
            aload 1 /* existingValue */
            iconst_0
            aaload
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 6 /* mapId */
        start local 6 // int mapId
        11: .line 46
            aload 0 /* this */
            getfield org.h2.mvstore.tx.RollbackDecisionMaker.store:Lorg/h2/mvstore/tx/TransactionStore;
            iload 6 /* mapId */
            invokevirtual org.h2.mvstore.tx.TransactionStore.openMap:(I)Lorg/h2/mvstore/MVMap;
            astore 7 /* map */
        start local 7 // org.h2.mvstore.MVMap map
        12: .line 47
            aload 7 /* map */
            ifnull 16
            aload 7 /* map */
            invokevirtual org.h2.mvstore.MVMap.isClosed:()Z
            ifne 16
        13: .line 48
            aload 1 /* existingValue */
            iconst_1
            aaload
            astore 8 /* key */
        start local 8 // java.lang.Object key
        14: .line 49
            aload 7 /* map */
            aload 8 /* key */
            aload 3 /* valueToRestore */
            getstatic org.h2.mvstore.MVMap$DecisionMaker.DEFAULT:Lorg/h2/mvstore/MVMap$DecisionMaker;
            invokevirtual org.h2.mvstore.MVMap.operate:(Ljava/lang/Object;Ljava/lang/Object;Lorg/h2/mvstore/MVMap$DecisionMaker;)Ljava/lang/Object;
            checkcast org.h2.value.VersionedValue
            astore 9 /* previousValue */
        start local 9 // org.h2.value.VersionedValue previousValue
        15: .line 50
            aload 0 /* this */
            getfield org.h2.mvstore.tx.RollbackDecisionMaker.listener:Lorg/h2/mvstore/tx/TransactionStore$RollbackListener;
            aload 7 /* map */
            aload 8 /* key */
            aload 9 /* previousValue */
            aload 3 /* valueToRestore */
            invokeinterface org.h2.mvstore.tx.TransactionStore$RollbackListener.onRollback:(Lorg/h2/mvstore/MVMap;Ljava/lang/Object;Lorg/h2/value/VersionedValue;Lorg/h2/value/VersionedValue;)V
        end local 9 // org.h2.value.VersionedValue previousValue
        end local 8 // java.lang.Object key
        end local 7 // org.h2.mvstore.MVMap map
        end local 6 // int mapId
        16: .line 53
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic org.h2.mvstore.MVMap$Decision.REMOVE:Lorg/h2/mvstore/MVMap$Decision;
            putfield org.h2.mvstore.tx.RollbackDecisionMaker.decision:Lorg/h2/mvstore/MVMap$Decision;
        end local 3 // org.h2.value.VersionedValue valueToRestore
        17: .line 55
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.h2.mvstore.tx.RollbackDecisionMaker.decision:Lorg/h2/mvstore/MVMap$Decision;
            areturn
        end local 2 // java.lang.Object[] providedValue
        end local 1 // java.lang.Object[] existingValue
        end local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0            this  Lorg/h2/mvstore/tx/RollbackDecisionMaker;
            0   18     1   existingValue  [Ljava/lang/Object;
            0   18     2   providedValue  [Ljava/lang/Object;
            5   17     3  valueToRestore  Lorg/h2/value/VersionedValue;
            7   10     4     operationId  J
           11   16     6           mapId  I
           12   16     7             map  Lorg/h2/mvstore/MVMap<Ljava/lang/Object;Lorg/h2/value/VersionedValue;>;
           14   16     8             key  Ljava/lang/Object;
           15   16     9   previousValue  Lorg/h2/value/VersionedValue;
    Signature: ([Ljava/lang/Object;[Ljava/lang/Object;)Lorg/h2/mvstore/MVMap$Decision;
    MethodParameters:
               Name  Flags
      existingValue  
      providedValue  

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
         0: .line 60
            aload 0 /* this */
            aconst_null
            putfield org.h2.mvstore.tx.RollbackDecisionMaker.decision:Lorg/h2/mvstore/MVMap$Decision;
         1: .line 61
            return
        end local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/h2/mvstore/tx/RollbackDecisionMaker;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
         0: .line 65
            new java.lang.StringBuilder
            dup
            ldc "rollback-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.h2.mvstore.tx.RollbackDecisionMaker.transactionId:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // org.h2.mvstore.tx.RollbackDecisionMaker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/h2/mvstore/tx/RollbackDecisionMaker;

  public org.h2.mvstore.MVMap$Decision decide(java.lang.Object, java.lang.Object);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;)Lorg/h2/mvstore/MVMap$Decision;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            aload 1
            checkcast java.lang.Object[]
            aload 2
            checkcast java.lang.Object[]
            invokevirtual org.h2.mvstore.tx.RollbackDecisionMaker.decide:([Ljava/lang/Object;[Ljava/lang/Object;)Lorg/h2/mvstore/MVMap$Decision;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lorg/h2/mvstore/MVMap$DecisionMaker<[Ljava/lang/Object;>;
SourceFile: "RollbackDecisionMaker.java"
InnerClasses:
  public final Decision = org.h2.mvstore.MVMap$Decision of org.h2.mvstore.MVMap
  public abstract DecisionMaker = org.h2.mvstore.MVMap$DecisionMaker of org.h2.mvstore.MVMap
  public abstract RollbackListener = org.h2.mvstore.tx.TransactionStore$RollbackListener of org.h2.mvstore.tx.TransactionStore