class android.media.MediaPlayer$TimeProvider implements android.media.MediaPlayer$OnSeekCompleteListener, android.media.MediaTimeProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.media.MediaPlayer$TimeProvider
  super_class: java.lang.Object
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "MTP"

  private static final long MAX_NS_WITHOUT_POSITION_CHECK;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 5000000000

  private static final long MAX_EARLY_CALLBACK_US;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1000

  private static final long TIME_ADJUSTMENT_RATE;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private long mLastTimeUs;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private android.media.MediaPlayer mPlayer;
    descriptor: Landroid/media/MediaPlayer;
    flags: (0x0002) ACC_PRIVATE

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

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

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

  private long mLastReportedTime;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private android.media.MediaTimeProvider$OnMediaTimeListener[] mListeners;
    descriptor: [Landroid/media/MediaTimeProvider$OnMediaTimeListener;
    flags: (0x0002) ACC_PRIVATE

  private long[] mTimes;
    descriptor: [J
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

  private static final int NOTIFY;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int NOTIFY_TIME;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int NOTIFY_STOP;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int NOTIFY_SEEK;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private static final int NOTIFY_TRACK_DATA;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private android.os.HandlerThread mHandlerThread;
    descriptor: Landroid/os/HandlerThread;
    flags: (0x0002) ACC_PRIVATE

  public boolean DEBUG;
    descriptor: Z
    flags: (0x0001) ACC_PUBLIC

  public void <init>(android.media.MediaPlayer);
    descriptor: (Landroid/media/MediaPlayer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // android.media.MediaPlayer mp
         0: .line 5532
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 5508
            aload 0 /* this */
            lconst_0
            putfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
         2: .line 5510
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mPaused:Z
         3: .line 5511
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mStopped:Z
         4: .line 5519
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mRefresh:Z
         5: .line 5520
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mPausing:Z
         6: .line 5521
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
         7: .line 5530
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
         8: .line 5533
            aload 0 /* this */
            aload 1 /* mp */
            putfield android.media.MediaPlayer$TimeProvider.mPlayer:Landroid/media/MediaPlayer;
         9: .line 5535
            aload 0 /* this */
            iconst_1
            iconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.getCurrentTimeUs:(ZZ)J
            pop2
        10: .line 5536
            goto 13
      StackMap locals: android.media.MediaPlayer$TimeProvider android.media.MediaPlayer
      StackMap stack: java.lang.IllegalStateException
        11: pop
        12: .line 5538
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mRefresh:Z
        13: .line 5542
      StackMap locals:
      StackMap stack:
            invokestatic android.os.Looper.myLooper:()Landroid/os/Looper;
            dup
            astore 2 /* looper */
        start local 2 // android.os.Looper looper
        14: ifnonnull 21
        15: .line 5543
            invokestatic android.os.Looper.getMainLooper:()Landroid/os/Looper;
            dup
            astore 2 /* looper */
            ifnonnull 21
        16: .line 5545
            aload 0 /* this */
            new android.os.HandlerThread
            dup
            ldc "MediaPlayerMTPEventThread"
        17: .line 5546
            bipush -2
            invokespecial android.os.HandlerThread.<init>:(Ljava/lang/String;I)V
        18: .line 5545
            putfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
        19: .line 5547
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.start:()V
        20: .line 5548
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.getLooper:()Landroid/os/Looper;
            astore 2 /* looper */
        21: .line 5550
      StackMap locals: android.os.Looper
      StackMap stack:
            aload 0 /* this */
            new android.media.MediaPlayer$TimeProvider$EventHandler
            dup
            aload 0 /* this */
            aload 2 /* looper */
            invokespecial android.media.MediaPlayer$TimeProvider$EventHandler.<init>:(Landroid/media/MediaPlayer$TimeProvider;Landroid/os/Looper;)V
            putfield android.media.MediaPlayer$TimeProvider.mEventHandler:Landroid/os/Handler;
        22: .line 5552
            aload 0 /* this */
            iconst_0
            anewarray android.media.MediaTimeProvider$OnMediaTimeListener
            putfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
        23: .line 5553
            aload 0 /* this */
            iconst_0
            newarray 11
            putfield android.media.MediaPlayer$TimeProvider.mTimes:[J
        24: .line 5554
            aload 0 /* this */
            lconst_0
            putfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
        25: .line 5555
            return
        end local 2 // android.os.Looper looper
        end local 1 // android.media.MediaPlayer mp
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   26     0    this  Landroid/media/MediaPlayer$TimeProvider;
            0   26     1      mp  Landroid/media/MediaPlayer;
           14   26     2  looper  Landroid/os/Looper;
      Exception table:
        from    to  target  type
           9    10      11  Class java.lang.IllegalStateException
    MethodParameters:
      Name  Flags
      mp    

  private void scheduleNotification(int, long);
    descriptor: (IJ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // int type
        start local 2 // long delayUs
         0: .line 5559
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
            ifeq 2
            iload 1 /* type */
            ifne 2
         1: .line 5560
            return
         2: .line 5563
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 3
            ldc "MTP"
            new java.lang.StringBuilder
            dup
            ldc "scheduleNotification "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* type */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 2 /* delayUs */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.v:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         3: .line 5564
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mEventHandler:Landroid/os/Handler;
            iconst_1
            invokevirtual android.os.Handler.removeMessages:(I)V
         4: .line 5565
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mEventHandler:Landroid/os/Handler;
            iconst_1
            iload 1 /* type */
            iconst_0
            invokevirtual android.os.Handler.obtainMessage:(III)Landroid/os/Message;
            astore 4 /* msg */
        start local 4 // android.os.Message msg
         5: .line 5566
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mEventHandler:Landroid/os/Handler;
            aload 4 /* msg */
            lload 2 /* delayUs */
            ldc 1000
            ldiv
            l2i
            i2l
            invokevirtual android.os.Handler.sendMessageDelayed:(Landroid/os/Message;J)Z
            pop
         6: .line 5567
            return
        end local 4 // android.os.Message msg
        end local 2 // long delayUs
        end local 1 // int type
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Landroid/media/MediaPlayer$TimeProvider;
            0    7     1     type  I
            0    7     2  delayUs  J
            5    7     4      msg  Landroid/os/Message;
    MethodParameters:
         Name  Flags
      type     
      delayUs  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.MediaPlayer$TimeProvider this
         0: .line 5571
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mEventHandler:Landroid/os/Handler;
            iconst_1
            invokevirtual android.os.Handler.removeMessages:(I)V
         1: .line 5572
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
            ifnull 4
         2: .line 5573
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.quitSafely:()Z
            pop
         3: .line 5574
            aload 0 /* this */
            aconst_null
            putfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
         4: .line 5576
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/media/MediaPlayer$TimeProvider;

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.MediaPlayer$TimeProvider this
         0: .line 5580
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
            ifnull 2
         1: .line 5581
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mHandlerThread:Landroid/os/HandlerThread;
            invokevirtual android.os.HandlerThread.quitSafely:()Z
            pop
         2: .line 5583
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/MediaPlayer$TimeProvider;

  public void onNotifyTime();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // android.media.MediaPlayer$TimeProvider this
         0: .line 5587
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 5588
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 2
            ldc "MTP"
            ldc "onNotifyTime: "
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 5589
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            aload 0 /* this */
            iconst_0
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
         3: .line 5587
            aload 1
            monitorexit
         4: goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 5591
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/media/MediaPlayer$TimeProvider;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  public void onPaused(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // boolean paused
         0: .line 5595
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 5596
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 2
            ldc "MTP"
            new java.lang.StringBuilder
            dup
            ldc "onPaused: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* paused */
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 5597
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mStopped:Z
            ifeq 7
         3: .line 5598
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mStopped:Z
         4: .line 5599
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
         5: .line 5600
            aload 0 /* this */
            iconst_3
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
         6: .line 5601
            goto 10
         7: .line 5602
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* paused */
            putfield android.media.MediaPlayer$TimeProvider.mPausing:Z
         8: .line 5603
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
         9: .line 5604
            aload 0 /* this */
            iconst_0
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
        10: .line 5595
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 2
            monitorexit
        13: athrow
        14: .line 5607
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean paused
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   15     0    this  Landroid/media/MediaPlayer$TimeProvider;
            0   15     1  paused  Z
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    MethodParameters:
        Name  Flags
      paused  

  public void onBuffering(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // boolean buffering
         0: .line 5611
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 5612
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 2
            ldc "MTP"
            new java.lang.StringBuilder
            dup
            ldc "onBuffering: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* buffering */
            invokevirtual java.lang.StringBuilder.append:(Z)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 5613
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            aload 0 /* this */
            iload 1 /* buffering */
            putfield android.media.MediaPlayer$TimeProvider.mBuffering:Z
         3: .line 5614
            aload 0 /* this */
            iconst_0
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
         4: .line 5611
            aload 2
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 5616
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean buffering
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Landroid/media/MediaPlayer$TimeProvider;
            0    9     1  buffering  Z
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    MethodParameters:
           Name  Flags
      buffering  

  public void onStopped();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // android.media.MediaPlayer$TimeProvider this
         0: .line 5620
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 5621
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 2
            ldc "MTP"
            ldc "onStopped"
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 5622
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mPaused:Z
         3: .line 5623
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mStopped:Z
         4: .line 5624
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
         5: .line 5625
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mBuffering:Z
         6: .line 5626
            aload 0 /* this */
            iconst_2
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
         7: .line 5620
            aload 1
            monitorexit
         8: goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 5628
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   12     0  this  Landroid/media/MediaPlayer$TimeProvider;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any

  public void onSeekComplete(android.media.MediaPlayer);
    descriptor: (Landroid/media/MediaPlayer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // android.media.MediaPlayer mp
         0: .line 5633
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 5634
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mStopped:Z
         2: .line 5635
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
         3: .line 5636
            aload 0 /* this */
            iconst_3
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
         4: .line 5633
            aload 2
            monitorexit
         5: goto 8
      StackMap locals: android.media.MediaPlayer$TimeProvider android.media.MediaPlayer android.media.MediaPlayer$TimeProvider
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 5638
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.MediaPlayer mp
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Landroid/media/MediaPlayer$TimeProvider;
            0    9     1    mp  Landroid/media/MediaPlayer;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    MethodParameters:
      Name  Flags
      mp    

  public void onNewPlayer();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // android.media.MediaPlayer$TimeProvider this
         0: .line 5642
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mRefresh:Z
            ifeq 10
         1: .line 5643
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         2: .line 5644
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mStopped:Z
         3: .line 5645
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
         4: .line 5646
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mBuffering:Z
         5: .line 5647
            aload 0 /* this */
            iconst_3
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
         6: .line 5643
            aload 1
            monitorexit
         7: goto 10
      StackMap locals: android.media.MediaPlayer$TimeProvider android.media.MediaPlayer$TimeProvider
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 5650
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Landroid/media/MediaPlayer$TimeProvider;
      Exception table:
        from    to  target  type
           2     7       8  any
           8     9       8  any

  private synchronized void notifySeek();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // android.media.MediaPlayer$TimeProvider this
         0: .line 5653
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
         1: .line 5655
            aload 0 /* this */
            iconst_1
            iconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.getCurrentTimeUs:(ZZ)J
            lstore 1 /* timeUs */
        start local 1 // long timeUs
         2: .line 5656
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 3
            ldc "MTP"
            new java.lang.StringBuilder
            dup
            ldc "onSeekComplete at "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 1 /* timeUs */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         3: .line 5658
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 9
      StackMap locals: android.media.MediaPlayer$TimeProvider long top int int android.media.MediaTimeProvider$OnMediaTimeListener[]
      StackMap stack:
         4: aload 6
            iload 4
            aaload
            astore 3 /* listener */
        start local 3 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         5: .line 5659
            aload 3 /* listener */
            ifnonnull 7
         6: .line 5660
            goto 15
         7: .line 5662
      StackMap locals: android.media.MediaPlayer$TimeProvider long android.media.MediaTimeProvider$OnMediaTimeListener int int android.media.MediaTimeProvider$OnMediaTimeListener[]
      StackMap stack:
            aload 3 /* listener */
            lload 1 /* timeUs */
            invokeinterface android.media.MediaTimeProvider$OnMediaTimeListener.onSeek:(J)V
        end local 3 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         8: .line 5658
            iinc 4 1
      StackMap locals: android.media.MediaPlayer$TimeProvider long top int int android.media.MediaTimeProvider$OnMediaTimeListener[]
      StackMap stack:
         9: iload 4
            iload 5
            if_icmplt 4
        end local 1 // long timeUs
        10: .line 5664
            goto 15
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack: java.lang.IllegalStateException
        11: pop
        12: .line 5666
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 13
            ldc "MTP"
            ldc "onSeekComplete but no player"
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        13: .line 5667
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mPausing:Z
        14: .line 5668
            aload 0 /* this */
            iconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.notifyTimedEvent:(Z)V
        15: .line 5670
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Landroid/media/MediaPlayer$TimeProvider;
            2   10     1    timeUs  J
            5    8     3  listener  Landroid/media/MediaTimeProvider$OnMediaTimeListener;
      Exception table:
        from    to  target  type
           1    10      11  Class java.lang.IllegalStateException

  private synchronized void notifyTrackData(android.util.Pair<android.media.SubtitleTrack, byte[]>);
    descriptor: (Landroid/util/Pair;)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // android.util.Pair trackData
         0: .line 5673
            aload 1 /* trackData */
            getfield android.util.Pair.first:Ljava/lang/Object;
            checkcast android.media.SubtitleTrack
            astore 2 /* track */
        start local 2 // android.media.SubtitleTrack track
         1: .line 5674
            aload 1 /* trackData */
            getfield android.util.Pair.second:Ljava/lang/Object;
            checkcast byte[]
            astore 3 /* data */
        start local 3 // byte[] data
         2: .line 5675
            aload 2 /* track */
            aload 3 /* data */
            iconst_1
            ldc -1
            invokevirtual android.media.SubtitleTrack.onData:([BZJ)V
         3: .line 5676
            return
        end local 3 // byte[] data
        end local 2 // android.media.SubtitleTrack track
        end local 1 // android.util.Pair trackData
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Landroid/media/MediaPlayer$TimeProvider;
            0    4     1  trackData  Landroid/util/Pair<Landroid/media/SubtitleTrack;[B>;
            1    4     2      track  Landroid/media/SubtitleTrack;
            2    4     3       data  [B
    Signature: (Landroid/util/Pair<Landroid/media/SubtitleTrack;[B>;)V
    MethodParameters:
           Name  Flags
      trackData  

  private synchronized void notifyStop();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=5, args_size=1
        start local 0 // android.media.MediaPlayer$TimeProvider this
         0: .line 5679
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 6
      StackMap locals: android.media.MediaPlayer$TimeProvider top int int android.media.MediaTimeProvider$OnMediaTimeListener[]
      StackMap stack:
         1: aload 4
            iload 2
            aaload
            astore 1 /* listener */
        start local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         2: .line 5680
            aload 1 /* listener */
            ifnonnull 4
         3: .line 5681
            goto 7
         4: .line 5683
      StackMap locals: android.media.MediaPlayer$TimeProvider android.media.MediaTimeProvider$OnMediaTimeListener int int android.media.MediaTimeProvider$OnMediaTimeListener[]
      StackMap stack:
            aload 1 /* listener */
            invokeinterface android.media.MediaTimeProvider$OnMediaTimeListener.onStop:()V
        end local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         5: .line 5679
            iinc 2 1
      StackMap locals: android.media.MediaPlayer$TimeProvider top int int android.media.MediaTimeProvider$OnMediaTimeListener[]
      StackMap stack:
         6: iload 2
            iload 3
            if_icmplt 1
         7: .line 5685
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            return
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    8     0      this  Landroid/media/MediaPlayer$TimeProvider;
            2    5     1  listener  Landroid/media/MediaTimeProvider$OnMediaTimeListener;

  private int registerListener(android.media.MediaTimeProvider$OnMediaTimeListener);
    descriptor: (Landroid/media/MediaTimeProvider$OnMediaTimeListener;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         0: .line 5688
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: .line 5689
            goto 5
         2: .line 5690
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 2 /* i */
            aaload
            aload 1 /* listener */
            if_acmpeq 6
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 2 /* i */
            aaload
            ifnonnull 4
         3: .line 5691
            goto 6
         4: .line 5689
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            arraylength
            if_icmplt 2
         6: .line 5696
      StackMap locals:
      StackMap stack:
            iload 2 /* i */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            arraylength
            if_icmplt 14
         7: .line 5698
            iload 2 /* i */
            iconst_1
            iadd
            anewarray android.media.MediaTimeProvider$OnMediaTimeListener
         8: .line 5697
            astore 3 /* newListeners */
        start local 3 // android.media.MediaTimeProvider$OnMediaTimeListener[] newListeners
         9: .line 5699
            iload 2 /* i */
            iconst_1
            iadd
            newarray 11
            astore 4 /* newTimes */
        start local 4 // long[] newTimes
        10: .line 5700
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iconst_0
            aload 3 /* newListeners */
            iconst_0
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        11: .line 5701
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iconst_0
            aload 4 /* newTimes */
            iconst_0
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        12: .line 5702
            aload 0 /* this */
            aload 3 /* newListeners */
            putfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
        13: .line 5703
            aload 0 /* this */
            aload 4 /* newTimes */
            putfield android.media.MediaPlayer$TimeProvider.mTimes:[J
        end local 4 // long[] newTimes
        end local 3 // android.media.MediaTimeProvider$OnMediaTimeListener[] newListeners
        14: .line 5706
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 2 /* i */
            aaload
            ifnonnull 17
        15: .line 5707
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 2 /* i */
            aload 1 /* listener */
            aastore
        16: .line 5708
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 2 /* i */
            ldc -1
            lastore
        17: .line 5710
      StackMap locals:
      StackMap stack:
            iload 2 /* i */
            ireturn
        end local 2 // int i
        end local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   18     0          this  Landroid/media/MediaPlayer$TimeProvider;
            0   18     1      listener  Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            1   18     2             i  I
            9   14     3  newListeners  [Landroid/media/MediaTimeProvider$OnMediaTimeListener;
           10   14     4      newTimes  [J
    MethodParameters:
          Name  Flags
      listener  

  public void notifyAt(long, android.media.MediaTimeProvider$OnMediaTimeListener);
    descriptor: (JLandroid/media/MediaTimeProvider$OnMediaTimeListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // long timeUs
        start local 3 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         0: .line 5715
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         1: .line 5716
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 2
            ldc "MTP"
            new java.lang.StringBuilder
            dup
            ldc "notifyAt "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 1 /* timeUs */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 5717
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            aload 0 /* this */
            aload 3 /* listener */
            invokevirtual android.media.MediaPlayer$TimeProvider.registerListener:(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)I
            lload 1 /* timeUs */
            lastore
         3: .line 5718
            aload 0 /* this */
            iconst_0
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
         4: .line 5715
            aload 4
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 4
            monitorexit
         7: athrow
         8: .line 5720
      StackMap locals:
      StackMap stack:
            return
        end local 3 // android.media.MediaTimeProvider$OnMediaTimeListener listener
        end local 1 // long timeUs
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Landroid/media/MediaPlayer$TimeProvider;
            0    9     1    timeUs  J
            0    9     3  listener  Landroid/media/MediaTimeProvider$OnMediaTimeListener;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    MethodParameters:
          Name  Flags
      timeUs    
      listener  

  public void scheduleUpdate(android.media.MediaTimeProvider$OnMediaTimeListener);
    descriptor: (Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         0: .line 5723
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 5724
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 2
            ldc "MTP"
            ldc "scheduleUpdate"
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 5725
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            aload 0 /* this */
            aload 1 /* listener */
            invokevirtual android.media.MediaPlayer$TimeProvider.registerListener:(Landroid/media/MediaTimeProvider$OnMediaTimeListener;)I
            istore 3 /* i */
        start local 3 // int i
         3: .line 5727
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mStopped:Z
            ifne 6
         4: .line 5728
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 3 /* i */
            lconst_0
            lastore
         5: .line 5729
            aload 0 /* this */
            iconst_0
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
        end local 3 // int i
         6: .line 5723
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         7: goto 10
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: aload 2
            monitorexit
         9: athrow
        10: .line 5732
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Landroid/media/MediaPlayer$TimeProvider;
            0   11     1  listener  Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            3    6     3         i  I
      Exception table:
        from    to  target  type
           1     7       8  any
           8     9       8  any
    MethodParameters:
          Name  Flags
      listener  

  public void cancelNotifications(android.media.MediaTimeProvider$OnMediaTimeListener);
    descriptor: (Landroid/media/MediaTimeProvider$OnMediaTimeListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
         0: .line 5736
            aload 0 /* this */
            dup
            astore 2
            monitorenter
         1: .line 5737
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: .line 5738
            goto 16
         3: .line 5739
      StackMap locals: android.media.MediaPlayer$TimeProvider int
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 3 /* i */
            aaload
            aload 1 /* listener */
            if_acmpne 13
         4: .line 5740
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 3 /* i */
            iconst_1
            iadd
         5: .line 5741
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 3 /* i */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
         6: .line 5740
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         7: .line 5742
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 3 /* i */
            iconst_1
            iadd
         8: .line 5743
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 3 /* i */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            arraylength
            iload 3 /* i */
            isub
            iconst_1
            isub
         9: .line 5742
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        10: .line 5744
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            arraylength
            iconst_1
            isub
            aconst_null
            aastore
        11: .line 5745
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            arraylength
            iconst_1
            isub
            ldc -1
            lastore
        12: .line 5746
            goto 17
        13: .line 5747
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 3 /* i */
            aaload
            ifnonnull 15
        14: .line 5748
            goto 17
        15: .line 5738
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 3 /* i */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            arraylength
            if_icmplt 3
        17: .line 5752
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
        end local 3 // int i
        18: .line 5736
            aload 2
            monitorexit
        19: goto 22
      StackMap locals: android.media.MediaPlayer$TimeProvider android.media.MediaTimeProvider$OnMediaTimeListener android.media.MediaPlayer$TimeProvider
      StackMap stack: java.lang.Throwable
        20: aload 2
            monitorexit
        21: athrow
        22: .line 5754
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.MediaTimeProvider$OnMediaTimeListener listener
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   23     0      this  Landroid/media/MediaPlayer$TimeProvider;
            0   23     1  listener  Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            2   18     3         i  I
      Exception table:
        from    to  target  type
           1    19      20  any
          20    21      20  any
    MethodParameters:
          Name  Flags
      listener  

  private synchronized void notifyTimedEvent(boolean);
    descriptor: (Z)V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=6, locals=13, args_size=2
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // boolean refreshTime
         0: .line 5760
            aload 0 /* this */
            iload 1 /* refreshTime */
            iconst_1
            invokevirtual android.media.MediaPlayer$TimeProvider.getCurrentTimeUs:(ZZ)J
            lstore 2 /* nowUs */
        start local 2 // long nowUs
         1: .line 5761
            goto 6
        end local 2 // long nowUs
      StackMap locals:
      StackMap stack: java.lang.IllegalStateException
         2: pop
         3: .line 5763
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mRefresh:Z
         4: .line 5764
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mPausing:Z
         5: .line 5765
            aload 0 /* this */
            iload 1 /* refreshTime */
            iconst_1
            invokevirtual android.media.MediaPlayer$TimeProvider.getCurrentTimeUs:(ZZ)J
            lstore 2 /* nowUs */
        start local 2 // long nowUs
         6: .line 5767
      StackMap locals: long
      StackMap stack:
            lload 2 /* nowUs */
            lstore 4 /* nextTimeUs */
        start local 4 // long nextTimeUs
         7: .line 5769
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
            ifeq 9
         8: .line 5771
            return
         9: .line 5774
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 25
        10: .line 5775
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 6 /* sb */
        start local 6 // java.lang.StringBuilder sb
        11: .line 5776
            aload 6 /* sb */
            ldc "notifyTimedEvent("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " -> "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        12: .line 5777
            lload 2 /* nowUs */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ") from {"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 5778
            iconst_1
            istore 7 /* first */
        start local 7 // boolean first
        14: .line 5779
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            dup
            astore 12
            arraylength
            istore 11
            iconst_0
            istore 10
            goto 22
      StackMap locals: android.media.MediaPlayer$TimeProvider int long long java.lang.StringBuilder int top top int int long[]
      StackMap stack:
        15: aload 12
            iload 10
            laload
            lstore 8 /* time */
        start local 8 // long time
        16: .line 5780
            lload 8 /* time */
            ldc -1
            lcmp
            ifne 18
        17: .line 5781
            goto 21
        18: .line 5783
      StackMap locals: android.media.MediaPlayer$TimeProvider int long long java.lang.StringBuilder int long int int long[]
      StackMap stack:
            iload 7 /* first */
            ifne 19
            aload 6 /* sb */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        19: .line 5784
      StackMap locals:
      StackMap stack:
            aload 6 /* sb */
            lload 8 /* time */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            pop
        20: .line 5785
            iconst_0
            istore 7 /* first */
        end local 8 // long time
        21: .line 5779
      StackMap locals: android.media.MediaPlayer$TimeProvider int long long java.lang.StringBuilder int top top int int long[]
      StackMap stack:
            iinc 10 1
      StackMap locals:
      StackMap stack:
        22: iload 10
            iload 11
            if_icmplt 15
        23: .line 5787
            aload 6 /* sb */
            ldc "}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        24: .line 5788
            ldc "MTP"
            aload 6 /* sb */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        end local 7 // boolean first
        end local 6 // java.lang.StringBuilder sb
        25: .line 5792
      StackMap locals: android.media.MediaPlayer$TimeProvider int long long
      StackMap stack:
            new java.util.Vector
            dup
            invokespecial java.util.Vector.<init>:()V
        26: .line 5791
            astore 6 /* activatedListeners */
        start local 6 // java.util.Vector activatedListeners
        27: .line 5793
            iconst_0
            istore 7 /* ix */
        start local 7 // int ix
        28: goto 40
        29: .line 5794
      StackMap locals: java.util.Vector int
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 7 /* ix */
            aaload
            ifnonnull 31
        30: .line 5795
            goto 41
        31: .line 5797
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 7 /* ix */
            laload
            ldc -1
            lcmp
            ifle 39
        32: .line 5799
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 7 /* ix */
            laload
            lload 2 /* nowUs */
            ldc 1000
            ladd
            lcmp
            ifgt 37
        33: .line 5800
            aload 6 /* activatedListeners */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mListeners:[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
            iload 7 /* ix */
            aaload
            invokevirtual java.util.Vector.add:(Ljava/lang/Object;)Z
            pop
        34: .line 5801
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 35
            ldc "MTP"
            ldc "removed"
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        35: .line 5802
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 7 /* ix */
            ldc -1
            lastore
        36: .line 5803
            goto 39
      StackMap locals:
      StackMap stack:
        37: lload 4 /* nextTimeUs */
            lload 2 /* nowUs */
            lcmp
            ifeq 38
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 7 /* ix */
            laload
            lload 4 /* nextTimeUs */
            lcmp
            ifge 39
        38: .line 5804
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            iload 7 /* ix */
            laload
            lstore 4 /* nextTimeUs */
        39: .line 5793
      StackMap locals:
      StackMap stack:
            iinc 7 /* ix */ 1
      StackMap locals:
      StackMap stack:
        40: iload 7 /* ix */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mTimes:[J
            arraylength
            if_icmplt 29
        end local 7 // int ix
        41: .line 5808
      StackMap locals:
      StackMap stack:
            lload 4 /* nextTimeUs */
            lload 2 /* nowUs */
            lcmp
            ifle 45
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mPaused:Z
            ifne 45
        42: .line 5810
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 43
            ldc "MTP"
            new java.lang.StringBuilder
            dup
            ldc "scheduling for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 4 /* nextTimeUs */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " and "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 2 /* nowUs */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        43: .line 5811
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mPlayer:Landroid/media/MediaPlayer;
            lload 4 /* nextTimeUs */
            invokevirtual android.media.MediaPlayer.notifyAt:(J)V
        44: .line 5812
            goto 46
        45: .line 5813
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mEventHandler:Landroid/os/Handler;
            iconst_1
            invokevirtual android.os.Handler.removeMessages:(I)V
        46: .line 5817
      StackMap locals:
      StackMap stack:
            aload 6 /* activatedListeners */
            invokevirtual java.util.Vector.iterator:()Ljava/util/Iterator;
            astore 8
            goto 49
      StackMap locals: android.media.MediaPlayer$TimeProvider int long long java.util.Vector top java.util.Iterator
      StackMap stack:
        47: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.media.MediaTimeProvider$OnMediaTimeListener
            astore 7 /* listener */
        start local 7 // android.media.MediaTimeProvider$OnMediaTimeListener listener
        48: .line 5818
            aload 7 /* listener */
            lload 2 /* nowUs */
            invokeinterface android.media.MediaTimeProvider$OnMediaTimeListener.onTimedEvent:(J)V
        end local 7 // android.media.MediaTimeProvider$OnMediaTimeListener listener
        49: .line 5817
      StackMap locals:
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 47
        50: .line 5820
            return
        end local 6 // java.util.Vector activatedListeners
        end local 4 // long nextTimeUs
        end local 2 // long nowUs
        end local 1 // boolean refreshTime
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   51     0                this  Landroid/media/MediaPlayer$TimeProvider;
            0   51     1         refreshTime  Z
            1    2     2               nowUs  J
            6   51     2               nowUs  J
            7   51     4          nextTimeUs  J
           11   25     6                  sb  Ljava/lang/StringBuilder;
           14   25     7               first  Z
           16   21     8                time  J
           27   51     6  activatedListeners  Ljava/util/Vector<Landroid/media/MediaTimeProvider$OnMediaTimeListener;>;
           28   41     7                  ix  I
           48   49     7            listener  Landroid/media/MediaTimeProvider$OnMediaTimeListener;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.IllegalStateException
    MethodParameters:
             Name  Flags
      refreshTime  

  public long getCurrentTimeUs(boolean, boolean);
    descriptor: (ZZ)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // android.media.MediaPlayer$TimeProvider this
        start local 1 // boolean refreshTime
        start local 2 // boolean monotonic
         0: .line 5824
            aload 0 /* this */
            dup
            astore 3
            monitorenter
         1: .line 5827
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mPaused:Z
            ifeq 4
            iload 1 /* refreshTime */
            ifne 4
         2: .line 5828
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
            aload 3
            monitorexit
         3: lreturn
         4: .line 5832
      StackMap locals: android.media.MediaPlayer$TimeProvider
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mPlayer:Landroid/media/MediaPlayer;
            invokevirtual android.media.MediaPlayer.getCurrentPosition:()I
            i2l
            ldc 1000
            lmul
            putfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
         5: .line 5833
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mPlayer:Landroid/media/MediaPlayer;
            invokevirtual android.media.MediaPlayer.isPlaying:()Z
            ifeq 6
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mBuffering:Z
            ifne 6
            iconst_0
            goto 7
      StackMap locals:
      StackMap stack: android.media.MediaPlayer$TimeProvider
         6: iconst_1
      StackMap locals: android.media.MediaPlayer$TimeProvider int int android.media.MediaPlayer$TimeProvider
      StackMap stack: android.media.MediaPlayer$TimeProvider int
         7: putfield android.media.MediaPlayer$TimeProvider.mPaused:Z
         8: .line 5834
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 23
            ldc "MTP"
         9: new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mPaused:Z
            ifeq 10
            ldc "paused"
            goto 11
      StackMap locals: android.media.MediaPlayer$TimeProvider int int android.media.MediaPlayer$TimeProvider
      StackMap stack: java.lang.String new 9 new 9
        10: ldc "playing"
      StackMap locals: android.media.MediaPlayer$TimeProvider int int android.media.MediaPlayer$TimeProvider
      StackMap stack: java.lang.String new 9 new 9 java.lang.String
        11: invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " at "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.v:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        12: .line 5835
            goto 23
      StackMap locals:
      StackMap stack: java.lang.IllegalStateException
        13: astore 4 /* e */
        start local 4 // java.lang.IllegalStateException e
        14: .line 5836
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mPausing:Z
            ifeq 22
        15: .line 5838
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mPausing:Z
        16: .line 5839
            iload 2 /* monotonic */
            ifeq 17
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
            lcmp
            ifge 18
        17: .line 5840
      StackMap locals: java.lang.IllegalStateException
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
            putfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
        18: .line 5842
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mPaused:Z
        19: .line 5843
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.DEBUG:Z
            ifeq 20
            ldc "MTP"
            new java.lang.StringBuilder
            dup
            ldc "illegal state, but pausing: estimating at "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        20: .line 5844
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
            aload 3
            monitorexit
        21: lreturn
        22: .line 5847
      StackMap locals:
      StackMap stack:
            aload 4 /* e */
            athrow
        end local 4 // java.lang.IllegalStateException e
        23: .line 5849
      StackMap locals:
      StackMap stack:
            iload 2 /* monotonic */
            ifeq 29
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
            lcmp
            ifge 29
        24: .line 5851
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
            lsub
            ldc 1000000
            lcmp
            ifle 30
        25: .line 5854
            aload 0 /* this */
            iconst_0
            putfield android.media.MediaPlayer$TimeProvider.mStopped:Z
        26: .line 5855
            aload 0 /* this */
            iconst_1
            putfield android.media.MediaPlayer$TimeProvider.mSeeking:Z
        27: .line 5856
            aload 0 /* this */
            iconst_3
            lconst_0
            invokevirtual android.media.MediaPlayer$TimeProvider.scheduleNotification:(IJ)V
        28: .line 5858
            goto 30
        29: .line 5859
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastTimeUs:J
            putfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
        30: .line 5862
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.MediaPlayer$TimeProvider.mLastReportedTime:J
            aload 3
            monitorexit
        31: lreturn
        32: .line 5824
      StackMap locals:
      StackMap stack: java.lang.Throwable
            aload 3
            monitorexit
        33: athrow
        end local 2 // boolean monotonic
        end local 1 // boolean refreshTime
        end local 0 // android.media.MediaPlayer$TimeProvider this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   34     0         this  Landroid/media/MediaPlayer$TimeProvider;
            0   34     1  refreshTime  Z
            0   34     2    monotonic  Z
           14   23     4            e  Ljava/lang/IllegalStateException;
      Exception table:
        from    to  target  type
           4    12      13  Class java.lang.IllegalStateException
           1     3      32  any
           4    21      32  any
          22    31      32  any
          32    33      32  any
    Exceptions:
      throws java.lang.IllegalStateException
    MethodParameters:
             Name  Flags
      refreshTime  
      monotonic    
}
SourceFile: "MediaPlayer.java"
NestHost: android.media.MediaPlayer
InnerClasses:
  public abstract OnSeekCompleteListener = android.media.MediaPlayer$OnSeekCompleteListener of android.media.MediaPlayer
  TimeProvider = android.media.MediaPlayer$TimeProvider of android.media.MediaPlayer
  private EventHandler = android.media.MediaPlayer$TimeProvider$EventHandler of android.media.MediaPlayer$TimeProvider
  public abstract OnMediaTimeListener = android.media.MediaTimeProvider$OnMediaTimeListener of android.media.MediaTimeProvider