public abstract class android.os.TokenWatcher
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: android.os.TokenWatcher
  super_class: java.lang.Object
{
  private java.lang.Runnable mNotificationTask;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0002) ACC_PRIVATE

  private java.util.WeakHashMap<android.os.IBinder, android.os.TokenWatcher$Death> mTokens;
    descriptor: Ljava/util/WeakHashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/WeakHashMap<Landroid/os/IBinder;Landroid/os/TokenWatcher$Death;>;

  private android.os.Handler mHandler;
    descriptor: Landroid/os/Handler;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String mTag;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  private int mNotificationQueue;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private volatile boolean mAcquired;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  public void <init>(android.os.Handler, java.lang.String);
    descriptor: (Landroid/os/Handler;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // android.os.TokenWatcher this
        start local 1 // android.os.Handler h
        start local 2 // java.lang.String tag
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 161
            aload 0 /* this */
            new android.os.TokenWatcher$1
            dup
            aload 0 /* this */
            invokespecial android.os.TokenWatcher$1.<init>:(Landroid/os/TokenWatcher;)V
            putfield android.os.TokenWatcher.mNotificationTask:Ljava/lang/Runnable;
         2: .line 224
            aload 0 /* this */
            new java.util.WeakHashMap
            dup
            invokespecial java.util.WeakHashMap.<init>:()V
            putfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
         3: .line 227
            aload 0 /* this */
            iconst_m1
            putfield android.os.TokenWatcher.mNotificationQueue:I
         4: .line 228
            aload 0 /* this */
            iconst_0
            putfield android.os.TokenWatcher.mAcquired:Z
         5: .line 50
            aload 0 /* this */
            aload 1 /* h */
            putfield android.os.TokenWatcher.mHandler:Landroid/os/Handler;
         6: .line 51
            aload 0 /* this */
            aload 2 /* tag */
            ifnull 7
            aload 2 /* tag */
            goto 8
      StackMap locals: android.os.TokenWatcher android.os.Handler java.lang.String
      StackMap stack: android.os.TokenWatcher
         7: ldc "TokenWatcher"
      StackMap locals: android.os.TokenWatcher android.os.Handler java.lang.String
      StackMap stack: android.os.TokenWatcher java.lang.String
         8: putfield android.os.TokenWatcher.mTag:Ljava/lang/String;
         9: .line 52
            return
        end local 2 // java.lang.String tag
        end local 1 // android.os.Handler h
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Landroid/os/TokenWatcher;
            0   10     1     h  Landroid/os/Handler;
            0   10     2   tag  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      h     
      tag   

  public abstract void acquired();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract void released();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public void acquire(android.os.IBinder, java.lang.String);
    descriptor: (Landroid/os/IBinder;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // android.os.TokenWatcher this
        start local 1 // android.os.IBinder token
        start local 2 // java.lang.String tag
         0: .line 80
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            dup
            astore 3
            monitorenter
         1: .line 81
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            aload 1 /* token */
            invokevirtual java.util.WeakHashMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 82
            aload 3
            monitorexit
         3: return
         4: .line 87
      StackMap locals: java.util.WeakHashMap
      StackMap stack:
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            invokevirtual java.util.WeakHashMap.size:()I
            istore 4 /* oldSize */
        start local 4 // int oldSize
         5: .line 89
            new android.os.TokenWatcher$Death
            dup
            aload 0 /* this */
            aload 1 /* token */
            aload 2 /* tag */
            invokespecial android.os.TokenWatcher$Death.<init>:(Landroid/os/TokenWatcher;Landroid/os/IBinder;Ljava/lang/String;)V
            astore 5 /* d */
        start local 5 // android.os.TokenWatcher$Death d
         6: .line 91
            aload 1 /* token */
            aload 5 /* d */
            iconst_0
            invokeinterface android.os.IBinder.linkToDeath:(Landroid/os/IBinder$DeathRecipient;I)V
         7: .line 92
            goto 11
      StackMap locals: android.os.TokenWatcher android.os.IBinder java.lang.String java.util.WeakHashMap int android.os.TokenWatcher$Death
      StackMap stack: android.os.RemoteException
         8: pop
         9: .line 93
            aload 3
            monitorexit
        10: return
        11: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            aload 1 /* token */
            aload 5 /* d */
            invokevirtual java.util.WeakHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 97
            iload 4 /* oldSize */
            ifne 15
            aload 0 /* this */
            getfield android.os.TokenWatcher.mAcquired:Z
            ifne 15
        13: .line 98
            aload 0 /* this */
            iconst_1
            invokevirtual android.os.TokenWatcher.sendNotificationLocked:(Z)V
        14: .line 99
            aload 0 /* this */
            iconst_1
            putfield android.os.TokenWatcher.mAcquired:Z
        end local 5 // android.os.TokenWatcher$Death d
        end local 4 // int oldSize
        15: .line 80
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        16: goto 19
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: aload 3
            monitorexit
        18: athrow
        19: .line 102
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.String tag
        end local 1 // android.os.IBinder token
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   20     0     this  Landroid/os/TokenWatcher;
            0   20     1    token  Landroid/os/IBinder;
            0   20     2      tag  Ljava/lang/String;
            5   15     4  oldSize  I
            6   15     5        d  Landroid/os/TokenWatcher$Death;
      Exception table:
        from    to  target  type
           6     7       8  Class android.os.RemoteException
           1     3      17  any
           4    10      17  any
          11    16      17  any
          17    18      17  any
    MethodParameters:
       Name  Flags
      token  
      tag    

  public void cleanup(android.os.IBinder, boolean);
    descriptor: (Landroid/os/IBinder;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // android.os.TokenWatcher this
        start local 1 // android.os.IBinder token
        start local 2 // boolean unlink
         0: .line 106
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            dup
            astore 3
            monitorenter
         1: .line 107
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            aload 1 /* token */
            invokevirtual java.util.WeakHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.os.TokenWatcher$Death
            astore 4 /* d */
        start local 4 // android.os.TokenWatcher$Death d
         2: .line 108
            iload 2 /* unlink */
            ifeq 5
            aload 4 /* d */
            ifnull 5
         3: .line 109
            aload 4 /* d */
            getfield android.os.TokenWatcher$Death.token:Landroid/os/IBinder;
            aload 4 /* d */
            iconst_0
            invokeinterface android.os.IBinder.unlinkToDeath:(Landroid/os/IBinder$DeathRecipient;I)Z
            pop
         4: .line 110
            aload 4 /* d */
            aconst_null
            putfield android.os.TokenWatcher$Death.token:Landroid/os/IBinder;
         5: .line 113
      StackMap locals: java.util.WeakHashMap android.os.TokenWatcher$Death
      StackMap stack:
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            invokevirtual java.util.WeakHashMap.size:()I
            ifne 8
            aload 0 /* this */
            getfield android.os.TokenWatcher.mAcquired:Z
            ifeq 8
         6: .line 114
            aload 0 /* this */
            iconst_0
            invokevirtual android.os.TokenWatcher.sendNotificationLocked:(Z)V
         7: .line 115
            aload 0 /* this */
            iconst_0
            putfield android.os.TokenWatcher.mAcquired:Z
        end local 4 // android.os.TokenWatcher$Death d
         8: .line 106
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 3
            monitorexit
        11: athrow
        12: .line 118
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean unlink
        end local 1 // android.os.IBinder token
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Landroid/os/TokenWatcher;
            0   13     1   token  Landroid/os/IBinder;
            0   13     2  unlink  Z
            2    8     4       d  Landroid/os/TokenWatcher$Death;
      Exception table:
        from    to  target  type
           1     9      10  any
          10    11      10  any
    MethodParameters:
        Name  Flags
      token   
      unlink  

  public void release(android.os.IBinder);
    descriptor: (Landroid/os/IBinder;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.os.TokenWatcher this
        start local 1 // android.os.IBinder token
         0: .line 122
            aload 0 /* this */
            aload 1 /* token */
            iconst_1
            invokevirtual android.os.TokenWatcher.cleanup:(Landroid/os/IBinder;Z)V
         1: .line 123
            return
        end local 1 // android.os.IBinder token
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Landroid/os/TokenWatcher;
            0    2     1  token  Landroid/os/IBinder;
    MethodParameters:
       Name  Flags
      token  

  public boolean isAcquired();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.os.TokenWatcher this
         0: .line 127
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            dup
            astore 1
            monitorenter
         1: .line 128
            aload 0 /* this */
            getfield android.os.TokenWatcher.mAcquired:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 127
      StackMap locals: android.os.TokenWatcher java.util.WeakHashMap
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/os/TokenWatcher;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public void dump();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // android.os.TokenWatcher this
         0: .line 134
            aload 0 /* this */
            invokevirtual android.os.TokenWatcher.dumpInternal:()Ljava/util/ArrayList;
            astore 1 /* a */
        start local 1 // java.util.ArrayList a
         1: .line 135
            aload 1 /* a */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: android.os.TokenWatcher java.util.ArrayList top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* s */
        start local 2 // java.lang.String s
         3: .line 136
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTag:Ljava/lang/String;
            aload 2 /* s */
            invokestatic android.util.Log.i:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        end local 2 // java.lang.String s
         4: .line 135
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 138
            return
        end local 1 // java.util.ArrayList a
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Landroid/os/TokenWatcher;
            1    6     1     a  Ljava/util/ArrayList<Ljava/lang/String;>;
            3    4     2     s  Ljava/lang/String;

  public void dump(java.io.PrintWriter);
    descriptor: (Ljava/io/PrintWriter;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // android.os.TokenWatcher this
        start local 1 // java.io.PrintWriter pw
         0: .line 141
            aload 0 /* this */
            invokevirtual android.os.TokenWatcher.dumpInternal:()Ljava/util/ArrayList;
            astore 2 /* a */
        start local 2 // java.util.ArrayList a
         1: .line 142
            aload 2 /* a */
            invokevirtual java.util.ArrayList.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: android.os.TokenWatcher java.io.PrintWriter java.util.ArrayList top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* s */
        start local 3 // java.lang.String s
         3: .line 143
            aload 1 /* pw */
            aload 3 /* s */
            invokevirtual java.io.PrintWriter.println:(Ljava/lang/String;)V
        end local 3 // java.lang.String s
         4: .line 142
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 145
            return
        end local 2 // java.util.ArrayList a
        end local 1 // java.io.PrintWriter pw
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Landroid/os/TokenWatcher;
            0    6     1    pw  Ljava/io/PrintWriter;
            1    6     2     a  Ljava/util/ArrayList<Ljava/lang/String;>;
            3    4     3     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      pw    

  private java.util.ArrayList<java.lang.String> dumpInternal();
    descriptor: ()Ljava/util/ArrayList;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // android.os.TokenWatcher this
         0: .line 148
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* a */
        start local 1 // java.util.ArrayList a
         1: .line 149
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            dup
            astore 2
            monitorenter
         2: .line 150
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            invokevirtual java.util.WeakHashMap.keySet:()Ljava/util/Set;
            astore 3 /* keys */
        start local 3 // java.util.Set keys
         3: .line 151
            aload 1 /* a */
            new java.lang.StringBuilder
            dup
            ldc "Token count: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            invokevirtual java.util.WeakHashMap.size:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         4: .line 152
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: .line 153
            aload 3 /* keys */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 9
      StackMap locals: android.os.TokenWatcher java.util.ArrayList java.util.WeakHashMap java.util.Set int top java.util.Iterator
      StackMap stack:
         6: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.os.IBinder
            astore 5 /* b */
        start local 5 // android.os.IBinder b
         7: .line 154
            aload 1 /* a */
            new java.lang.StringBuilder
            dup
            ldc "["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 4 /* i */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "] "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield android.os.TokenWatcher.mTokens:Ljava/util/WeakHashMap;
            aload 5 /* b */
            invokevirtual java.util.WeakHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.os.TokenWatcher$Death
            getfield android.os.TokenWatcher$Death.tag:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " - "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* b */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         8: .line 155
            iinc 4 /* i */ 1
        end local 5 // android.os.IBinder b
         9: .line 153
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        end local 4 // int i
        end local 3 // java.util.Set keys
        10: .line 149
            aload 2
            monitorexit
        11: goto 14
      StackMap locals: android.os.TokenWatcher java.util.ArrayList java.util.WeakHashMap
      StackMap stack: java.lang.Throwable
        12: aload 2
            monitorexit
        13: athrow
        14: .line 158
      StackMap locals:
      StackMap stack:
            aload 1 /* a */
            areturn
        end local 1 // java.util.ArrayList a
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   15     0  this  Landroid/os/TokenWatcher;
            1   15     1     a  Ljava/util/ArrayList<Ljava/lang/String;>;
            3   10     3  keys  Ljava/util/Set<Landroid/os/IBinder;>;
            5   10     4     i  I
            7    9     5     b  Landroid/os/IBinder;
      Exception table:
        from    to  target  type
           2    11      12  any
          12    13      12  any
    Signature: ()Ljava/util/ArrayList<Ljava/lang/String;>;

  private void sendNotificationLocked(boolean);
    descriptor: (Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.os.TokenWatcher this
        start local 1 // boolean on
         0: .line 180
            iload 1 /* on */
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: istore 2 /* value */
        start local 2 // int value
         3: .line 181
            aload 0 /* this */
            getfield android.os.TokenWatcher.mNotificationQueue:I
            iconst_m1
            if_icmpne 7
         4: .line 183
            aload 0 /* this */
            iload 2 /* value */
            putfield android.os.TokenWatcher.mNotificationQueue:I
         5: .line 184
            aload 0 /* this */
            getfield android.os.TokenWatcher.mHandler:Landroid/os/Handler;
            aload 0 /* this */
            getfield android.os.TokenWatcher.mNotificationTask:Ljava/lang/Runnable;
            invokevirtual android.os.Handler.post:(Ljava/lang/Runnable;)Z
            pop
         6: .line 185
            goto 10
         7: .line 186
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.os.TokenWatcher.mNotificationQueue:I
            iload 2 /* value */
            if_icmpeq 10
         8: .line 188
            aload 0 /* this */
            iconst_m1
            putfield android.os.TokenWatcher.mNotificationQueue:I
         9: .line 189
            aload 0 /* this */
            getfield android.os.TokenWatcher.mHandler:Landroid/os/Handler;
            aload 0 /* this */
            getfield android.os.TokenWatcher.mNotificationTask:Ljava/lang/Runnable;
            invokevirtual android.os.Handler.removeCallbacks:(Ljava/lang/Runnable;)V
        10: .line 192
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int value
        end local 1 // boolean on
        end local 0 // android.os.TokenWatcher this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Landroid/os/TokenWatcher;
            0   11     1     on  Z
            3   11     2  value  I
    MethodParameters:
      Name  Flags
      on    
}
SourceFile: "TokenWatcher.java"
NestMembers:
  android.os.TokenWatcher$1  android.os.TokenWatcher$Death
InnerClasses:
  public abstract DeathRecipient = android.os.IBinder$DeathRecipient of android.os.IBinder
  android.os.TokenWatcher$1
  private Death = android.os.TokenWatcher$Death of android.os.TokenWatcher