public class android.animation.AnimationHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.animation.AnimationHandler
  super_class: java.lang.Object
{
  private final android.util.ArrayMap<android.animation.AnimationHandler$AnimationFrameCallback, java.lang.Long> mDelayedCallbackStartTime;
    descriptor: Landroid/util/ArrayMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Landroid/util/ArrayMap<Landroid/animation/AnimationHandler$AnimationFrameCallback;Ljava/lang/Long;>;

  private final java.util.ArrayList<android.animation.AnimationHandler$AnimationFrameCallback> mAnimationCallbacks;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Landroid/animation/AnimationHandler$AnimationFrameCallback;>;

  private final java.util.ArrayList<android.animation.AnimationHandler$AnimationFrameCallback> mCommitCallbacks;
    descriptor: Ljava/util/ArrayList;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayList<Landroid/animation/AnimationHandler$AnimationFrameCallback;>;

  private android.animation.AnimationHandler$AnimationFrameCallbackProvider mProvider;
    descriptor: Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
    flags: (0x0002) ACC_PRIVATE

  private final android.view.Choreographer$FrameCallback mFrameCallback;
    descriptor: Landroid/view/Choreographer$FrameCallback;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public static final java.lang.ThreadLocal<android.animation.AnimationHandler> sAnimatorHandler;
    descriptor: Ljava/lang/ThreadLocal;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Signature: Ljava/lang/ThreadLocal<Landroid/animation/AnimationHandler;>;

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 61
            new java.lang.ThreadLocal
            dup
            invokespecial java.lang.ThreadLocal.<init>:()V
            putstatic android.animation.AnimationHandler.sAnimatorHandler:Ljava/lang/ThreadLocal;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.animation.AnimationHandler this
         0: .line 37
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 43
            aload 0 /* this */
         2: .line 44
            new android.util.ArrayMap
            dup
            invokespecial android.util.ArrayMap.<init>:()V
            putfield android.animation.AnimationHandler.mDelayedCallbackStartTime:Landroid/util/ArrayMap;
         3: .line 45
            aload 0 /* this */
         4: .line 46
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
         5: .line 47
            aload 0 /* this */
         6: .line 48
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield android.animation.AnimationHandler.mCommitCallbacks:Ljava/util/ArrayList;
         7: .line 51
            aload 0 /* this */
            new android.animation.AnimationHandler$1
            dup
            aload 0 /* this */
            invokespecial android.animation.AnimationHandler$1.<init>:(Landroid/animation/AnimationHandler;)V
            putfield android.animation.AnimationHandler.mFrameCallback:Landroid/view/Choreographer$FrameCallback;
         8: .line 62
            aload 0 /* this */
            iconst_0
            putfield android.animation.AnimationHandler.mListDirty:Z
         9: .line 37
            return
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Landroid/animation/AnimationHandler;

  public static android.animation.AnimationHandler getInstance();
    descriptor: ()Landroid/animation/AnimationHandler;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 65
            getstatic android.animation.AnimationHandler.sAnimatorHandler:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            ifnonnull 2
         1: .line 66
            getstatic android.animation.AnimationHandler.sAnimatorHandler:Ljava/lang/ThreadLocal;
            new android.animation.AnimationHandler
            dup
            invokespecial android.animation.AnimationHandler.<init>:()V
            invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
         2: .line 68
      StackMap locals:
      StackMap stack:
            getstatic android.animation.AnimationHandler.sAnimatorHandler:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast android.animation.AnimationHandler
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void setProvider(android.animation.AnimationHandler$AnimationFrameCallbackProvider);
    descriptor: (Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.animation.AnimationHandler this
        start local 1 // android.animation.AnimationHandler$AnimationFrameCallbackProvider provider
         0: .line 76
            aload 1 /* provider */
            ifnonnull 3
         1: .line 77
            aload 0 /* this */
            new android.animation.AnimationHandler$MyFrameCallbackProvider
            dup
            aload 0 /* this */
            invokespecial android.animation.AnimationHandler$MyFrameCallbackProvider.<init>:(Landroid/animation/AnimationHandler;)V
            putfield android.animation.AnimationHandler.mProvider:Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
         2: .line 78
            goto 4
         3: .line 79
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* provider */
            putfield android.animation.AnimationHandler.mProvider:Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
         4: .line 81
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.animation.AnimationHandler$AnimationFrameCallbackProvider provider
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Landroid/animation/AnimationHandler;
            0    5     1  provider  Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
    MethodParameters:
          Name  Flags
      provider  

  private android.animation.AnimationHandler$AnimationFrameCallbackProvider getProvider();
    descriptor: ()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.animation.AnimationHandler this
         0: .line 84
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mProvider:Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
            ifnonnull 2
         1: .line 85
            aload 0 /* this */
            new android.animation.AnimationHandler$MyFrameCallbackProvider
            dup
            aload 0 /* this */
            invokespecial android.animation.AnimationHandler$MyFrameCallbackProvider.<init>:(Landroid/animation/AnimationHandler;)V
            putfield android.animation.AnimationHandler.mProvider:Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
         2: .line 87
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mProvider:Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
            areturn
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/animation/AnimationHandler;

  public void addAnimationFrameCallback(android.animation.AnimationHandler$AnimationFrameCallback, long);
    descriptor: (Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // android.animation.AnimationHandler this
        start local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        start local 2 // long delay
         0: .line 94
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            ifne 2
         1: .line 95
            aload 0 /* this */
            invokevirtual android.animation.AnimationHandler.getProvider:()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mFrameCallback:Landroid/view/Choreographer$FrameCallback;
            invokeinterface android.animation.AnimationHandler$AnimationFrameCallbackProvider.postFrameCallback:(Landroid/view/Choreographer$FrameCallback;)V
         2: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
            ifne 4
         3: .line 98
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         4: .line 101
      StackMap locals:
      StackMap stack:
            lload 2 /* delay */
            lconst_0
            lcmp
            ifle 6
         5: .line 102
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mDelayedCallbackStartTime:Landroid/util/ArrayMap;
            aload 1 /* callback */
            invokestatic android.os.SystemClock.uptimeMillis:()J
            lload 2 /* delay */
            ladd
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual android.util.ArrayMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 104
      StackMap locals:
      StackMap stack:
            return
        end local 2 // long delay
        end local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Landroid/animation/AnimationHandler;
            0    7     1  callback  Landroid/animation/AnimationHandler$AnimationFrameCallback;
            0    7     2     delay  J
    MethodParameters:
          Name  Flags
      callback  final
      delay     

  public void addOneShotCommitCallback(android.animation.AnimationHandler$AnimationFrameCallback);
    descriptor: (Landroid/animation/AnimationHandler$AnimationFrameCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.animation.AnimationHandler this
        start local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
         0: .line 118
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mCommitCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
            ifne 2
         1: .line 119
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mCommitCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
         2: .line 121
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Landroid/animation/AnimationHandler;
            0    3     1  callback  Landroid/animation/AnimationHandler$AnimationFrameCallback;
    MethodParameters:
          Name  Flags
      callback  final

  public void removeCallback(android.animation.AnimationHandler$AnimationFrameCallback);
    descriptor: (Landroid/animation/AnimationHandler$AnimationFrameCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.animation.AnimationHandler this
        start local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
         0: .line 128
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mCommitCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 129
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mDelayedCallbackStartTime:Landroid/util/ArrayMap;
            aload 1 /* callback */
            invokevirtual android.util.ArrayMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 130
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.indexOf:(Ljava/lang/Object;)I
            istore 2 /* id */
        start local 2 // int id
         3: .line 131
            iload 2 /* id */
            iflt 6
         4: .line 132
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            iload 2 /* id */
            aconst_null
            invokevirtual java.util.ArrayList.set:(ILjava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 133
            aload 0 /* this */
            iconst_1
            putfield android.animation.AnimationHandler.mListDirty:Z
         6: .line 135
      StackMap locals: int
      StackMap stack:
            return
        end local 2 // int id
        end local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Landroid/animation/AnimationHandler;
            0    7     1  callback  Landroid/animation/AnimationHandler$AnimationFrameCallback;
            3    7     2        id  I
    MethodParameters:
          Name  Flags
      callback  

  private void doAnimationFrame(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // android.animation.AnimationHandler this
        start local 1 // long frameTime
         0: .line 138
            invokestatic android.os.SystemClock.uptimeMillis:()J
            lstore 3 /* currentTime */
        start local 3 // long currentTime
         1: .line 139
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            istore 5 /* size */
        start local 5 // int size
         2: .line 140
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 12
         4: .line 141
      StackMap locals: long int int
      StackMap stack:
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            iload 6 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.animation.AnimationHandler$AnimationFrameCallback
            astore 7 /* callback */
        start local 7 // android.animation.AnimationHandler$AnimationFrameCallback callback
         5: .line 142
            aload 7 /* callback */
            ifnonnull 7
         6: .line 143
            goto 11
         7: .line 145
      StackMap locals: android.animation.AnimationHandler$AnimationFrameCallback
      StackMap stack:
            aload 0 /* this */
            aload 7 /* callback */
            lload 3 /* currentTime */
            invokevirtual android.animation.AnimationHandler.isCallbackDue:(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)Z
            ifeq 11
         8: .line 146
            aload 7 /* callback */
            lload 1 /* frameTime */
            invokeinterface android.animation.AnimationHandler$AnimationFrameCallback.doAnimationFrame:(J)Z
            pop
         9: .line 147
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mCommitCallbacks:Ljava/util/ArrayList;
            aload 7 /* callback */
            invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
            ifeq 11
        10: .line 148
            aload 0 /* this */
            invokevirtual android.animation.AnimationHandler.getProvider:()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
            new android.animation.AnimationHandler$2
            dup
            aload 0 /* this */
            aload 7 /* callback */
            invokespecial android.animation.AnimationHandler$2.<init>:(Landroid/animation/AnimationHandler;Landroid/animation/AnimationHandler$AnimationFrameCallback;)V
            invokeinterface android.animation.AnimationHandler$AnimationFrameCallbackProvider.postCommitCallback:(Ljava/lang/Runnable;)V
        end local 7 // android.animation.AnimationHandler$AnimationFrameCallback callback
        11: .line 140
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 6 /* i */
            iload 5 /* size */
            if_icmplt 4
        end local 6 // int i
        13: .line 157
            aload 0 /* this */
            invokevirtual android.animation.AnimationHandler.cleanUpList:()V
        14: .line 158
            return
        end local 5 // int size
        end local 3 // long currentTime
        end local 1 // long frameTime
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   15     0         this  Landroid/animation/AnimationHandler;
            0   15     1    frameTime  J
            1   15     3  currentTime  J
            2   15     5         size  I
            3   13     6            i  I
            5   11     7     callback  Landroid/animation/AnimationHandler$AnimationFrameCallback;
    MethodParameters:
           Name  Flags
      frameTime  

  private void commitAnimationFrame(android.animation.AnimationHandler$AnimationFrameCallback, long);
    descriptor: (Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.animation.AnimationHandler this
        start local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        start local 2 // long frameTime
         0: .line 161
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mDelayedCallbackStartTime:Landroid/util/ArrayMap;
            aload 1 /* callback */
            invokevirtual android.util.ArrayMap.containsKey:(Ljava/lang/Object;)Z
            ifne 4
         1: .line 162
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mCommitCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.contains:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 163
            aload 1 /* callback */
            lload 2 /* frameTime */
            invokeinterface android.animation.AnimationHandler$AnimationFrameCallback.commitAnimationFrame:(J)V
         3: .line 164
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mCommitCallbacks:Ljava/util/ArrayList;
            aload 1 /* callback */
            invokevirtual java.util.ArrayList.remove:(Ljava/lang/Object;)Z
            pop
         4: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 2 // long frameTime
        end local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Landroid/animation/AnimationHandler;
            0    5     1   callback  Landroid/animation/AnimationHandler$AnimationFrameCallback;
            0    5     2  frameTime  J
    MethodParameters:
           Name  Flags
      callback   
      frameTime  

  private boolean isCallbackDue(android.animation.AnimationHandler$AnimationFrameCallback, long);
    descriptor: (Landroid/animation/AnimationHandler$AnimationFrameCallback;J)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // android.animation.AnimationHandler this
        start local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        start local 2 // long currentTime
         0: .line 175
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mDelayedCallbackStartTime:Landroid/util/ArrayMap;
            aload 1 /* callback */
            invokevirtual android.util.ArrayMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Long
            astore 4 /* startTime */
        start local 4 // java.lang.Long startTime
         1: .line 176
            aload 4 /* startTime */
            ifnonnull 3
         2: .line 177
            iconst_1
            ireturn
         3: .line 179
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 4 /* startTime */
            invokevirtual java.lang.Long.longValue:()J
            lload 2 /* currentTime */
            lcmp
            ifge 6
         4: .line 180
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mDelayedCallbackStartTime:Landroid/util/ArrayMap;
            aload 1 /* callback */
            invokevirtual android.util.ArrayMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 181
            iconst_1
            ireturn
         6: .line 183
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 4 // java.lang.Long startTime
        end local 2 // long currentTime
        end local 1 // android.animation.AnimationHandler$AnimationFrameCallback callback
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    7     0         this  Landroid/animation/AnimationHandler;
            0    7     1     callback  Landroid/animation/AnimationHandler$AnimationFrameCallback;
            0    7     2  currentTime  J
            1    7     4    startTime  Ljava/lang/Long;
    MethodParameters:
             Name  Flags
      callback     
      currentTime  

  public static int getAnimationCount();
    descriptor: ()I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=0
         0: .line 190
            getstatic android.animation.AnimationHandler.sAnimatorHandler:Ljava/lang/ThreadLocal;
            invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
            checkcast android.animation.AnimationHandler
            astore 0 /* handler */
        start local 0 // android.animation.AnimationHandler handler
         1: .line 191
            aload 0 /* handler */
            ifnonnull 3
         2: .line 192
            iconst_0
            ireturn
         3: .line 194
      StackMap locals: android.animation.AnimationHandler
      StackMap stack:
            aload 0 /* handler */
            invokevirtual android.animation.AnimationHandler.getCallbackSize:()I
            ireturn
        end local 0 // android.animation.AnimationHandler handler
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            1    4     0  handler  Landroid/animation/AnimationHandler;

  public static void setFrameDelay(long);
    descriptor: (J)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // long delay
         0: .line 198
            invokestatic android.animation.AnimationHandler.getInstance:()Landroid/animation/AnimationHandler;
            invokevirtual android.animation.AnimationHandler.getProvider:()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
            lload 0 /* delay */
            invokeinterface android.animation.AnimationHandler$AnimationFrameCallbackProvider.setFrameDelay:(J)V
         1: .line 199
            return
        end local 0 // long delay
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0  delay  J
    MethodParameters:
       Name  Flags
      delay  

  public static long getFrameDelay();
    descriptor: ()J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 202
            invokestatic android.animation.AnimationHandler.getInstance:()Landroid/animation/AnimationHandler;
            invokevirtual android.animation.AnimationHandler.getProvider:()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
            invokeinterface android.animation.AnimationHandler$AnimationFrameCallbackProvider.getFrameDelay:()J
            lreturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void autoCancelBasedOn(android.animation.ObjectAnimator);
    descriptor: (Landroid/animation/ObjectAnimator;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // android.animation.AnimationHandler this
        start local 1 // android.animation.ObjectAnimator objectAnimator
         0: .line 206
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            iconst_1
            isub
            istore 2 /* i */
        start local 2 // int i
         1: goto 8
         2: .line 207
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            iload 2 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.animation.AnimationHandler$AnimationFrameCallback
            astore 3 /* cb */
        start local 3 // android.animation.AnimationHandler$AnimationFrameCallback cb
         3: .line 208
            aload 3 /* cb */
            ifnonnull 5
         4: .line 209
            goto 7
         5: .line 211
      StackMap locals: android.animation.AnimationHandler$AnimationFrameCallback
      StackMap stack:
            aload 1 /* objectAnimator */
            aload 3 /* cb */
            invokevirtual android.animation.ObjectAnimator.shouldAutoCancel:(Landroid/animation/AnimationHandler$AnimationFrameCallback;)Z
            ifeq 7
         6: .line 212
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            iload 2 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            checkcast android.animation.Animator
            invokevirtual android.animation.Animator.cancel:()V
        end local 3 // android.animation.AnimationHandler$AnimationFrameCallback cb
         7: .line 206
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ -1
      StackMap locals:
      StackMap stack:
         8: iload 2 /* i */
            ifge 2
        end local 2 // int i
         9: .line 215
            return
        end local 1 // android.animation.ObjectAnimator objectAnimator
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   10     0            this  Landroid/animation/AnimationHandler;
            0   10     1  objectAnimator  Landroid/animation/ObjectAnimator;
            1    9     2               i  I
            3    7     3              cb  Landroid/animation/AnimationHandler$AnimationFrameCallback;
    MethodParameters:
                Name  Flags
      objectAnimator  

  private void cleanUpList();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.animation.AnimationHandler this
         0: .line 218
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mListDirty:Z
            ifeq 8
         1: .line 219
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            iconst_1
            isub
            istore 1 /* i */
        start local 1 // int i
         2: goto 6
         3: .line 220
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            iload 1 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            ifnonnull 5
         4: .line 221
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            iload 1 /* i */
            invokevirtual java.util.ArrayList.remove:(I)Ljava/lang/Object;
            pop
         5: .line 219
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ -1
      StackMap locals:
      StackMap stack:
         6: iload 1 /* i */
            ifge 3
        end local 1 // int i
         7: .line 224
            aload 0 /* this */
            iconst_0
            putfield android.animation.AnimationHandler.mListDirty:Z
         8: .line 226
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Landroid/animation/AnimationHandler;
            2    7     1     i  I

  private int getCallbackSize();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // android.animation.AnimationHandler this
         0: .line 229
            iconst_0
            istore 1 /* count */
        start local 1 // int count
         1: .line 230
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            invokevirtual java.util.ArrayList.size:()I
            istore 2 /* size */
        start local 2 // int size
         2: .line 231
            iload 2 /* size */
            iconst_1
            isub
            istore 3 /* i */
        start local 3 // int i
         3: goto 7
         4: .line 232
      StackMap locals: int int int
      StackMap stack:
            aload 0 /* this */
            getfield android.animation.AnimationHandler.mAnimationCallbacks:Ljava/util/ArrayList;
            iload 3 /* i */
            invokevirtual java.util.ArrayList.get:(I)Ljava/lang/Object;
            ifnull 6
         5: .line 233
            iinc 1 /* count */ 1
         6: .line 231
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ -1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* i */
            ifge 4
        end local 3 // int i
         8: .line 236
            iload 1 /* count */
            ireturn
        end local 2 // int size
        end local 1 // int count
        end local 0 // android.animation.AnimationHandler this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Landroid/animation/AnimationHandler;
            1    9     1  count  I
            2    9     2   size  I
            3    8     3      i  I
}
SourceFile: "AnimationHandler.java"
NestMembers:
  android.animation.AnimationHandler$1  android.animation.AnimationHandler$2  android.animation.AnimationHandler$AnimationFrameCallback  android.animation.AnimationHandler$AnimationFrameCallbackProvider  android.animation.AnimationHandler$MyFrameCallbackProvider
InnerClasses:
  android.animation.AnimationHandler$1
  android.animation.AnimationHandler$2
  abstract AnimationFrameCallback = android.animation.AnimationHandler$AnimationFrameCallback of android.animation.AnimationHandler
  public abstract AnimationFrameCallbackProvider = android.animation.AnimationHandler$AnimationFrameCallbackProvider of android.animation.AnimationHandler
  private MyFrameCallbackProvider = android.animation.AnimationHandler$MyFrameCallbackProvider of android.animation.AnimationHandler
  public abstract FrameCallback = android.view.Choreographer$FrameCallback of android.view.Choreographer