final class android.os.Handler$BlockingRunnable implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: android.os.Handler$BlockingRunnable
  super_class: java.lang.Object
{
  private final java.lang.Runnable mTask;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean mDone;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public void <init>(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.os.Handler$BlockingRunnable this
        start local 1 // java.lang.Runnable task
         0: .line 886
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 887
            aload 0 /* this */
            aload 1 /* task */
            putfield android.os.Handler$BlockingRunnable.mTask:Ljava/lang/Runnable;
         2: .line 888
            return
        end local 1 // java.lang.Runnable task
        end local 0 // android.os.Handler$BlockingRunnable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/os/Handler$BlockingRunnable;
            0    3     1  task  Ljava/lang/Runnable;
    MethodParameters:
      Name  Flags
      task  

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // android.os.Handler$BlockingRunnable this
         0: .line 893
            aload 0 /* this */
            getfield android.os.Handler$BlockingRunnable.mTask:Ljava/lang/Runnable;
            invokeinterface java.lang.Runnable.run:()V
         1: .line 894
            goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 1
         3: .line 895
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         4: .line 896
            aload 0 /* this */
            iconst_1
            putfield android.os.Handler$BlockingRunnable.mDone:Z
         5: .line 897
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
         6: .line 895
            aload 2
            monitorexit
         7: goto 10
      StackMap locals: android.os.Handler$BlockingRunnable java.lang.Throwable android.os.Handler$BlockingRunnable
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        10: .line 899
      StackMap locals:
      StackMap stack:
            aload 1
            athrow
        11: .line 895
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 2
            monitorenter
        12: .line 896
            aload 0 /* this */
            iconst_1
            putfield android.os.Handler$BlockingRunnable.mDone:Z
        13: .line 897
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
        14: .line 895
            aload 2
            monitorexit
        15: goto 18
      StackMap locals: android.os.Handler$BlockingRunnable top android.os.Handler$BlockingRunnable
      StackMap stack: java.lang.Throwable
        16: aload 2
            monitorexit
        17: athrow
        18: .line 900
      StackMap locals: android.os.Handler$BlockingRunnable
      StackMap stack:
            return
        end local 0 // android.os.Handler$BlockingRunnable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Landroid/os/Handler$BlockingRunnable;
      Exception table:
        from    to  target  type
           0     2       2  any
           4     7       8  any
           8     9       8  any
          12    15      16  any
          16    17      16  any

  public boolean postAndWait(android.os.Handler, long);
    descriptor: (Landroid/os/Handler;J)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=3
        start local 0 // android.os.Handler$BlockingRunnable this
        start local 1 // android.os.Handler handler
        start local 2 // long timeout
         0: .line 903
            aload 1 /* handler */
            aload 0 /* this */
            invokevirtual android.os.Handler.post:(Ljava/lang/Runnable;)Z
            ifne 2
         1: .line 904
            iconst_0
            ireturn
         2: .line 907
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         3: .line 908
            lload 2 /* timeout */
            lconst_0
            lcmp
            ifle 18
         4: .line 909
            invokestatic android.os.SystemClock.uptimeMillis:()J
            lload 2 /* timeout */
            ladd
            lstore 5 /* expirationTime */
        start local 5 // long expirationTime
         5: .line 910
            goto 13
         6: .line 911
      StackMap locals: android.os.Handler$BlockingRunnable long
      StackMap stack:
            lload 5 /* expirationTime */
            invokestatic android.os.SystemClock.uptimeMillis:()J
            lsub
            lstore 7 /* delay */
        start local 7 // long delay
         7: .line 912
            lload 7 /* delay */
            lconst_0
            lcmp
            ifgt 10
         8: .line 913
            aload 4
            monitorexit
         9: iconst_0
            ireturn
        10: .line 916
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            lload 7 /* delay */
            invokevirtual java.lang.Object.wait:(J)V
        11: .line 917
            goto 13
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        12: pop
        end local 7 // long delay
        13: .line 910
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.os.Handler$BlockingRunnable.mDone:Z
            ifeq 6
        end local 5 // long expirationTime
        14: .line 920
            goto 19
        15: .line 923
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.wait:()V
        16: .line 924
            goto 18
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        17: pop
        18: .line 921
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.os.Handler$BlockingRunnable.mDone:Z
            ifeq 15
        19: .line 907
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        20: goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: aload 4
            monitorexit
        22: athrow
        23: .line 929
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // long timeout
        end local 1 // android.os.Handler handler
        end local 0 // android.os.Handler$BlockingRunnable this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   24     0            this  Landroid/os/Handler$BlockingRunnable;
            0   24     1         handler  Landroid/os/Handler;
            0   24     2         timeout  J
            5   14     5  expirationTime  J
            7   13     7           delay  J
      Exception table:
        from    to  target  type
          10    11      12  Class java.lang.InterruptedException
          15    16      17  Class java.lang.InterruptedException
           3     9      21  any
          10    20      21  any
          21    22      21  any
    MethodParameters:
         Name  Flags
      handler  
      timeout  
}
SourceFile: "Handler.java"
NestHost: android.os.Handler
InnerClasses:
  private final BlockingRunnable = android.os.Handler$BlockingRunnable of android.os.Handler