public class android.os.UpdateLock
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.os.UpdateLock
  super_class: java.lang.Object
{
  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "UpdateLock"

  private static android.os.IUpdateLock sService;
    descriptor: Landroid/os/IUpdateLock;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  android.os.IBinder mToken;
    descriptor: Landroid/os/IBinder;
    flags: (0x0000) 

  int mCount;
    descriptor: I
    flags: (0x0000) 

  boolean mRefCounted;
    descriptor: Z
    flags: (0x0000) 

  boolean mHeld;
    descriptor: Z
    flags: (0x0000) 

  final java.lang.String mTag;
    descriptor: Ljava/lang/String;
    flags: (0x0010) ACC_FINAL

  public static final java.lang.String UPDATE_LOCK_CHANGED;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "android.os.UpdateLock.UPDATE_LOCK_CHANGED"

  public static final java.lang.String NOW_IS_CONVENIENT;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "nowisconvenient"

  public static final java.lang.String TIMESTAMP;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "timestamp"

  private static void checkService();
    descriptor: ()V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 35
            getstatic android.os.UpdateLock.sService:Landroid/os/IUpdateLock;
            ifnonnull 3
         1: .line 37
            ldc "updatelock"
            invokestatic android.os.ServiceManager.getService:(Ljava/lang/String;)Landroid/os/IBinder;
         2: .line 36
            invokestatic android.os.IUpdateLock$Stub.asInterface:(Landroid/os/IBinder;)Landroid/os/IUpdateLock;
            putstatic android.os.UpdateLock.sService:Landroid/os/IUpdateLock;
         3: .line 39
      StackMap locals:
      StackMap stack:
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.os.UpdateLock this
        start local 1 // java.lang.String tag
         0: .line 75
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 42
            aload 0 /* this */
            iconst_0
            putfield android.os.UpdateLock.mCount:I
         2: .line 43
            aload 0 /* this */
            iconst_1
            putfield android.os.UpdateLock.mRefCounted:Z
         3: .line 44
            aload 0 /* this */
            iconst_0
            putfield android.os.UpdateLock.mHeld:Z
         4: .line 76
            aload 0 /* this */
            aload 1 /* tag */
            putfield android.os.UpdateLock.mTag:Ljava/lang/String;
         5: .line 77
            aload 0 /* this */
            new android.os.Binder
            dup
            invokespecial android.os.Binder.<init>:()V
            putfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
         6: .line 78
            return
        end local 1 // java.lang.String tag
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/os/UpdateLock;
            0    7     1   tag  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      tag   

  public void setReferenceCounted(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.os.UpdateLock this
        start local 1 // boolean isRefCounted
         0: .line 87
            aload 0 /* this */
            iload 1 /* isRefCounted */
            putfield android.os.UpdateLock.mRefCounted:Z
         1: .line 88
            return
        end local 1 // boolean isRefCounted
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Landroid/os/UpdateLock;
            0    2     1  isRefCounted  Z
    MethodParameters:
              Name  Flags
      isRefCounted  

  public boolean isHeld();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.os.UpdateLock this
         0: .line 94
            aload 0 /* this */
            getfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
            dup
            astore 1
            monitorenter
         1: .line 95
            aload 0 /* this */
            getfield android.os.UpdateLock.mHeld:Z
            aload 1
            monitorexit
         2: ireturn
         3: .line 94
      StackMap locals: android.os.UpdateLock android.os.IBinder
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/os/UpdateLock;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public void acquire();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.os.UpdateLock this
         0: .line 106
            invokestatic android.os.UpdateLock.checkService:()V
         1: .line 107
            aload 0 /* this */
            getfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
            dup
            astore 1
            monitorenter
         2: .line 108
            aload 0 /* this */
            invokevirtual android.os.UpdateLock.acquireLocked:()V
         3: .line 107
            aload 1
            monitorexit
         4: goto 7
      StackMap locals: android.os.UpdateLock android.os.IBinder
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 110
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/os/UpdateLock;
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any

  private void acquireLocked();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.os.UpdateLock this
         0: .line 113
            aload 0 /* this */
            getfield android.os.UpdateLock.mRefCounted:Z
            ifeq 1
            aload 0 /* this */
            dup
            getfield android.os.UpdateLock.mCount:I
            dup_x1
            iconst_1
            iadd
            putfield android.os.UpdateLock.mCount:I
            ifne 7
         1: .line 114
      StackMap locals:
      StackMap stack:
            getstatic android.os.UpdateLock.sService:Landroid/os/IUpdateLock;
            ifnull 6
         2: .line 116
            getstatic android.os.UpdateLock.sService:Landroid/os/IUpdateLock;
            aload 0 /* this */
            getfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
            aload 0 /* this */
            getfield android.os.UpdateLock.mTag:Ljava/lang/String;
            invokeinterface android.os.IUpdateLock.acquireUpdateLock:(Landroid/os/IBinder;Ljava/lang/String;)V
         3: .line 117
            goto 6
      StackMap locals:
      StackMap stack: android.os.RemoteException
         4: pop
         5: .line 118
            ldc "UpdateLock"
            ldc "Unable to contact service to acquire"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         6: .line 121
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.os.UpdateLock.mHeld:Z
         7: .line 123
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/os/UpdateLock;
      Exception table:
        from    to  target  type
           2     3       4  Class android.os.RemoteException

  public void release();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.os.UpdateLock this
         0: .line 130
            invokestatic android.os.UpdateLock.checkService:()V
         1: .line 131
            aload 0 /* this */
            getfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
            dup
            astore 1
            monitorenter
         2: .line 132
            aload 0 /* this */
            invokevirtual android.os.UpdateLock.releaseLocked:()V
         3: .line 131
            aload 1
            monitorexit
         4: goto 7
      StackMap locals: android.os.UpdateLock android.os.IBinder
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 134
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/os/UpdateLock;
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any

  private void releaseLocked();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.os.UpdateLock this
         0: .line 137
            aload 0 /* this */
            getfield android.os.UpdateLock.mRefCounted:Z
            ifeq 1
            aload 0 /* this */
            dup
            getfield android.os.UpdateLock.mCount:I
            iconst_1
            isub
            dup_x1
            putfield android.os.UpdateLock.mCount:I
            ifne 7
         1: .line 138
      StackMap locals:
      StackMap stack:
            getstatic android.os.UpdateLock.sService:Landroid/os/IUpdateLock;
            ifnull 6
         2: .line 140
            getstatic android.os.UpdateLock.sService:Landroid/os/IUpdateLock;
            aload 0 /* this */
            getfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
            invokeinterface android.os.IUpdateLock.releaseUpdateLock:(Landroid/os/IBinder;)V
         3: .line 141
            goto 6
      StackMap locals:
      StackMap stack: android.os.RemoteException
         4: pop
         5: .line 142
            ldc "UpdateLock"
            ldc "Unable to contact service to release"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         6: .line 145
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.os.UpdateLock.mHeld:Z
         7: .line 147
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.os.UpdateLock.mCount:I
            ifge 9
         8: .line 148
            new java.lang.RuntimeException
            dup
            ldc "UpdateLock under-locked"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 150
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Landroid/os/UpdateLock;
      Exception table:
        from    to  target  type
           2     3       4  Class android.os.RemoteException

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.os.UpdateLock this
         0: .line 154
            aload 0 /* this */
            getfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
            dup
            astore 1
            monitorenter
         1: .line 156
            aload 0 /* this */
            getfield android.os.UpdateLock.mHeld:Z
            ifeq 7
         2: .line 157
            ldc "UpdateLock"
            ldc "UpdateLock finalized while still held"
            invokestatic android.util.Log.wtf:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         3: .line 159
            getstatic android.os.UpdateLock.sService:Landroid/os/IUpdateLock;
            aload 0 /* this */
            getfield android.os.UpdateLock.mToken:Landroid/os/IBinder;
            invokeinterface android.os.IUpdateLock.releaseUpdateLock:(Landroid/os/IBinder;)V
         4: .line 160
            goto 7
      StackMap locals: android.os.UpdateLock android.os.IBinder
      StackMap stack: android.os.RemoteException
         5: pop
         6: .line 161
            ldc "UpdateLock"
            ldc "Unable to contact service to release"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         7: .line 154
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 165
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.UpdateLock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Landroid/os/UpdateLock;
      Exception table:
        from    to  target  type
           3     4       5  Class android.os.RemoteException
           1     8       9  any
           9    10       9  any
    Exceptions:
      throws java.lang.Throwable
}
SourceFile: "UpdateLock.java"
InnerClasses:
  public abstract Stub = android.os.IUpdateLock$Stub of android.os.IUpdateLock