public class org.apache.cassandra.service.paxos.PrepareCallback extends org.apache.cassandra.service.paxos.AbstractPaxosCallback<org.apache.cassandra.service.paxos.PrepareResponse>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.service.paxos.PrepareCallback
  super_class: org.apache.cassandra.service.paxos.AbstractPaxosCallback
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  public boolean promised;
    descriptor: Z
    flags: (0x0001) ACC_PUBLIC

  public org.apache.cassandra.service.paxos.Commit mostRecentCommit;
    descriptor: Lorg/apache/cassandra/service/paxos/Commit;
    flags: (0x0001) ACC_PUBLIC

  public org.apache.cassandra.service.paxos.Commit mostRecentInProgressCommit;
    descriptor: Lorg/apache/cassandra/service/paxos/Commit;
    flags: (0x0001) ACC_PUBLIC

  public org.apache.cassandra.service.paxos.Commit mostRecentInProgressCommitWithUpdate;
    descriptor: Lorg/apache/cassandra/service/paxos/Commit;
    flags: (0x0001) ACC_PUBLIC

  private final java.util.Map<java.net.InetAddress, org.apache.cassandra.service.paxos.Commit> commitsByReplica;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/net/InetAddress;Lorg/apache/cassandra/service/paxos/Commit;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 43
            ldc Lorg/apache/cassandra/service/paxos/PrepareCallback;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.service.paxos.PrepareCallback.logger:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.db.DecoratedKey, org.apache.cassandra.config.CFMetaData, int, org.apache.cassandra.db.ConsistencyLevel, long);
    descriptor: (Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/config/CFMetaData;ILorg/apache/cassandra/db/ConsistencyLevel;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=6
        start local 0 // org.apache.cassandra.service.paxos.PrepareCallback this
        start local 1 // org.apache.cassandra.db.DecoratedKey key
        start local 2 // org.apache.cassandra.config.CFMetaData metadata
        start local 3 // int targets
        start local 4 // org.apache.cassandra.db.ConsistencyLevel consistency
        start local 5 // long queryStartNanoTime
         0: .line 54
            aload 0 /* this */
            iload 3 /* targets */
            aload 4 /* consistency */
            lload 5 /* queryStartNanoTime */
            invokespecial org.apache.cassandra.service.paxos.AbstractPaxosCallback.<init>:(ILorg/apache/cassandra/db/ConsistencyLevel;J)V
         1: .line 45
            aload 0 /* this */
            iconst_1
            putfield org.apache.cassandra.service.paxos.PrepareCallback.promised:Z
         2: .line 50
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield org.apache.cassandra.service.paxos.PrepareCallback.commitsByReplica:Ljava/util/Map;
         3: .line 56
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* metadata */
            invokestatic org.apache.cassandra.service.paxos.Commit.emptyCommit:(Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/config/CFMetaData;)Lorg/apache/cassandra/service/paxos/Commit;
            putfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentCommit:Lorg/apache/cassandra/service/paxos/Commit;
         4: .line 57
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* metadata */
            invokestatic org.apache.cassandra.service.paxos.Commit.emptyCommit:(Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/config/CFMetaData;)Lorg/apache/cassandra/service/paxos/Commit;
            putfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentInProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
         5: .line 58
            aload 0 /* this */
            aload 1 /* key */
            aload 2 /* metadata */
            invokestatic org.apache.cassandra.service.paxos.Commit.emptyCommit:(Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/config/CFMetaData;)Lorg/apache/cassandra/service/paxos/Commit;
            putfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentInProgressCommitWithUpdate:Lorg/apache/cassandra/service/paxos/Commit;
         6: .line 59
            return
        end local 5 // long queryStartNanoTime
        end local 4 // org.apache.cassandra.db.ConsistencyLevel consistency
        end local 3 // int targets
        end local 2 // org.apache.cassandra.config.CFMetaData metadata
        end local 1 // org.apache.cassandra.db.DecoratedKey key
        end local 0 // org.apache.cassandra.service.paxos.PrepareCallback this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    7     0                this  Lorg/apache/cassandra/service/paxos/PrepareCallback;
            0    7     1                 key  Lorg/apache/cassandra/db/DecoratedKey;
            0    7     2            metadata  Lorg/apache/cassandra/config/CFMetaData;
            0    7     3             targets  I
            0    7     4         consistency  Lorg/apache/cassandra/db/ConsistencyLevel;
            0    7     5  queryStartNanoTime  J
    MethodParameters:
                    Name  Flags
      key                 
      metadata            
      targets             
      consistency         
      queryStartNanoTime  

  public synchronized void response(org.apache.cassandra.net.MessageIn<org.apache.cassandra.service.paxos.PrepareResponse>);
    descriptor: (Lorg/apache/cassandra/net/MessageIn;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // org.apache.cassandra.service.paxos.PrepareCallback this
        start local 1 // org.apache.cassandra.net.MessageIn message
         0: .line 63
            aload 1 /* message */
            getfield org.apache.cassandra.net.MessageIn.payload:Ljava/lang/Object;
            checkcast org.apache.cassandra.service.paxos.PrepareResponse
            astore 2 /* response */
        start local 2 // org.apache.cassandra.service.paxos.PrepareResponse response
         1: .line 64
            getstatic org.apache.cassandra.service.paxos.PrepareCallback.logger:Lorg/slf4j/Logger;
            ldc "Prepare response {} from {}"
            aload 2 /* response */
            aload 1 /* message */
            getfield org.apache.cassandra.net.MessageIn.from:Ljava/net/InetAddress;
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 69
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.inProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentInProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
            invokevirtual org.apache.cassandra.service.paxos.Commit.isAfter:(Lorg/apache/cassandra/service/paxos/Commit;)Z
            ifeq 4
         3: .line 70
            aload 0 /* this */
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.inProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
            putfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentInProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
         4: .line 72
      StackMap locals: org.apache.cassandra.service.paxos.PrepareResponse
      StackMap stack:
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.promised:Z
            ifne 10
         5: .line 74
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.service.paxos.PrepareCallback.promised:Z
         6: .line 75
            goto 8
         7: .line 76
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.latch:Ljava/util/concurrent/CountDownLatch;
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         8: .line 75
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.latch:Ljava/util/concurrent/CountDownLatch;
            invokevirtual java.util.concurrent.CountDownLatch.getCount:()J
            lconst_0
            lcmp
            ifgt 7
         9: .line 77
            return
        10: .line 80
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.commitsByReplica:Ljava/util/Map;
            aload 1 /* message */
            getfield org.apache.cassandra.net.MessageIn.from:Ljava/net/InetAddress;
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.mostRecentCommit:Lorg/apache/cassandra/service/paxos/Commit;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        11: .line 81
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.mostRecentCommit:Lorg/apache/cassandra/service/paxos/Commit;
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentCommit:Lorg/apache/cassandra/service/paxos/Commit;
            invokevirtual org.apache.cassandra.service.paxos.Commit.isAfter:(Lorg/apache/cassandra/service/paxos/Commit;)Z
            ifeq 13
        12: .line 82
            aload 0 /* this */
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.mostRecentCommit:Lorg/apache/cassandra/service/paxos/Commit;
            putfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentCommit:Lorg/apache/cassandra/service/paxos/Commit;
        13: .line 86
      StackMap locals:
      StackMap stack:
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.inProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentInProgressCommitWithUpdate:Lorg/apache/cassandra/service/paxos/Commit;
            invokevirtual org.apache.cassandra.service.paxos.Commit.isAfter:(Lorg/apache/cassandra/service/paxos/Commit;)Z
            ifeq 15
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.inProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
            getfield org.apache.cassandra.service.paxos.Commit.update:Lorg/apache/cassandra/db/partitions/PartitionUpdate;
            invokevirtual org.apache.cassandra.db.partitions.PartitionUpdate.isEmpty:()Z
            ifne 15
        14: .line 87
            aload 0 /* this */
            aload 2 /* response */
            getfield org.apache.cassandra.service.paxos.PrepareResponse.inProgressCommit:Lorg/apache/cassandra/service/paxos/Commit;
            putfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentInProgressCommitWithUpdate:Lorg/apache/cassandra/service/paxos/Commit;
        15: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.latch:Ljava/util/concurrent/CountDownLatch;
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
        16: .line 90
            return
        end local 2 // org.apache.cassandra.service.paxos.PrepareResponse response
        end local 1 // org.apache.cassandra.net.MessageIn message
        end local 0 // org.apache.cassandra.service.paxos.PrepareCallback this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   17     0      this  Lorg/apache/cassandra/service/paxos/PrepareCallback;
            0   17     1   message  Lorg/apache/cassandra/net/MessageIn<Lorg/apache/cassandra/service/paxos/PrepareResponse;>;
            1   17     2  response  Lorg/apache/cassandra/service/paxos/PrepareResponse;
    Signature: (Lorg/apache/cassandra/net/MessageIn<Lorg/apache/cassandra/service/paxos/PrepareResponse;>;)V
    MethodParameters:
         Name  Flags
      message  

  public java.lang.Iterable<java.net.InetAddress> replicasMissingMostRecentCommit(org.apache.cassandra.config.CFMetaData, int);
    descriptor: (Lorg/apache/cassandra/config/CFMetaData;I)Ljava/lang/Iterable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // org.apache.cassandra.service.paxos.PrepareCallback this
        start local 1 // org.apache.cassandra.config.CFMetaData metadata
        start local 2 // int nowInSec
         0: .line 103
            aload 1 /* metadata */
            invokestatic org.apache.cassandra.db.SystemKeyspace.paxosTtlSec:(Lorg/apache/cassandra/config/CFMetaData;)I
            i2l
            lstore 3 /* paxosTtlSec */
        start local 3 // long paxosTtlSec
         1: .line 104
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.mostRecentCommit:Lorg/apache/cassandra/service/paxos/Commit;
            getfield org.apache.cassandra.service.paxos.Commit.ballot:Ljava/util/UUID;
            invokestatic org.apache.cassandra.utils.UUIDGen.unixTimestampInSec:(Ljava/util/UUID;)I
            i2l
            lload 3 /* paxosTtlSec */
            ladd
            iload 2 /* nowInSec */
            i2l
            lcmp
            ifge 3
         2: .line 105
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            areturn
         3: .line 107
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.service.paxos.PrepareCallback.commitsByReplica:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            new org.apache.cassandra.service.paxos.PrepareCallback$1
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.service.paxos.PrepareCallback$1.<init>:(Lorg/apache/cassandra/service/paxos/PrepareCallback;)V
            invokestatic com.google.common.collect.Iterables.filter:(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Ljava/lang/Iterable;
            areturn
        end local 3 // long paxosTtlSec
        end local 2 // int nowInSec
        end local 1 // org.apache.cassandra.config.CFMetaData metadata
        end local 0 // org.apache.cassandra.service.paxos.PrepareCallback this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lorg/apache/cassandra/service/paxos/PrepareCallback;
            0    4     1     metadata  Lorg/apache/cassandra/config/CFMetaData;
            0    4     2     nowInSec  I
            1    4     3  paxosTtlSec  J
    Signature: (Lorg/apache/cassandra/config/CFMetaData;I)Ljava/lang/Iterable<Ljava/net/InetAddress;>;
    MethodParameters:
          Name  Flags
      metadata  
      nowInSec  
}
Signature: Lorg/apache/cassandra/service/paxos/AbstractPaxosCallback<Lorg/apache/cassandra/service/paxos/PrepareResponse;>;
SourceFile: "PrepareCallback.java"
NestMembers:
  org.apache.cassandra.service.paxos.PrepareCallback$1
InnerClasses:
  org.apache.cassandra.service.paxos.PrepareCallback$1