class android.media.AudioRecord$NativeEventHandler extends android.os.Handler
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.media.AudioRecord$NativeEventHandler
  super_class: android.os.Handler
{
  private final android.media.AudioRecord mAudioRecord;
    descriptor: Landroid/media/AudioRecord;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final android.media.AudioRecord this$0;
    descriptor: Landroid/media/AudioRecord;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(android.media.AudioRecord, android.media.AudioRecord, android.os.Looper);
    descriptor: (Landroid/media/AudioRecord;Landroid/media/AudioRecord;Landroid/os/Looper;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // android.media.AudioRecord$NativeEventHandler this
        start local 2 // android.media.AudioRecord recorder
        start local 3 // android.os.Looper looper
         0: .line 1689
            aload 0 /* this */
            aload 1
            putfield android.media.AudioRecord$NativeEventHandler.this$0:Landroid/media/AudioRecord;
         1: .line 1690
            aload 0 /* this */
            aload 3 /* looper */
            invokespecial android.os.Handler.<init>:(Landroid/os/Looper;)V
         2: .line 1691
            aload 0 /* this */
            aload 2 /* recorder */
            putfield android.media.AudioRecord$NativeEventHandler.mAudioRecord:Landroid/media/AudioRecord;
         3: .line 1692
            return
        end local 3 // android.os.Looper looper
        end local 2 // android.media.AudioRecord recorder
        end local 0 // android.media.AudioRecord$NativeEventHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Landroid/media/AudioRecord$NativeEventHandler;
            0    4     2  recorder  Landroid/media/AudioRecord;
            0    4     3    looper  Landroid/os/Looper;
    MethodParameters:
          Name  Flags
      this$0    final
      recorder  
      looper    

  public void handleMessage(android.os.Message);
    descriptor: (Landroid/os/Message;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // android.media.AudioRecord$NativeEventHandler this
        start local 1 // android.os.Message msg
         0: .line 1696
            aconst_null
            astore 2 /* listener */
        start local 2 // android.media.AudioRecord$OnRecordPositionUpdateListener listener
         1: .line 1697
            aload 0 /* this */
            getfield android.media.AudioRecord$NativeEventHandler.this$0:Landroid/media/AudioRecord;
            getfield android.media.AudioRecord.mPositionListenerLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 1698
            aload 0 /* this */
            getfield android.media.AudioRecord$NativeEventHandler.mAudioRecord:Landroid/media/AudioRecord;
            getfield android.media.AudioRecord.mPositionListener:Landroid/media/AudioRecord$OnRecordPositionUpdateListener;
            astore 2 /* listener */
         3: .line 1697
            aload 3
            monitorexit
         4: goto 7
      StackMap locals: android.media.AudioRecord$NativeEventHandler android.os.Message android.media.AudioRecord$OnRecordPositionUpdateListener java.lang.Object
      StackMap stack: java.lang.Throwable
         5: aload 3
            monitorexit
         6: athrow
         7: .line 1701
      StackMap locals:
      StackMap stack:
            aload 1 /* msg */
            getfield android.os.Message.what:I
            tableswitch { // 2 - 3
                    2: 8
                    3: 11
              default: 14
          }
         8: .line 1703
      StackMap locals:
      StackMap stack:
            aload 2 /* listener */
            ifnull 15
         9: .line 1704
            aload 2 /* listener */
            aload 0 /* this */
            getfield android.media.AudioRecord$NativeEventHandler.mAudioRecord:Landroid/media/AudioRecord;
            invokeinterface android.media.AudioRecord$OnRecordPositionUpdateListener.onMarkerReached:(Landroid/media/AudioRecord;)V
        10: .line 1706
            goto 15
        11: .line 1708
      StackMap locals:
      StackMap stack:
            aload 2 /* listener */
            ifnull 15
        12: .line 1709
            aload 2 /* listener */
            aload 0 /* this */
            getfield android.media.AudioRecord$NativeEventHandler.mAudioRecord:Landroid/media/AudioRecord;
            invokeinterface android.media.AudioRecord$OnRecordPositionUpdateListener.onPeriodicNotification:(Landroid/media/AudioRecord;)V
        13: .line 1711
            goto 15
        14: .line 1713
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "Unknown native event type: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* msg */
            getfield android.os.Message.what:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.media.AudioRecord.loge:(Ljava/lang/String;)V
        15: .line 1716
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.media.AudioRecord$OnRecordPositionUpdateListener listener
        end local 1 // android.os.Message msg
        end local 0 // android.media.AudioRecord$NativeEventHandler this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Landroid/media/AudioRecord$NativeEventHandler;
            0   16     1       msg  Landroid/os/Message;
            1   16     2  listener  Landroid/media/AudioRecord$OnRecordPositionUpdateListener;
      Exception table:
        from    to  target  type
           2     4       5  any
           5     6       5  any
    MethodParameters:
      Name  Flags
      msg   
}
SourceFile: "AudioRecord.java"
NestHost: android.media.AudioRecord
InnerClasses:
  private NativeEventHandler = android.media.AudioRecord$NativeEventHandler of android.media.AudioRecord
  public abstract OnRecordPositionUpdateListener = android.media.AudioRecord$OnRecordPositionUpdateListener of android.media.AudioRecord