public final class org.apache.cassandra.utils.concurrent.OpOrder$Barrier
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.cassandra.utils.concurrent.OpOrder$Barrier
  super_class: java.lang.Object
{
  private volatile org.apache.cassandra.utils.concurrent.OpOrder$Group orderOnOrBefore;
    descriptor: Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  final org.apache.cassandra.utils.concurrent.OpOrder this$0;
    descriptor: Lorg/apache/cassandra/utils/concurrent/OpOrder;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  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 330
            ldc Lorg/apache/cassandra/utils/concurrent/OpOrder;
            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.apache.cassandra.utils.concurrent.OpOrder$Barrier.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.utils.concurrent.OpOrder);
    descriptor: (Lorg/apache/cassandra/utils/concurrent/OpOrder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
         0: .line 330
            aload 0 /* this */
            aload 1
            putfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.this$0:Lorg/apache/cassandra/utils/concurrent/OpOrder;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;
    MethodParameters:
        Name  Flags
      this$0  final

  public boolean isAfter(org.apache.cassandra.utils.concurrent.OpOrder$Group);
    descriptor: (Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
        start local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group group
         0: .line 343
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            ifnonnull 2
         1: .line 344
            iconst_1
            ireturn
         2: .line 348
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.id:J
            aload 1 /* group */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.id:J
            lsub
            lconst_0
            lcmp
            iflt 3
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group group
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;
            0    4     1  group  Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
    MethodParameters:
       Name  Flags
      group  

  public void issue();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
         0: .line 357
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            ifnull 2
         1: .line 358
            new java.lang.IllegalStateException
            dup
            ldc "Can only call issue() once on each Barrier"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 361
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.this$0:Lorg/apache/cassandra/utils/concurrent/OpOrder;
            dup
            astore 2
            monitorenter
         3: .line 363
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.this$0:Lorg/apache/cassandra/utils/concurrent/OpOrder;
            getfield org.apache.cassandra.utils.concurrent.OpOrder.current:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            astore 1 /* current */
        start local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
         4: .line 364
            aload 0 /* this */
            aload 1 /* current */
            putfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
         5: .line 365
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.this$0:Lorg/apache/cassandra/utils/concurrent/OpOrder;
            aload 1 /* current */
            new org.apache.cassandra.utils.concurrent.OpOrder$Group
            dup
            aload 1 /* current */
            invokespecial org.apache.cassandra.utils.concurrent.OpOrder$Group.<init>:(Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;)V
            dup_x1
            putfield org.apache.cassandra.utils.concurrent.OpOrder$Group.next:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            putfield org.apache.cassandra.utils.concurrent.OpOrder.current:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
         6: .line 361
            aload 2
            monitorexit
         7: goto 10
        end local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
      StackMap locals: org.apache.cassandra.utils.concurrent.OpOrder$Barrier top org.apache.cassandra.utils.concurrent.OpOrder
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        start local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
        10: .line 367
      StackMap locals: org.apache.cassandra.utils.concurrent.OpOrder$Barrier org.apache.cassandra.utils.concurrent.OpOrder$Group
      StackMap stack:
            aload 1 /* current */
            invokevirtual org.apache.cassandra.utils.concurrent.OpOrder$Group.expire:()V
        11: .line 368
            return
        end local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   12     0     this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;
            4    8     1  current  Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
           10   12     1  current  Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
      Exception table:
        from    to  target  type
           3     7       8  any
           8     9       8  any

  public void markBlocking();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
         0: .line 375
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            astore 1 /* current */
        start local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
         1: .line 376
            goto 5
         2: .line 378
      StackMap locals: org.apache.cassandra.utils.concurrent.OpOrder$Group
      StackMap stack:
            aload 1 /* current */
            iconst_1
            putfield org.apache.cassandra.utils.concurrent.OpOrder$Group.isBlocking:Z
         3: .line 379
            aload 1 /* current */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.isBlockingSignal:Lorg/apache/cassandra/utils/concurrent/WaitQueue;
            invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue.signalAll:()V
         4: .line 380
            aload 1 /* current */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.prev:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            astore 1 /* current */
         5: .line 376
      StackMap locals:
      StackMap stack:
            aload 1 /* current */
            ifnonnull 2
         6: .line 382
            return
        end local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;
            1    7     1  current  Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;

  public org.apache.cassandra.utils.concurrent.WaitQueue$Signal register();
    descriptor: ()Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
         0: .line 389
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.waiting:Lorg/apache/cassandra/utils/concurrent/WaitQueue;
            invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue.register:()Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
            areturn
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;

  public boolean allPriorOpsAreFinished();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
         0: .line 397
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            astore 1 /* current */
        start local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
         1: .line 398
            aload 1 /* current */
            ifnonnull 3
         2: .line 399
            new java.lang.IllegalStateException
            dup
            ldc "This barrier needs to have issue() called on it before prior operations can complete"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 400
      StackMap locals: org.apache.cassandra.utils.concurrent.OpOrder$Group
      StackMap stack:
            aload 1 /* current */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.next:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.prev:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            ifnonnull 5
         4: .line 401
            iconst_1
            ireturn
         5: .line 402
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // org.apache.cassandra.utils.concurrent.OpOrder$Group current
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;
            1    6     1  current  Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;

  public void await();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
         0: .line 410
            goto 6
         1: .line 412
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.cassandra.utils.concurrent.OpOrder$Barrier.register:()Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
            astore 1 /* signal */
        start local 1 // org.apache.cassandra.utils.concurrent.WaitQueue$Signal signal
         2: .line 413
            aload 0 /* this */
            invokevirtual org.apache.cassandra.utils.concurrent.OpOrder$Barrier.allPriorOpsAreFinished:()Z
            ifeq 5
         3: .line 415
            aload 1 /* signal */
            invokeinterface org.apache.cassandra.utils.concurrent.WaitQueue$Signal.cancel:()V
         4: .line 416
            return
         5: .line 419
      StackMap locals: org.apache.cassandra.utils.concurrent.WaitQueue$Signal
      StackMap stack:
            aload 1 /* signal */
            invokeinterface org.apache.cassandra.utils.concurrent.WaitQueue$Signal.awaitUninterruptibly:()V
        end local 1 // org.apache.cassandra.utils.concurrent.WaitQueue$Signal signal
         6: .line 410
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.cassandra.utils.concurrent.OpOrder$Barrier.allPriorOpsAreFinished:()Z
            ifeq 1
         7: .line 421
            getstatic org.apache.cassandra.utils.concurrent.OpOrder$Barrier.$assertionsDisabled:Z
            ifne 8
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Group.running:I
            iconst_m1
            if_icmpeq 8
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         8: .line 422
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;
            2    6     1  signal  Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;

  public org.apache.cassandra.utils.concurrent.OpOrder$Group getSyncPoint();
    descriptor: ()Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
         0: .line 430
            aload 0 /* this */
            getfield org.apache.cassandra.utils.concurrent.OpOrder$Barrier.orderOnOrBefore:Lorg/apache/cassandra/utils/concurrent/OpOrder$Group;
            areturn
        end local 0 // org.apache.cassandra.utils.concurrent.OpOrder$Barrier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/concurrent/OpOrder$Barrier;
}
SourceFile: "OpOrder.java"
NestHost: org.apache.cassandra.utils.concurrent.OpOrder
InnerClasses:
  public final Barrier = org.apache.cassandra.utils.concurrent.OpOrder$Barrier of org.apache.cassandra.utils.concurrent.OpOrder
  public final Group = org.apache.cassandra.utils.concurrent.OpOrder$Group of org.apache.cassandra.utils.concurrent.OpOrder
  public abstract Signal = org.apache.cassandra.utils.concurrent.WaitQueue$Signal of org.apache.cassandra.utils.concurrent.WaitQueue