final class com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor extends java.util.concurrent.atomic.AtomicReference<com.google.common.util.concurrent.ExecutionSequencer$RunningState> implements java.util.concurrent.Executor, java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor
  super_class: java.util.concurrent.atomic.AtomicReference
{
  com.google.common.util.concurrent.ExecutionSequencer sequencer;
    descriptor: Lcom/google/common/util/concurrent/ExecutionSequencer;
    flags: (0x0000) 

  java.util.concurrent.Executor delegate;
    descriptor: Ljava/util/concurrent/Executor;
    flags: (0x0000) 

  java.lang.Runnable task;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0000) 

  java.lang.Thread submitting;
    descriptor: Ljava/lang/Thread;
    flags: (0x0000) 

  private void <init>(java.util.concurrent.Executor, com.google.common.util.concurrent.ExecutionSequencer);
    descriptor: (Ljava/util/concurrent/Executor;Lcom/google/common/util/concurrent/ExecutionSequencer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
        start local 1 // java.util.concurrent.Executor delegate
        start local 2 // com.google.common.util.concurrent.ExecutionSequencer sequencer
         0: .line 308
            aload 0 /* this */
            getstatic com.google.common.util.concurrent.ExecutionSequencer$RunningState.NOT_RUN:Lcom/google/common/util/concurrent/ExecutionSequencer$RunningState;
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:(Ljava/lang/Object;)V
         1: .line 309
            aload 0 /* this */
            aload 1 /* delegate */
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.delegate:Ljava/util/concurrent/Executor;
         2: .line 310
            aload 0 /* this */
            aload 2 /* sequencer */
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.sequencer:Lcom/google/common/util/concurrent/ExecutionSequencer;
         3: .line 311
            return
        end local 2 // com.google.common.util.concurrent.ExecutionSequencer sequencer
        end local 1 // java.util.concurrent.Executor delegate
        end local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;
            0    4     1   delegate  Ljava/util/concurrent/Executor;
            0    4     2  sequencer  Lcom/google/common/util/concurrent/ExecutionSequencer;
    MethodParameters:
           Name  Flags
      delegate   
      sequencer  

  public void execute(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
        start local 1 // java.lang.Runnable task
         0: .line 324
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.get:()Ljava/lang/Object;
            getstatic com.google.common.util.concurrent.ExecutionSequencer$RunningState.CANCELLED:Lcom/google/common/util/concurrent/ExecutionSequencer$RunningState;
            if_acmpne 4
         1: .line 325
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.delegate:Ljava/util/concurrent/Executor;
         2: .line 326
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.sequencer:Lcom/google/common/util/concurrent/ExecutionSequencer;
         3: .line 327
            return
         4: .line 329
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.submitting:Ljava/lang/Thread;
         5: .line 331
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.sequencer:Lcom/google/common/util/concurrent/ExecutionSequencer;
            getfield com.google.common.util.concurrent.ExecutionSequencer.latestTaskQueue:Lcom/google/common/util/concurrent/ExecutionSequencer$ThreadConfinedTaskQueue;
            astore 2 /* submittingTaskQueue */
        start local 2 // com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue submittingTaskQueue
         6: .line 332
            aload 2 /* submittingTaskQueue */
            getfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.thread:Ljava/lang/Thread;
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.submitting:Ljava/lang/Thread;
            if_acmpne 15
         7: .line 333
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.sequencer:Lcom/google/common/util/concurrent/ExecutionSequencer;
         8: .line 338
            aload 2 /* submittingTaskQueue */
            getfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.nextTask:Ljava/lang/Runnable;
            ifnonnull 9
            iconst_1
            goto 10
      StackMap locals: com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: invokestatic com.google.common.base.Preconditions.checkState:(Z)V
        11: .line 339
            aload 2 /* submittingTaskQueue */
            aload 1 /* task */
            putfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.nextTask:Ljava/lang/Runnable;
        12: .line 340
            aload 2 /* submittingTaskQueue */
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.delegate:Ljava/util/concurrent/Executor;
            putfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.nextExecutor:Ljava/util/concurrent/Executor;
        13: .line 341
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.delegate:Ljava/util/concurrent/Executor;
        14: .line 342
            goto 23
        15: .line 343
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.delegate:Ljava/util/concurrent/Executor;
            astore 3 /* localDelegate */
        start local 3 // java.util.concurrent.Executor localDelegate
        16: .line 344
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.delegate:Ljava/util/concurrent/Executor;
        17: .line 345
            aload 0 /* this */
            aload 1 /* task */
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.task:Ljava/lang/Runnable;
        18: .line 346
            aload 3 /* localDelegate */
            aload 0 /* this */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
        end local 3 // java.util.concurrent.Executor localDelegate
        end local 2 // com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue submittingTaskQueue
        19: .line 348
            goto 23
      StackMap locals: com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor java.lang.Runnable
      StackMap stack: java.lang.Throwable
        20: astore 4
        21: .line 353
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.submitting:Ljava/lang/Thread;
        22: .line 354
            aload 4
            athrow
        23: .line 353
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.submitting:Ljava/lang/Thread;
        24: .line 355
            return
        end local 1 // java.lang.Runnable task
        end local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   25     0                 this  Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;
            0   25     1                 task  Ljava/lang/Runnable;
            6   19     2  submittingTaskQueue  Lcom/google/common/util/concurrent/ExecutionSequencer$ThreadConfinedTaskQueue;
           16   19     3        localDelegate  Ljava/util/concurrent/Executor;
      Exception table:
        from    to  target  type
           5    20      20  any
    MethodParameters:
      Name  Flags
      task  

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
         0: .line 360
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 1 /* currentThread */
        start local 1 // java.lang.Thread currentThread
         1: .line 361
            aload 1 /* currentThread */
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.submitting:Ljava/lang/Thread;
            if_acmpeq 6
         2: .line 362
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.task:Ljava/lang/Runnable;
            astore 2 /* localTask */
        start local 2 // java.lang.Runnable localTask
         3: .line 363
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.task:Ljava/lang/Runnable;
         4: .line 364
            aload 2 /* localTask */
            invokeinterface java.lang.Runnable.run:()V
         5: .line 365
            return
        end local 2 // java.lang.Runnable localTask
         6: .line 370
      StackMap locals: java.lang.Thread
      StackMap stack:
            new com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue
            dup
            invokespecial com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.<init>:()V
            astore 2 /* executingTaskQueue */
        start local 2 // com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue executingTaskQueue
         7: .line 371
            aload 2 /* executingTaskQueue */
            aload 1 /* currentThread */
            putfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.thread:Ljava/lang/Thread;
         8: .line 381
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.sequencer:Lcom/google/common/util/concurrent/ExecutionSequencer;
            aload 2 /* executingTaskQueue */
            putfield com.google.common.util.concurrent.ExecutionSequencer.latestTaskQueue:Lcom/google/common/util/concurrent/ExecutionSequencer$ThreadConfinedTaskQueue;
         9: .line 382
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.sequencer:Lcom/google/common/util/concurrent/ExecutionSequencer;
        10: .line 384
            aload 0 /* this */
            getfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.task:Ljava/lang/Runnable;
            astore 3 /* localTask */
        start local 3 // java.lang.Runnable localTask
        11: .line 385
            aload 0 /* this */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.task:Ljava/lang/Runnable;
        12: .line 386
            aload 3 /* localTask */
            invokeinterface java.lang.Runnable.run:()V
        13: .line 391
            goto 17
        start local 4 // java.lang.Runnable queuedTask
        start local 5 // java.util.concurrent.Executor queuedExecutor
        14: .line 393
      StackMap locals: com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor java.lang.Thread com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue java.lang.Runnable java.lang.Runnable java.util.concurrent.Executor
      StackMap stack:
            aload 2 /* executingTaskQueue */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.nextTask:Ljava/lang/Runnable;
        15: .line 394
            aload 2 /* executingTaskQueue */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.nextExecutor:Ljava/util/concurrent/Executor;
        16: .line 395
            aload 5 /* queuedExecutor */
            aload 4 /* queuedTask */
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
        end local 5 // java.util.concurrent.Executor queuedExecutor
        end local 4 // java.lang.Runnable queuedTask
        17: .line 391
      StackMap locals:
      StackMap stack:
            aload 2 /* executingTaskQueue */
            getfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.nextTask:Ljava/lang/Runnable;
            dup
            astore 4 /* queuedTask */
        start local 4 // java.lang.Runnable queuedTask
        18: ifnull 19
            iconst_1
            goto 20
      StackMap locals: java.lang.Runnable
      StackMap stack:
        19: iconst_0
        20: .line 392
      StackMap locals:
      StackMap stack: int
            aload 2 /* executingTaskQueue */
            getfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.nextExecutor:Ljava/util/concurrent/Executor;
            dup
            astore 5 /* queuedExecutor */
        start local 5 // java.util.concurrent.Executor queuedExecutor
        21: ifnull 22
            iconst_1
            goto 23
      StackMap locals: com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor java.lang.Thread com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue java.lang.Runnable java.lang.Runnable java.util.concurrent.Executor
      StackMap stack: int
        22: iconst_0
        23: .line 391
      StackMap locals: com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor java.lang.Thread com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue java.lang.Runnable java.lang.Runnable java.util.concurrent.Executor
      StackMap stack: int int
            iand
            ifne 14
        end local 5 // java.util.concurrent.Executor queuedExecutor
        end local 4 // java.lang.Runnable queuedTask
        end local 3 // java.lang.Runnable localTask
        24: .line 397
            goto 28
      StackMap locals: com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor java.lang.Thread com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue
      StackMap stack: java.lang.Throwable
        25: astore 6
        26: .line 404
            aload 2 /* executingTaskQueue */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.thread:Ljava/lang/Thread;
        27: .line 405
            aload 6
            athrow
        28: .line 404
      StackMap locals:
      StackMap stack:
            aload 2 /* executingTaskQueue */
            aconst_null
            putfield com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue.thread:Ljava/lang/Thread;
        29: .line 406
            return
        end local 2 // com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue executingTaskQueue
        end local 1 // java.lang.Thread currentThread
        end local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   30     0                this  Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;
            1   30     1       currentThread  Ljava/lang/Thread;
            3    6     2           localTask  Ljava/lang/Runnable;
            7   30     2  executingTaskQueue  Lcom/google/common/util/concurrent/ExecutionSequencer$ThreadConfinedTaskQueue;
           11   24     3           localTask  Ljava/lang/Runnable;
           14   17     4          queuedTask  Ljava/lang/Runnable;
           18   24     4          queuedTask  Ljava/lang/Runnable;
           14   17     5      queuedExecutor  Ljava/util/concurrent/Executor;
           21   24     5      queuedExecutor  Ljava/util/concurrent/Executor;
      Exception table:
        from    to  target  type
          10    25      25  any

  private boolean trySetStarted();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
         0: .line 409
            aload 0 /* this */
            getstatic com.google.common.util.concurrent.ExecutionSequencer$RunningState.NOT_RUN:Lcom/google/common/util/concurrent/ExecutionSequencer$RunningState;
            getstatic com.google.common.util.concurrent.ExecutionSequencer$RunningState.STARTED:Lcom/google/common/util/concurrent/ExecutionSequencer$RunningState;
            invokevirtual com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;

  private boolean trySetCancelled();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
         0: .line 413
            aload 0 /* this */
            getstatic com.google.common.util.concurrent.ExecutionSequencer$RunningState.NOT_RUN:Lcom/google/common/util/concurrent/ExecutionSequencer$RunningState;
            getstatic com.google.common.util.concurrent.ExecutionSequencer$RunningState.CANCELLED:Lcom/google/common/util/concurrent/ExecutionSequencer$RunningState;
            invokevirtual com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ireturn
        end local 0 // com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/ExecutionSequencer$TaskNonReentrantExecutor;
}
Signature: Ljava/util/concurrent/atomic/AtomicReference<Lcom/google/common/util/concurrent/ExecutionSequencer$RunningState;>;Ljava/util/concurrent/Executor;Ljava/lang/Runnable;
SourceFile: "ExecutionSequencer.java"
NestHost: com.google.common.util.concurrent.ExecutionSequencer
InnerClasses:
  final RunningState = com.google.common.util.concurrent.ExecutionSequencer$RunningState of com.google.common.util.concurrent.ExecutionSequencer
  private final TaskNonReentrantExecutor = com.google.common.util.concurrent.ExecutionSequencer$TaskNonReentrantExecutor of com.google.common.util.concurrent.ExecutionSequencer
  private final ThreadConfinedTaskQueue = com.google.common.util.concurrent.ExecutionSequencer$ThreadConfinedTaskQueue of com.google.common.util.concurrent.ExecutionSequencer