public class com.android.internal.widget.CachingIconView extends android.widget.ImageView
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.android.internal.widget.CachingIconView
  super_class: android.widget.ImageView
{
  private java.lang.String mLastPackage;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

  public void <init>(android.content.Context, android.util.AttributeSet);
    descriptor: (Landroid/content/Context;Landroid/util/AttributeSet;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.content.Context context
        start local 2 // android.util.AttributeSet attrs
         0: .line 48
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* attrs */
            invokespecial android.widget.ImageView.<init>:(Landroid/content/Context;Landroid/util/AttributeSet;)V
         1: .line 49
            return
        end local 2 // android.util.AttributeSet attrs
        end local 1 // android.content.Context context
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/android/internal/widget/CachingIconView;
            0    2     1  context  Landroid/content/Context;
            0    2     2    attrs  Landroid/util/AttributeSet;
    MethodParameters:
         Name  Flags
      context  
      attrs    

  public void setImageIcon(android.graphics.drawable.Icon);
    descriptor: (Landroid/graphics/drawable/Icon;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.graphics.drawable.Icon icon
         0: .line 54
            aload 0 /* this */
            aload 1 /* icon */
            invokevirtual com.android.internal.widget.CachingIconView.testAndSetCache:(Landroid/graphics/drawable/Icon;)Z
            ifne 4
         1: .line 55
            aload 0 /* this */
            iconst_1
            putfield com.android.internal.widget.CachingIconView.mInternalSetDrawable:Z
         2: .line 57
            aload 0 /* this */
            aload 1 /* icon */
            invokespecial android.widget.ImageView.setImageIcon:(Landroid/graphics/drawable/Icon;)V
         3: .line 58
            aload 0 /* this */
            iconst_0
            putfield com.android.internal.widget.CachingIconView.mInternalSetDrawable:Z
         4: .line 60
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.graphics.drawable.Icon icon
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/android/internal/widget/CachingIconView;
            0    5     1  icon  Landroid/graphics/drawable/Icon;
    RuntimeVisibleAnnotations: 
      android.view.RemotableViewMethod(asyncImpl = "setImageIconAsync")
    MethodParameters:
      Name  Flags
      icon  

  public java.lang.Runnable setImageIconAsync(android.graphics.drawable.Icon);
    descriptor: (Landroid/graphics/drawable/Icon;)Ljava/lang/Runnable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.graphics.drawable.Icon icon
         0: .line 64
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
         1: .line 65
            aload 0 /* this */
            aload 1 /* icon */
            invokespecial android.widget.ImageView.setImageIconAsync:(Landroid/graphics/drawable/Icon;)Ljava/lang/Runnable;
            areturn
        end local 1 // android.graphics.drawable.Icon icon
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/android/internal/widget/CachingIconView;
            0    2     1  icon  Landroid/graphics/drawable/Icon;
    MethodParameters:
      Name  Flags
      icon  

  public void setImageResource(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // int resId
         0: .line 71
            aload 0 /* this */
            iload 1 /* resId */
            invokevirtual com.android.internal.widget.CachingIconView.testAndSetCache:(I)Z
            ifne 4
         1: .line 72
            aload 0 /* this */
            iconst_1
            putfield com.android.internal.widget.CachingIconView.mInternalSetDrawable:Z
         2: .line 74
            aload 0 /* this */
            iload 1 /* resId */
            invokespecial android.widget.ImageView.setImageResource:(I)V
         3: .line 75
            aload 0 /* this */
            iconst_0
            putfield com.android.internal.widget.CachingIconView.mInternalSetDrawable:Z
         4: .line 77
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int resId
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/android/internal/widget/CachingIconView;
            0    5     1  resId  I
    RuntimeVisibleAnnotations: 
      android.view.RemotableViewMethod(asyncImpl = "setImageResourceAsync")
    MethodParameters:
       Name  Flags
      resId  

  public java.lang.Runnable setImageResourceAsync(int);
    descriptor: (I)Ljava/lang/Runnable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // int resId
         0: .line 81
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
         1: .line 82
            aload 0 /* this */
            iload 1 /* resId */
            invokespecial android.widget.ImageView.setImageResourceAsync:(I)Ljava/lang/Runnable;
            areturn
        end local 1 // int resId
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/android/internal/widget/CachingIconView;
            0    2     1  resId  I
    MethodParameters:
       Name  Flags
      resId  

  public void setImageURI(android.net.Uri);
    descriptor: (Landroid/net/Uri;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.net.Uri uri
         0: .line 88
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
         1: .line 89
            aload 0 /* this */
            aload 1 /* uri */
            invokespecial android.widget.ImageView.setImageURI:(Landroid/net/Uri;)V
         2: .line 90
            return
        end local 1 // android.net.Uri uri
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/internal/widget/CachingIconView;
            0    3     1   uri  Landroid/net/Uri;
    RuntimeVisibleAnnotations: 
      android.view.RemotableViewMethod(asyncImpl = "setImageURIAsync")
    MethodParameters:
      Name  Flags
      uri   

  public java.lang.Runnable setImageURIAsync(android.net.Uri);
    descriptor: (Landroid/net/Uri;)Ljava/lang/Runnable;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.net.Uri uri
         0: .line 94
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
         1: .line 95
            aload 0 /* this */
            aload 1 /* uri */
            invokespecial android.widget.ImageView.setImageURIAsync:(Landroid/net/Uri;)Ljava/lang/Runnable;
            areturn
        end local 1 // android.net.Uri uri
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/android/internal/widget/CachingIconView;
            0    2     1   uri  Landroid/net/Uri;
    MethodParameters:
      Name  Flags
      uri   

  public void setImageDrawable(android.graphics.drawable.Drawable);
    descriptor: (Landroid/graphics/drawable/Drawable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.graphics.drawable.Drawable drawable
         0: .line 100
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mInternalSetDrawable:Z
            ifne 2
         1: .line 102
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
         2: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* drawable */
            invokespecial android.widget.ImageView.setImageDrawable:(Landroid/graphics/drawable/Drawable;)V
         3: .line 105
            return
        end local 1 // android.graphics.drawable.Drawable drawable
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lcom/android/internal/widget/CachingIconView;
            0    4     1  drawable  Landroid/graphics/drawable/Drawable;
    MethodParameters:
          Name  Flags
      drawable  

  public void setImageBitmap(android.graphics.Bitmap);
    descriptor: (Landroid/graphics/Bitmap;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.graphics.Bitmap bm
         0: .line 110
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
         1: .line 111
            aload 0 /* this */
            aload 1 /* bm */
            invokespecial android.widget.ImageView.setImageBitmap:(Landroid/graphics/Bitmap;)V
         2: .line 112
            return
        end local 1 // android.graphics.Bitmap bm
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/internal/widget/CachingIconView;
            0    3     1    bm  Landroid/graphics/Bitmap;
    RuntimeVisibleAnnotations: 
      android.view.RemotableViewMethod()
    MethodParameters:
      Name  Flags
      bm    

  protected void onConfigurationChanged(android.content.res.Configuration);
    descriptor: (Landroid/content/res/Configuration;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.content.res.Configuration newConfig
         0: .line 116
            aload 0 /* this */
            aload 1 /* newConfig */
            invokespecial android.widget.ImageView.onConfigurationChanged:(Landroid/content/res/Configuration;)V
         1: .line 117
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
         2: .line 118
            return
        end local 1 // android.content.res.Configuration newConfig
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lcom/android/internal/widget/CachingIconView;
            0    3     1  newConfig  Landroid/content/res/Configuration;
    MethodParameters:
           Name  Flags
      newConfig  

  private synchronized boolean testAndSetCache(android.graphics.drawable.Icon);
    descriptor: (Landroid/graphics/drawable/Icon;)Z
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.graphics.drawable.Icon icon
         0: .line 124
            aload 1 /* icon */
            ifnull 11
            aload 1 /* icon */
            invokevirtual android.graphics.drawable.Icon.getType:()I
            iconst_2
            if_icmpne 11
         1: .line 125
            aload 0 /* this */
            aload 1 /* icon */
            invokevirtual com.android.internal.widget.CachingIconView.normalizeIconPackage:(Landroid/graphics/drawable/Icon;)Ljava/lang/String;
            astore 2 /* iconPackage */
        start local 2 // java.lang.String iconPackage
         2: .line 127
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mLastResId:I
            ifeq 6
         3: .line 128
            aload 1 /* icon */
            invokevirtual android.graphics.drawable.Icon.getResId:()I
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mLastResId:I
            if_icmpne 6
         4: .line 129
            aload 2 /* iconPackage */
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mLastPackage:Ljava/lang/String;
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 6
         5: .line 127
            iconst_1
            goto 7
      StackMap locals: java.lang.String
      StackMap stack:
         6: iconst_0
      StackMap locals:
      StackMap stack: int
         7: istore 3 /* isCached */
        start local 3 // boolean isCached
         8: .line 131
            aload 0 /* this */
            aload 2 /* iconPackage */
            putfield com.android.internal.widget.CachingIconView.mLastPackage:Ljava/lang/String;
         9: .line 132
            aload 0 /* this */
            aload 1 /* icon */
            invokevirtual android.graphics.drawable.Icon.getResId:()I
            putfield com.android.internal.widget.CachingIconView.mLastResId:I
        10: .line 134
            iload 3 /* isCached */
            ireturn
        end local 3 // boolean isCached
        end local 2 // java.lang.String iconPackage
        11: .line 136
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.resetCache:()V
        12: .line 137
            iconst_0
            ireturn
        end local 1 // android.graphics.drawable.Icon icon
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   13     0         this  Lcom/android/internal/widget/CachingIconView;
            0   13     1         icon  Landroid/graphics/drawable/Icon;
            2   11     2  iconPackage  Ljava/lang/String;
            8   11     3     isCached  Z
    MethodParameters:
      Name  Flags
      icon  

  private synchronized boolean testAndSetCache(int);
    descriptor: (I)Z
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // int resId
         0: .line 146
            iload 1 /* resId */
            ifeq 1
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mLastResId:I
            ifne 3
         1: .line 147
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* isCached */
        start local 2 // boolean isCached
         2: .line 148
            goto 6
        end local 2 // boolean isCached
         3: .line 149
      StackMap locals:
      StackMap stack:
            iload 1 /* resId */
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mLastResId:I
            if_icmpne 4
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mLastPackage:Ljava/lang/String;
            ifnonnull 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 2 /* isCached */
        start local 2 // boolean isCached
         6: .line 151
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.android.internal.widget.CachingIconView.mLastPackage:Ljava/lang/String;
         7: .line 152
            aload 0 /* this */
            iload 1 /* resId */
            putfield com.android.internal.widget.CachingIconView.mLastResId:I
         8: .line 153
            iload 2 /* isCached */
            ireturn
        end local 2 // boolean isCached
        end local 1 // int resId
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lcom/android/internal/widget/CachingIconView;
            0    9     1     resId  I
            2    3     2  isCached  Z
            6    9     2  isCached  Z
    MethodParameters:
       Name  Flags
      resId  

  private java.lang.String normalizeIconPackage(android.graphics.drawable.Icon);
    descriptor: (Landroid/graphics/drawable/Icon;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // android.graphics.drawable.Icon icon
         0: .line 162
            aload 1 /* icon */
            ifnonnull 2
         1: .line 163
            aconst_null
            areturn
         2: .line 166
      StackMap locals:
      StackMap stack:
            aload 1 /* icon */
            invokevirtual android.graphics.drawable.Icon.getResPackage:()Ljava/lang/String;
            astore 2 /* pkg */
        start local 2 // java.lang.String pkg
         3: .line 167
            aload 2 /* pkg */
            invokestatic android.text.TextUtils.isEmpty:(Ljava/lang/CharSequence;)Z
            ifeq 5
         4: .line 168
            aconst_null
            areturn
         5: .line 170
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* pkg */
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mContext:Landroid/content/Context;
            invokevirtual android.content.Context.getPackageName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 7
         6: .line 171
            aconst_null
            areturn
         7: .line 173
      StackMap locals:
      StackMap stack:
            aload 2 /* pkg */
            areturn
        end local 2 // java.lang.String pkg
        end local 1 // android.graphics.drawable.Icon icon
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/android/internal/widget/CachingIconView;
            0    8     1  icon  Landroid/graphics/drawable/Icon;
            3    8     2   pkg  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      icon  

  private synchronized void resetCache();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.widget.CachingIconView this
         0: .line 177
            aload 0 /* this */
            iconst_0
            putfield com.android.internal.widget.CachingIconView.mLastResId:I
         1: .line 178
            aload 0 /* this */
            aconst_null
            putfield com.android.internal.widget.CachingIconView.mLastPackage:Ljava/lang/String;
         2: .line 179
            return
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/internal/widget/CachingIconView;

  public void setForceHidden(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // boolean forceHidden
         0: .line 185
            aload 0 /* this */
            iload 1 /* forceHidden */
            putfield com.android.internal.widget.CachingIconView.mForceHidden:Z
         1: .line 186
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.updateVisibility:()V
         2: .line 187
            return
        end local 1 // boolean forceHidden
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lcom/android/internal/widget/CachingIconView;
            0    3     1  forceHidden  Z
    MethodParameters:
             Name  Flags
      forceHidden  

  public void setVisibility(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.widget.CachingIconView this
        start local 1 // int visibility
         0: .line 192
            aload 0 /* this */
            iload 1 /* visibility */
            putfield com.android.internal.widget.CachingIconView.mDesiredVisibility:I
         1: .line 193
            aload 0 /* this */
            invokevirtual com.android.internal.widget.CachingIconView.updateVisibility:()V
         2: .line 194
            return
        end local 1 // int visibility
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/android/internal/widget/CachingIconView;
            0    3     1  visibility  I
    RuntimeVisibleAnnotations: 
      android.view.RemotableViewMethod()
    MethodParameters:
            Name  Flags
      visibility  

  private void updateVisibility();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.android.internal.widget.CachingIconView this
         0: .line 197
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mDesiredVisibility:I
            ifne 1
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mForceHidden:Z
            ifeq 1
            iconst_4
            goto 2
         1: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.widget.CachingIconView.mDesiredVisibility:I
         2: .line 197
      StackMap locals:
      StackMap stack: int
            istore 1 /* visibility */
        start local 1 // int visibility
         3: .line 199
            aload 0 /* this */
            iload 1 /* visibility */
            invokespecial android.widget.ImageView.setVisibility:(I)V
         4: .line 200
            return
        end local 1 // int visibility
        end local 0 // com.android.internal.widget.CachingIconView this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/android/internal/widget/CachingIconView;
            3    5     1  visibility  I
}
SourceFile: "CachingIconView.java"
InnerClasses:
  public abstract RemoteView = android.widget.RemoteViews$RemoteView of android.widget.RemoteViews
    RuntimeVisibleAnnotations: 
      android.widget.RemoteViews$RemoteView()