public abstract class android.media.tv.TvInputService$Session implements android.view.KeyEvent$Callback
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: android.media.tv.TvInputService$Session
  super_class: java.lang.Object
{
  private static final int POSITION_UPDATE_INTERVAL_MS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1000

  private final android.view.KeyEvent$DispatcherState mDispatcherState;
    descriptor: Landroid/view/KeyEvent$DispatcherState;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final android.view.WindowManager mWindowManager;
    descriptor: Landroid/view/WindowManager;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final android.os.Handler mHandler;
    descriptor: Landroid/os/Handler;
    flags: (0x0010) ACC_FINAL

  private android.view.WindowManager$LayoutParams mWindowParams;
    descriptor: Landroid/view/WindowManager$LayoutParams;
    flags: (0x0002) ACC_PRIVATE

  private android.view.Surface mSurface;
    descriptor: Landroid/view/Surface;
    flags: (0x0002) ACC_PRIVATE

  private final android.content.Context mContext;
    descriptor: Landroid/content/Context;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private android.widget.FrameLayout mOverlayViewContainer;
    descriptor: Landroid/widget/FrameLayout;
    flags: (0x0002) ACC_PRIVATE

  private android.view.View mOverlayView;
    descriptor: Landroid/view/View;
    flags: (0x0002) ACC_PRIVATE

  private android.media.tv.TvInputService$OverlayViewCleanUpTask mOverlayViewCleanUpTask;
    descriptor: Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;
    flags: (0x0002) ACC_PRIVATE

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

  private android.os.IBinder mWindowToken;
    descriptor: Landroid/os/IBinder;
    flags: (0x0002) ACC_PRIVATE

  private android.graphics.Rect mOverlayFrame;
    descriptor: Landroid/graphics/Rect;
    flags: (0x0002) ACC_PRIVATE

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

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

  private final android.media.tv.TvInputService$Session$TimeShiftPositionTrackingRunnable mTimeShiftPositionTrackingRunnable;
    descriptor: Landroid/media/tv/TvInputService$Session$TimeShiftPositionTrackingRunnable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.Object mLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private android.media.tv.ITvInputSessionCallback mSessionCallback;
    descriptor: Landroid/media/tv/ITvInputSessionCallback;
    flags: (0x0002) ACC_PRIVATE

  private final java.util.List<java.lang.Runnable> mPendingActions;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Ljava/lang/Runnable;>;

  public void <init>(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.content.Context context
         0: .line 303
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 275
            aload 0 /* this */
            new android.view.KeyEvent$DispatcherState
            dup
            invokespecial android.view.KeyEvent$DispatcherState.<init>:()V
            putfield android.media.tv.TvInputService$Session.mDispatcherState:Landroid/view/KeyEvent$DispatcherState;
         2: .line 287
            aload 0 /* this */
            ldc -9223372036854775808
            putfield android.media.tv.TvInputService$Session.mStartPositionMs:J
         3: .line 288
            aload 0 /* this */
            ldc -9223372036854775808
            putfield android.media.tv.TvInputService$Session.mCurrentPositionMs:J
         4: .line 290
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$TimeShiftPositionTrackingRunnable
            dup
            aload 0 /* this */
            invokespecial android.media.tv.TvInputService$Session$TimeShiftPositionTrackingRunnable.<init>:(Landroid/media/tv/TvInputService$Session;)V
            putfield android.media.tv.TvInputService$Session.mTimeShiftPositionTrackingRunnable:Landroid/media/tv/TvInputService$Session$TimeShiftPositionTrackingRunnable;
         5: .line 292
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield android.media.tv.TvInputService$Session.mLock:Ljava/lang/Object;
         6: .line 296
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield android.media.tv.TvInputService$Session.mPendingActions:Ljava/util/List;
         7: .line 304
            aload 0 /* this */
            aload 1 /* context */
            putfield android.media.tv.TvInputService$Session.mContext:Landroid/content/Context;
         8: .line 305
            aload 0 /* this */
            aload 1 /* context */
            ldc "window"
            invokevirtual android.content.Context.getSystemService:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast android.view.WindowManager
            putfield android.media.tv.TvInputService$Session.mWindowManager:Landroid/view/WindowManager;
         9: .line 306
            aload 0 /* this */
            new android.os.Handler
            dup
            aload 1 /* context */
            invokevirtual android.content.Context.getMainLooper:()Landroid/os/Looper;
            invokespecial android.os.Handler.<init>:(Landroid/os/Looper;)V
            putfield android.media.tv.TvInputService$Session.mHandler:Landroid/os/Handler;
        10: .line 307
            return
        end local 1 // android.content.Context context
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   11     0     this  Landroid/media/tv/TvInputService$Session;
            0   11     1  context  Landroid/content/Context;
    MethodParameters:
         Name  Flags
      context  

  public void setOverlayViewEnabled(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // boolean enable
         0: .line 324
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mHandler:Landroid/os/Handler;
            new android.media.tv.TvInputService$Session$1
            dup
            aload 0 /* this */
            iload 1 /* enable */
            invokespecial android.media.tv.TvInputService$Session$1.<init>:(Landroid/media/tv/TvInputService$Session;Z)V
            invokevirtual android.os.Handler.post:(Ljava/lang/Runnable;)Z
            pop
         1: .line 340
            return
        end local 1 // boolean enable
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  enable  Z
    MethodParameters:
        Name  Flags
      enable  final

  public void notifySessionEvent(java.lang.String, android.os.Bundle);
    descriptor: (Ljava/lang/String;Landroid/os/Bundle;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // java.lang.String eventType
        start local 2 // android.os.Bundle eventArgs
         0: .line 351
            aload 1 /* eventType */
            invokestatic com.android.internal.util.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 352
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$2
            dup
            aload 0 /* this */
            aload 1 /* eventType */
            aload 2 /* eventArgs */
            invokespecial android.media.tv.TvInputService$Session$2.<init>:(Landroid/media/tv/TvInputService$Session;Ljava/lang/String;Landroid/os/Bundle;)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         2: .line 365
            return
        end local 2 // android.os.Bundle eventArgs
        end local 1 // java.lang.String eventType
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Landroid/media/tv/TvInputService$Session;
            0    3     1  eventType  Ljava/lang/String;
            0    3     2  eventArgs  Landroid/os/Bundle;
    RuntimeVisibleAnnotations: 
      android.annotation.SystemApi()
    MethodParameters:
           Name  Flags
      eventType  final
      eventArgs  final

  public void notifyChannelRetuned(android.net.Uri);
    descriptor: (Landroid/net/Uri;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.net.Uri channelUri
         0: .line 377
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$3
            dup
            aload 0 /* this */
            aload 1 /* channelUri */
            invokespecial android.media.tv.TvInputService$Session$3.<init>:(Landroid/media/tv/TvInputService$Session;Landroid/net/Uri;)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         1: .line 391
            return
        end local 1 // android.net.Uri channelUri
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Landroid/media/tv/TvInputService$Session;
            0    2     1  channelUri  Landroid/net/Uri;
    MethodParameters:
            Name  Flags
      channelUri  final

  public void notifyTracksChanged(java.util.List<android.media.tv.TvTrackInfo>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // java.util.List tracks
         0: .line 405
            new java.util.ArrayList
            dup
            aload 1 /* tracks */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 2 /* tracksCopy */
        start local 2 // java.util.List tracksCopy
         1: .line 406
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$4
            dup
            aload 0 /* this */
            aload 2 /* tracksCopy */
            invokespecial android.media.tv.TvInputService$Session$4.<init>:(Landroid/media/tv/TvInputService$Session;Ljava/util/List;)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         2: .line 420
            return
        end local 2 // java.util.List tracksCopy
        end local 1 // java.util.List tracks
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Landroid/media/tv/TvInputService$Session;
            0    3     1      tracks  Ljava/util/List<Landroid/media/tv/TvTrackInfo;>;
            1    3     2  tracksCopy  Ljava/util/List<Landroid/media/tv/TvTrackInfo;>;
    Signature: (Ljava/util/List<Landroid/media/tv/TvTrackInfo;>;)V
    MethodParameters:
        Name  Flags
      tracks  final

  public void notifyTrackSelected(int, java.lang.String);
    descriptor: (ILjava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int type
        start local 2 // java.lang.String trackId
         0: .line 437
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$5
            dup
            aload 0 /* this */
            iload 1 /* type */
            aload 2 /* trackId */
            invokespecial android.media.tv.TvInputService$Session$5.<init>:(Landroid/media/tv/TvInputService$Session;ILjava/lang/String;)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         1: .line 451
            return
        end local 2 // java.lang.String trackId
        end local 1 // int type
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Landroid/media/tv/TvInputService$Session;
            0    2     1     type  I
            0    2     2  trackId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      type     final
      trackId  final

  public void notifyVideoAvailable();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 464
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$6
            dup
            aload 0 /* this */
            invokespecial android.media.tv.TvInputService$Session$6.<init>:(Landroid/media/tv/TvInputService$Session;)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         1: .line 478
            return
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/tv/TvInputService$Session;

  public void notifyVideoUnavailable(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int reason
         0: .line 497
            iload 1 /* reason */
            iflt 2
         1: .line 498
            iload 1 /* reason */
            iconst_4
            if_icmple 3
         2: .line 499
      StackMap locals:
      StackMap stack:
            ldc "TvInputService"
            new java.lang.StringBuilder
            dup
            ldc "notifyVideoUnavailable - unknown reason: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* reason */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         3: .line 501
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$7
            dup
            aload 0 /* this */
            iload 1 /* reason */
            invokespecial android.media.tv.TvInputService$Session$7.<init>:(Landroid/media/tv/TvInputService$Session;I)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         4: .line 515
            return
        end local 1 // int reason
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Landroid/media/tv/TvInputService$Session;
            0    5     1  reason  I
    MethodParameters:
        Name  Flags
      reason  final

  public void notifyContentAllowed();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 542
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$8
            dup
            aload 0 /* this */
            invokespecial android.media.tv.TvInputService$Session$8.<init>:(Landroid/media/tv/TvInputService$Session;)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         1: .line 556
            return
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/tv/TvInputService$Session;

  public void notifyContentBlocked(android.media.tv.TvContentRating);
    descriptor: (Landroid/media/tv/TvContentRating;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.media.tv.TvContentRating rating
         0: .line 586
            aload 1 /* rating */
            invokestatic com.android.internal.util.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 587
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$9
            dup
            aload 0 /* this */
            aload 1 /* rating */
            invokespecial android.media.tv.TvInputService$Session$9.<init>:(Landroid/media/tv/TvInputService$Session;Landroid/media/tv/TvContentRating;)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         2: .line 601
            return
        end local 1 // android.media.tv.TvContentRating rating
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Landroid/media/tv/TvInputService$Session;
            0    3     1  rating  Landroid/media/tv/TvContentRating;
    MethodParameters:
        Name  Flags
      rating  final

  public void notifyTimeShiftStatusChanged(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int status
         0: .line 629
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$10
            dup
            aload 0 /* this */
            iload 1 /* status */
            invokespecial android.media.tv.TvInputService$Session$10.<init>:(Landroid/media/tv/TvInputService$Session;I)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         1: .line 645
            return
        end local 1 // int status
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  status  I
    MethodParameters:
        Name  Flags
      status  final

  private void notifyTimeShiftStartPositionChanged(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // long timeMs
         0: .line 648
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$11
            dup
            aload 0 /* this */
            lload 1 /* timeMs */
            invokespecial android.media.tv.TvInputService$Session$11.<init>:(Landroid/media/tv/TvInputService$Session;J)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         1: .line 662
            return
        end local 1 // long timeMs
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  timeMs  J
    MethodParameters:
        Name  Flags
      timeMs  final

  private void notifyTimeShiftCurrentPositionChanged(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // long timeMs
         0: .line 665
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$12
            dup
            aload 0 /* this */
            lload 1 /* timeMs */
            invokespecial android.media.tv.TvInputService$Session$12.<init>:(Landroid/media/tv/TvInputService$Session;J)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         1: .line 679
            return
        end local 1 // long timeMs
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  timeMs  J
    MethodParameters:
        Name  Flags
      timeMs  final

  public void layoutSurface(int, int, int, int);
    descriptor: (IIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=5
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int left
        start local 2 // int top
        start local 3 // int right
        start local 4 // int bottom
         0: .line 693
            iload 1 /* left */
            iload 3 /* right */
            if_icmpgt 1
            iload 2 /* top */
            iload 4 /* bottom */
            if_icmple 2
         1: .line 694
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid parameter"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 696
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new android.media.tv.TvInputService$Session$13
            dup
            aload 0 /* this */
            iload 1 /* left */
            iload 2 /* top */
            iload 3 /* right */
            iload 4 /* bottom */
            invokespecial android.media.tv.TvInputService$Session$13.<init>:(Landroid/media/tv/TvInputService$Session;IIII)V
            invokevirtual android.media.tv.TvInputService$Session.executeOrPostRunnableOnMainThread:(Ljava/lang/Runnable;)V
         3: .line 711
            return
        end local 4 // int bottom
        end local 3 // int right
        end local 2 // int top
        end local 1 // int left
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Landroid/media/tv/TvInputService$Session;
            0    4     1    left  I
            0    4     2     top  I
            0    4     3   right  I
            0    4     4  bottom  I
    MethodParameters:
        Name  Flags
      left    final
      top     final
      right   final
      bottom  final

  public abstract void onRelease();
    descriptor: ()V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public void onSetMain(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // boolean isMain
         0: .line 742
            return
        end local 1 // boolean isMain
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Landroid/media/tv/TvInputService$Session;
            0    1     1  isMain  Z
    RuntimeVisibleAnnotations: 
      android.annotation.SystemApi()
    MethodParameters:
        Name  Flags
      isMain  

  public abstract boolean onSetSurface(android.view.Surface);
    descriptor: (Landroid/view/Surface;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      surface  

  public void onSurfaceChanged(int, int, int);
    descriptor: (III)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=4, args_size=4
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int format
        start local 2 // int width
        start local 3 // int height
         0: .line 766
            return
        end local 3 // int height
        end local 2 // int width
        end local 1 // int format
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Landroid/media/tv/TvInputService$Session;
            0    1     1  format  I
            0    1     2   width  I
            0    1     3  height  I
    MethodParameters:
        Name  Flags
      format  
      width   
      height  

  public void onOverlayViewSizeChanged(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int width
        start local 2 // int height
         0: .line 780
            return
        end local 2 // int height
        end local 1 // int width
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Landroid/media/tv/TvInputService$Session;
            0    1     1   width  I
            0    1     2  height  I
    MethodParameters:
        Name  Flags
      width   
      height  

  public abstract void onSetStreamVolume(float);
    descriptor: (F)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
        Name  Flags
      volume  

  public abstract boolean onTune(android.net.Uri);
    descriptor: (Landroid/net/Uri;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
            Name  Flags
      channelUri  

  public boolean onTune(android.net.Uri, android.os.Bundle);
    descriptor: (Landroid/net/Uri;Landroid/os/Bundle;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.net.Uri channelUri
        start local 2 // android.os.Bundle params
         0: .line 819
            aload 0 /* this */
            aload 1 /* channelUri */
            invokevirtual android.media.tv.TvInputService$Session.onTune:(Landroid/net/Uri;)Z
            ireturn
        end local 2 // android.os.Bundle params
        end local 1 // android.net.Uri channelUri
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Landroid/media/tv/TvInputService$Session;
            0    1     1  channelUri  Landroid/net/Uri;
            0    1     2      params  Landroid/os/Bundle;
    MethodParameters:
            Name  Flags
      channelUri  
      params      

  public abstract void onSetCaptionEnabled(boolean);
    descriptor: (Z)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
         Name  Flags
      enabled  

  public void onUnblockContent(android.media.tv.TvContentRating);
    descriptor: (Landroid/media/tv/TvContentRating;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.media.tv.TvContentRating unblockedRating
         0: .line 846
            return
        end local 1 // android.media.tv.TvContentRating unblockedRating
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    1     0             this  Landroid/media/tv/TvInputService$Session;
            0    1     1  unblockedRating  Landroid/media/tv/TvContentRating;
    MethodParameters:
                 Name  Flags
      unblockedRating  

  public boolean onSelectTrack(int, java.lang.String);
    descriptor: (ILjava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int type
        start local 2 // java.lang.String trackId
         0: .line 864
            iconst_0
            ireturn
        end local 2 // java.lang.String trackId
        end local 1 // int type
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Landroid/media/tv/TvInputService$Session;
            0    1     1     type  I
            0    1     2  trackId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      type     
      trackId  

  public void onAppPrivateCommand(java.lang.String, android.os.Bundle);
    descriptor: (Ljava/lang/String;Landroid/os/Bundle;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // java.lang.String action
        start local 2 // android.os.Bundle data
         0: .line 878
            return
        end local 2 // android.os.Bundle data
        end local 1 // java.lang.String action
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Landroid/media/tv/TvInputService$Session;
            0    1     1  action  Ljava/lang/String;
            0    1     2    data  Landroid/os/Bundle;
    MethodParameters:
        Name  Flags
      action  
      data    

  public android.view.View onCreateOverlayView();
    descriptor: ()Landroid/view/View;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 887
            aconst_null
            areturn
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/tv/TvInputService$Session;

  public void onTimeShiftPlay(android.net.Uri);
    descriptor: (Landroid/net/Uri;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.net.Uri recordedProgramUri
         0: .line 902
            return
        end local 1 // android.net.Uri recordedProgramUri
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Landroid/media/tv/TvInputService$Session;
            0    1     1  recordedProgramUri  Landroid/net/Uri;
    MethodParameters:
                    Name  Flags
      recordedProgramUri  

  public void onTimeShiftPause();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 915
            return
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/tv/TvInputService$Session;

  public void onTimeShiftResume();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 928
            return
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/tv/TvInputService$Session;

  public void onTimeShiftSeekTo(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=3, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // long timeMs
         0: .line 945
            return
        end local 1 // long timeMs
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Landroid/media/tv/TvInputService$Session;
            0    1     1  timeMs  J
    MethodParameters:
        Name  Flags
      timeMs  

  public void onTimeShiftSetPlaybackParams(android.media.PlaybackParams);
    descriptor: (Landroid/media/PlaybackParams;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.media.PlaybackParams params
         0: .line 963
            return
        end local 1 // android.media.PlaybackParams params
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Landroid/media/tv/TvInputService$Session;
            0    1     1  params  Landroid/media/PlaybackParams;
    MethodParameters:
        Name  Flags
      params  

  public long onTimeShiftGetStartPosition();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 987
            ldc -9223372036854775808
            lreturn
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/tv/TvInputService$Session;

  public long onTimeShiftGetCurrentPosition();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 1009
            ldc -9223372036854775808
            lreturn
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/tv/TvInputService$Session;

  public boolean onKeyDown(int, android.view.KeyEvent);
    descriptor: (ILandroid/view/KeyEvent;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int keyCode
        start local 2 // android.view.KeyEvent event
         0: .line 1028
            iconst_0
            ireturn
        end local 2 // android.view.KeyEvent event
        end local 1 // int keyCode
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Landroid/media/tv/TvInputService$Session;
            0    1     1  keyCode  I
            0    1     2    event  Landroid/view/KeyEvent;
    MethodParameters:
         Name  Flags
      keyCode  
      event    

  public boolean onKeyLongPress(int, android.view.KeyEvent);
    descriptor: (ILandroid/view/KeyEvent;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int keyCode
        start local 2 // android.view.KeyEvent event
         0: .line 1048
            iconst_0
            ireturn
        end local 2 // android.view.KeyEvent event
        end local 1 // int keyCode
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Landroid/media/tv/TvInputService$Session;
            0    1     1  keyCode  I
            0    1     2    event  Landroid/view/KeyEvent;
    MethodParameters:
         Name  Flags
      keyCode  
      event    

  public boolean onKeyMultiple(int, int, android.view.KeyEvent);
    descriptor: (IILandroid/view/KeyEvent;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=4, args_size=4
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int keyCode
        start local 2 // int count
        start local 3 // android.view.KeyEvent event
         0: .line 1069
            iconst_0
            ireturn
        end local 3 // android.view.KeyEvent event
        end local 2 // int count
        end local 1 // int keyCode
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Landroid/media/tv/TvInputService$Session;
            0    1     1  keyCode  I
            0    1     2    count  I
            0    1     3    event  Landroid/view/KeyEvent;
    MethodParameters:
         Name  Flags
      keyCode  
      count    
      event    

  public boolean onKeyUp(int, android.view.KeyEvent);
    descriptor: (ILandroid/view/KeyEvent;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int keyCode
        start local 2 // android.view.KeyEvent event
         0: .line 1088
            iconst_0
            ireturn
        end local 2 // android.view.KeyEvent event
        end local 1 // int keyCode
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Landroid/media/tv/TvInputService$Session;
            0    1     1  keyCode  I
            0    1     2    event  Landroid/view/KeyEvent;
    MethodParameters:
         Name  Flags
      keyCode  
      event    

  public boolean onTouchEvent(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.view.MotionEvent event
         0: .line 1100
            iconst_0
            ireturn
        end local 1 // android.view.MotionEvent event
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Landroid/media/tv/TvInputService$Session;
            0    1     1  event  Landroid/view/MotionEvent;
    MethodParameters:
       Name  Flags
      event  

  public boolean onTrackballEvent(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.view.MotionEvent event
         0: .line 1112
            iconst_0
            ireturn
        end local 1 // android.view.MotionEvent event
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Landroid/media/tv/TvInputService$Session;
            0    1     1  event  Landroid/view/MotionEvent;
    MethodParameters:
       Name  Flags
      event  

  public boolean onGenericMotionEvent(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.view.MotionEvent event
         0: .line 1124
            iconst_0
            ireturn
        end local 1 // android.view.MotionEvent event
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Landroid/media/tv/TvInputService$Session;
            0    1     1  event  Landroid/view/MotionEvent;
    MethodParameters:
       Name  Flags
      event  

  void release();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 1132
            aload 0 /* this */
            invokevirtual android.media.tv.TvInputService$Session.onRelease:()V
         1: .line 1133
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mSurface:Landroid/view/Surface;
            ifnull 4
         2: .line 1134
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mSurface:Landroid/view/Surface;
            invokevirtual android.view.Surface.release:()V
         3: .line 1135
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mSurface:Landroid/view/Surface;
         4: .line 1137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         5: .line 1138
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mSessionCallback:Landroid/media/tv/ITvInputSessionCallback;
         6: .line 1139
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mPendingActions:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         7: .line 1137
            aload 1
            monitorexit
         8: goto 11
      StackMap locals: android.media.tv.TvInputService$Session java.lang.Object
      StackMap stack: java.lang.Throwable
         9: aload 1
            monitorexit
        10: athrow
        11: .line 1143
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            invokevirtual android.media.tv.TvInputService$Session.removeOverlayView:(Z)V
        12: .line 1144
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mHandler:Landroid/os/Handler;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mTimeShiftPositionTrackingRunnable:Landroid/media/tv/TvInputService$Session$TimeShiftPositionTrackingRunnable;
            invokevirtual android.os.Handler.removeCallbacks:(Ljava/lang/Runnable;)V
        13: .line 1145
            return
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   14     0  this  Landroid/media/tv/TvInputService$Session;
      Exception table:
        from    to  target  type
           5     8       9  any
           9    10       9  any

  void setMain(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // boolean isMain
         0: .line 1151
            aload 0 /* this */
            iload 1 /* isMain */
            invokevirtual android.media.tv.TvInputService$Session.onSetMain:(Z)V
         1: .line 1152
            return
        end local 1 // boolean isMain
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  isMain  Z
    MethodParameters:
        Name  Flags
      isMain  

  void setSurface(android.view.Surface);
    descriptor: (Landroid/view/Surface;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.view.Surface surface
         0: .line 1158
            aload 0 /* this */
            aload 1 /* surface */
            invokevirtual android.media.tv.TvInputService$Session.onSetSurface:(Landroid/view/Surface;)Z
            pop
         1: .line 1159
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mSurface:Landroid/view/Surface;
            ifnull 3
         2: .line 1160
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mSurface:Landroid/view/Surface;
            invokevirtual android.view.Surface.release:()V
         3: .line 1162
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* surface */
            putfield android.media.tv.TvInputService$Session.mSurface:Landroid/view/Surface;
         4: .line 1164
            return
        end local 1 // android.view.Surface surface
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Landroid/media/tv/TvInputService$Session;
            0    5     1  surface  Landroid/view/Surface;
    MethodParameters:
         Name  Flags
      surface  

  void dispatchSurfaceChanged(int, int, int);
    descriptor: (III)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int format
        start local 2 // int width
        start local 3 // int height
         0: .line 1174
            aload 0 /* this */
            iload 1 /* format */
            iload 2 /* width */
            iload 3 /* height */
            invokevirtual android.media.tv.TvInputService$Session.onSurfaceChanged:(III)V
         1: .line 1175
            return
        end local 3 // int height
        end local 2 // int width
        end local 1 // int format
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  format  I
            0    2     2   width  I
            0    2     3  height  I
    MethodParameters:
        Name  Flags
      format  
      width   
      height  

  void setStreamVolume(float);
    descriptor: (F)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // float volume
         0: .line 1181
            aload 0 /* this */
            fload 1 /* volume */
            invokevirtual android.media.tv.TvInputService$Session.onSetStreamVolume:(F)V
         1: .line 1182
            return
        end local 1 // float volume
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  volume  F
    MethodParameters:
        Name  Flags
      volume  

  void tune(android.net.Uri, android.os.Bundle);
    descriptor: (Landroid/net/Uri;Landroid/os/Bundle;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.net.Uri channelUri
        start local 2 // android.os.Bundle params
         0: .line 1188
            aload 0 /* this */
            ldc -9223372036854775808
            putfield android.media.tv.TvInputService$Session.mCurrentPositionMs:J
         1: .line 1189
            aload 0 /* this */
            aload 1 /* channelUri */
            aload 2 /* params */
            invokevirtual android.media.tv.TvInputService$Session.onTune:(Landroid/net/Uri;Landroid/os/Bundle;)Z
            pop
         2: .line 1191
            return
        end local 2 // android.os.Bundle params
        end local 1 // android.net.Uri channelUri
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Landroid/media/tv/TvInputService$Session;
            0    3     1  channelUri  Landroid/net/Uri;
            0    3     2      params  Landroid/os/Bundle;
    MethodParameters:
            Name  Flags
      channelUri  
      params      

  void setCaptionEnabled(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // boolean enabled
         0: .line 1197
            aload 0 /* this */
            iload 1 /* enabled */
            invokevirtual android.media.tv.TvInputService$Session.onSetCaptionEnabled:(Z)V
         1: .line 1198
            return
        end local 1 // boolean enabled
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Landroid/media/tv/TvInputService$Session;
            0    2     1  enabled  Z
    MethodParameters:
         Name  Flags
      enabled  

  void selectTrack(int, java.lang.String);
    descriptor: (ILjava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // int type
        start local 2 // java.lang.String trackId
         0: .line 1204
            aload 0 /* this */
            iload 1 /* type */
            aload 2 /* trackId */
            invokevirtual android.media.tv.TvInputService$Session.onSelectTrack:(ILjava/lang/String;)Z
            pop
         1: .line 1205
            return
        end local 2 // java.lang.String trackId
        end local 1 // int type
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Landroid/media/tv/TvInputService$Session;
            0    2     1     type  I
            0    2     2  trackId  Ljava/lang/String;
    MethodParameters:
         Name  Flags
      type     
      trackId  

  void unblockContent(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // java.lang.String unblockedRating
         0: .line 1211
            aload 0 /* this */
            aload 1 /* unblockedRating */
            invokestatic android.media.tv.TvContentRating.unflattenFromString:(Ljava/lang/String;)Landroid/media/tv/TvContentRating;
            invokevirtual android.media.tv.TvInputService$Session.onUnblockContent:(Landroid/media/tv/TvContentRating;)V
         1: .line 1213
            return
        end local 1 // java.lang.String unblockedRating
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    2     0             this  Landroid/media/tv/TvInputService$Session;
            0    2     1  unblockedRating  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      unblockedRating  

  void appPrivateCommand(java.lang.String, android.os.Bundle);
    descriptor: (Ljava/lang/String;Landroid/os/Bundle;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // java.lang.String action
        start local 2 // android.os.Bundle data
         0: .line 1219
            aload 0 /* this */
            aload 1 /* action */
            aload 2 /* data */
            invokevirtual android.media.tv.TvInputService$Session.onAppPrivateCommand:(Ljava/lang/String;Landroid/os/Bundle;)V
         1: .line 1220
            return
        end local 2 // android.os.Bundle data
        end local 1 // java.lang.String action
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  action  Ljava/lang/String;
            0    2     2    data  Landroid/os/Bundle;
    MethodParameters:
        Name  Flags
      action  
      data    

  void createOverlayView(android.os.IBinder, android.graphics.Rect);
    descriptor: (Landroid/os/IBinder;Landroid/graphics/Rect;)V
    flags: (0x0000) 
    Code:
      stack=10, locals=5, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.os.IBinder windowToken
        start local 2 // android.graphics.Rect frame
         0: .line 1230
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            ifnull 2
         1: .line 1231
            aload 0 /* this */
            iconst_0
            invokevirtual android.media.tv.TvInputService$Session.removeOverlayView:(Z)V
         2: .line 1234
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* windowToken */
            putfield android.media.tv.TvInputService$Session.mWindowToken:Landroid/os/IBinder;
         3: .line 1235
            aload 0 /* this */
            aload 2 /* frame */
            putfield android.media.tv.TvInputService$Session.mOverlayFrame:Landroid/graphics/Rect;
         4: .line 1236
            aload 0 /* this */
            aload 2 /* frame */
            getfield android.graphics.Rect.right:I
            aload 2 /* frame */
            getfield android.graphics.Rect.left:I
            isub
            aload 2 /* frame */
            getfield android.graphics.Rect.bottom:I
            aload 2 /* frame */
            getfield android.graphics.Rect.top:I
            isub
            invokevirtual android.media.tv.TvInputService$Session.onOverlayViewSizeChanged:(II)V
         5: .line 1237
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewEnabled:Z
            ifne 7
         6: .line 1238
            return
         7: .line 1240
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual android.media.tv.TvInputService$Session.onCreateOverlayView:()Landroid/view/View;
            putfield android.media.tv.TvInputService$Session.mOverlayView:Landroid/view/View;
         8: .line 1241
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayView:Landroid/view/View;
            ifnonnull 10
         9: .line 1242
            return
        10: .line 1244
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewCleanUpTask:Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;
            ifnull 13
        11: .line 1245
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewCleanUpTask:Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;
            iconst_1
            invokevirtual android.media.tv.TvInputService$OverlayViewCleanUpTask.cancel:(Z)Z
            pop
        12: .line 1246
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mOverlayViewCleanUpTask:Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;
        13: .line 1251
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new android.widget.FrameLayout
            dup
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mContext:Landroid/content/Context;
            invokevirtual android.content.Context.getApplicationContext:()Landroid/content/Context;
            invokespecial android.widget.FrameLayout.<init>:(Landroid/content/Context;)V
            putfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
        14: .line 1252
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayView:Landroid/view/View;
            invokevirtual android.widget.FrameLayout.addView:(Landroid/view/View;)V
        15: .line 1255
            sipush 1004
            istore 3 /* type */
        start local 3 // int type
        16: .line 1259
            sipush 536
            istore 4 /* flags */
        start local 4 // int flags
        17: .line 1262
            invokestatic android.app.ActivityManager.isHighEndGfx:()Z
            ifeq 19
        18: .line 1263
            iload 4 /* flags */
            ldc 16777216
            ior
            istore 4 /* flags */
        19: .line 1265
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            new android.view.WindowManager$LayoutParams
            dup
        20: .line 1266
            aload 2 /* frame */
            getfield android.graphics.Rect.right:I
            aload 2 /* frame */
            getfield android.graphics.Rect.left:I
            isub
            aload 2 /* frame */
            getfield android.graphics.Rect.bottom:I
            aload 2 /* frame */
            getfield android.graphics.Rect.top:I
            isub
        21: .line 1267
            aload 2 /* frame */
            getfield android.graphics.Rect.left:I
            aload 2 /* frame */
            getfield android.graphics.Rect.top:I
            iload 3 /* type */
            iload 4 /* flags */
            bipush -2
            invokespecial android.view.WindowManager$LayoutParams.<init>:(IIIIIII)V
        22: .line 1265
            putfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
        23: .line 1268
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            dup
            getfield android.view.WindowManager$LayoutParams.privateFlags:I
        24: .line 1269
            bipush 64
            ior
        25: .line 1268
            putfield android.view.WindowManager$LayoutParams.privateFlags:I
        26: .line 1270
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            ldc 8388659
            putfield android.view.WindowManager$LayoutParams.gravity:I
        27: .line 1271
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            aload 1 /* windowToken */
            putfield android.view.WindowManager$LayoutParams.token:Landroid/os/IBinder;
        28: .line 1272
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowManager:Landroid/view/WindowManager;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            invokeinterface android.view.WindowManager.addView:(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
        29: .line 1273
            return
        end local 4 // int flags
        end local 3 // int type
        end local 2 // android.graphics.Rect frame
        end local 1 // android.os.IBinder windowToken
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   30     0         this  Landroid/media/tv/TvInputService$Session;
            0   30     1  windowToken  Landroid/os/IBinder;
            0   30     2        frame  Landroid/graphics/Rect;
           16   30     3         type  I
           17   30     4        flags  I
    MethodParameters:
             Name  Flags
      windowToken  
      frame        

  void relayoutOverlayView(android.graphics.Rect);
    descriptor: (Landroid/graphics/Rect;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.graphics.Rect frame
         0: .line 1282
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayFrame:Landroid/graphics/Rect;
            ifnull 2
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayFrame:Landroid/graphics/Rect;
            invokevirtual android.graphics.Rect.width:()I
            aload 1 /* frame */
            invokevirtual android.graphics.Rect.width:()I
            if_icmpne 2
         1: .line 1283
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayFrame:Landroid/graphics/Rect;
            invokevirtual android.graphics.Rect.height:()I
            aload 1 /* frame */
            invokevirtual android.graphics.Rect.height:()I
            if_icmpeq 3
         2: .line 1286
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* frame */
            getfield android.graphics.Rect.right:I
            aload 1 /* frame */
            getfield android.graphics.Rect.left:I
            isub
            aload 1 /* frame */
            getfield android.graphics.Rect.bottom:I
            aload 1 /* frame */
            getfield android.graphics.Rect.top:I
            isub
            invokevirtual android.media.tv.TvInputService$Session.onOverlayViewSizeChanged:(II)V
         3: .line 1288
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* frame */
            putfield android.media.tv.TvInputService$Session.mOverlayFrame:Landroid/graphics/Rect;
         4: .line 1289
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewEnabled:Z
            ifeq 5
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            ifnonnull 6
         5: .line 1290
      StackMap locals:
      StackMap stack:
            return
         6: .line 1292
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            aload 1 /* frame */
            getfield android.graphics.Rect.left:I
            putfield android.view.WindowManager$LayoutParams.x:I
         7: .line 1293
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            aload 1 /* frame */
            getfield android.graphics.Rect.top:I
            putfield android.view.WindowManager$LayoutParams.y:I
         8: .line 1294
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            aload 1 /* frame */
            getfield android.graphics.Rect.right:I
            aload 1 /* frame */
            getfield android.graphics.Rect.left:I
            isub
            putfield android.view.WindowManager$LayoutParams.width:I
         9: .line 1295
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            aload 1 /* frame */
            getfield android.graphics.Rect.bottom:I
            aload 1 /* frame */
            getfield android.graphics.Rect.top:I
            isub
            putfield android.view.WindowManager$LayoutParams.height:I
        10: .line 1296
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowManager:Landroid/view/WindowManager;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
            invokeinterface android.view.WindowManager.updateViewLayout:(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
        11: .line 1297
            return
        end local 1 // android.graphics.Rect frame
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   12     0   this  Landroid/media/tv/TvInputService$Session;
            0   12     1  frame  Landroid/graphics/Rect;
    MethodParameters:
       Name  Flags
      frame  

  void removeOverlayView(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // boolean clearWindowToken
         0: .line 1304
            iload 1 /* clearWindowToken */
            ifeq 3
         1: .line 1305
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mWindowToken:Landroid/os/IBinder;
         2: .line 1306
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mOverlayFrame:Landroid/graphics/Rect;
         3: .line 1308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            ifnull 9
         4: .line 1312
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayView:Landroid/view/View;
            invokevirtual android.widget.FrameLayout.removeView:(Landroid/view/View;)V
         5: .line 1313
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mOverlayView:Landroid/view/View;
         6: .line 1314
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mWindowManager:Landroid/view/WindowManager;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            invokeinterface android.view.WindowManager.removeView:(Landroid/view/View;)V
         7: .line 1315
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
         8: .line 1316
            aload 0 /* this */
            aconst_null
            putfield android.media.tv.TvInputService$Session.mWindowParams:Landroid/view/WindowManager$LayoutParams;
         9: .line 1318
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean clearWindowToken
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   10     0              this  Landroid/media/tv/TvInputService$Session;
            0   10     1  clearWindowToken  Z
    MethodParameters:
                  Name  Flags
      clearWindowToken  

  void timeShiftPlay(android.net.Uri);
    descriptor: (Landroid/net/Uri;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.net.Uri recordedProgramUri
         0: .line 1324
            aload 0 /* this */
            lconst_0
            putfield android.media.tv.TvInputService$Session.mCurrentPositionMs:J
         1: .line 1325
            aload 0 /* this */
            aload 1 /* recordedProgramUri */
            invokevirtual android.media.tv.TvInputService$Session.onTimeShiftPlay:(Landroid/net/Uri;)V
         2: .line 1326
            return
        end local 1 // android.net.Uri recordedProgramUri
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    3     0                this  Landroid/media/tv/TvInputService$Session;
            0    3     1  recordedProgramUri  Landroid/net/Uri;
    MethodParameters:
                    Name  Flags
      recordedProgramUri  

  void timeShiftPause();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 1332
            aload 0 /* this */
            invokevirtual android.media.tv.TvInputService$Session.onTimeShiftPause:()V
         1: .line 1333
            return
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/tv/TvInputService$Session;

  void timeShiftResume();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 1339
            aload 0 /* this */
            invokevirtual android.media.tv.TvInputService$Session.onTimeShiftResume:()V
         1: .line 1340
            return
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/tv/TvInputService$Session;

  void timeShiftSeekTo(long);
    descriptor: (J)V
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // long timeMs
         0: .line 1346
            aload 0 /* this */
            lload 1 /* timeMs */
            invokevirtual android.media.tv.TvInputService$Session.onTimeShiftSeekTo:(J)V
         1: .line 1347
            return
        end local 1 // long timeMs
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  timeMs  J
    MethodParameters:
        Name  Flags
      timeMs  

  void timeShiftSetPlaybackParams(android.media.PlaybackParams);
    descriptor: (Landroid/media/PlaybackParams;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.media.PlaybackParams params
         0: .line 1353
            aload 0 /* this */
            aload 1 /* params */
            invokevirtual android.media.tv.TvInputService$Session.onTimeShiftSetPlaybackParams:(Landroid/media/PlaybackParams;)V
         1: .line 1354
            return
        end local 1 // android.media.PlaybackParams params
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/tv/TvInputService$Session;
            0    2     1  params  Landroid/media/PlaybackParams;
    MethodParameters:
        Name  Flags
      params  

  void timeShiftEnablePositionTracking(boolean);
    descriptor: (Z)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // boolean enable
         0: .line 1362
            iload 1 /* enable */
            ifeq 3
         1: .line 1363
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mHandler:Landroid/os/Handler;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mTimeShiftPositionTrackingRunnable:Landroid/media/tv/TvInputService$Session$TimeShiftPositionTrackingRunnable;
            invokevirtual android.os.Handler.post:(Ljava/lang/Runnable;)Z
            pop
         2: .line 1364
            goto 6
         3: .line 1365
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mHandler:Landroid/os/Handler;
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mTimeShiftPositionTrackingRunnable:Landroid/media/tv/TvInputService$Session$TimeShiftPositionTrackingRunnable;
            invokevirtual android.os.Handler.removeCallbacks:(Ljava/lang/Runnable;)V
         4: .line 1366
            aload 0 /* this */
            ldc -9223372036854775808
            putfield android.media.tv.TvInputService$Session.mStartPositionMs:J
         5: .line 1367
            aload 0 /* this */
            ldc -9223372036854775808
            putfield android.media.tv.TvInputService$Session.mCurrentPositionMs:J
         6: .line 1369
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean enable
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Landroid/media/tv/TvInputService$Session;
            0    7     1  enable  Z
    MethodParameters:
        Name  Flags
      enable  

  void scheduleOverlayViewCleanup();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // android.media.tv.TvInputService$Session this
         0: .line 1376
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            astore 1 /* overlayViewParent */
        start local 1 // android.view.View overlayViewParent
         1: .line 1377
            aload 1 /* overlayViewParent */
            ifnull 6
         2: .line 1378
            aload 0 /* this */
            new android.media.tv.TvInputService$OverlayViewCleanUpTask
            dup
            invokespecial android.media.tv.TvInputService$OverlayViewCleanUpTask.<init>:()V
            putfield android.media.tv.TvInputService$Session.mOverlayViewCleanUpTask:Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;
         3: .line 1379
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewCleanUpTask:Landroid/media/tv/TvInputService$OverlayViewCleanUpTask;
            getstatic android.os.AsyncTask.THREAD_POOL_EXECUTOR:Ljava/util/concurrent/Executor;
            iconst_1
            anewarray android.view.View
            dup
            iconst_0
         4: .line 1380
            aload 1 /* overlayViewParent */
            aastore
         5: .line 1379
            invokevirtual android.media.tv.TvInputService$OverlayViewCleanUpTask.executeOnExecutor:(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Landroid/os/AsyncTask;
            pop
         6: .line 1382
      StackMap locals: android.view.View
      StackMap stack:
            return
        end local 1 // android.view.View overlayViewParent
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               this  Landroid/media/tv/TvInputService$Session;
            1    7     1  overlayViewParent  Landroid/view/View;

  int dispatchInputEvent(android.view.InputEvent, android.view.InputEventReceiver);
    descriptor: (Landroid/view/InputEvent;Landroid/view/InputEventReceiver;)I
    flags: (0x0000) 
    Code:
      stack=4, locals=7, args_size=3
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.view.InputEvent event
        start local 2 // android.view.InputEventReceiver receiver
         0: .line 1389
            iconst_0
            istore 3 /* isNavigationKey */
        start local 3 // boolean isNavigationKey
         1: .line 1390
            iconst_0
            istore 4 /* skipDispatchToOverlayView */
        start local 4 // boolean skipDispatchToOverlayView
         2: .line 1391
            aload 1 /* event */
            instanceof android.view.KeyEvent
            ifeq 13
         3: .line 1392
            aload 1 /* event */
            checkcast android.view.KeyEvent
            astore 5 /* keyEvent */
        start local 5 // android.view.KeyEvent keyEvent
         4: .line 1393
            aload 5 /* keyEvent */
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mDispatcherState:Landroid/view/KeyEvent$DispatcherState;
            aload 0 /* this */
            invokevirtual android.view.KeyEvent.dispatch:(Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;Ljava/lang/Object;)Z
            ifeq 6
         5: .line 1394
            iconst_1
            ireturn
         6: .line 1396
      StackMap locals: int int android.view.KeyEvent
      StackMap stack:
            aload 5 /* keyEvent */
            invokevirtual android.view.KeyEvent.getKeyCode:()I
            invokestatic android.media.tv.TvInputService.isNavigationKey:(I)Z
            istore 3 /* isNavigationKey */
         7: .line 1401
            aload 5 /* keyEvent */
            invokevirtual android.view.KeyEvent.getKeyCode:()I
            invokestatic android.view.KeyEvent.isMediaKey:(I)Z
            ifne 10
         8: .line 1402
            aload 5 /* keyEvent */
            invokevirtual android.view.KeyEvent.getKeyCode:()I
            sipush 222
            if_icmpeq 10
         9: .line 1401
            iconst_0
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_1
      StackMap locals:
      StackMap stack: int
        11: istore 4 /* skipDispatchToOverlayView */
        end local 5 // android.view.KeyEvent keyEvent
        12: .line 1403
            goto 24
      StackMap locals:
      StackMap stack:
        13: aload 1 /* event */
            instanceof android.view.MotionEvent
            ifeq 24
        14: .line 1404
            aload 1 /* event */
            checkcast android.view.MotionEvent
            astore 5 /* motionEvent */
        start local 5 // android.view.MotionEvent motionEvent
        15: .line 1405
            aload 5 /* motionEvent */
            invokevirtual android.view.MotionEvent.getSource:()I
            istore 6 /* source */
        start local 6 // int source
        16: .line 1406
            aload 5 /* motionEvent */
            invokevirtual android.view.MotionEvent.isTouchEvent:()Z
            ifeq 19
        17: .line 1407
            aload 0 /* this */
            aload 5 /* motionEvent */
            invokevirtual android.media.tv.TvInputService$Session.onTouchEvent:(Landroid/view/MotionEvent;)Z
            ifeq 24
        18: .line 1408
            iconst_1
            ireturn
        19: .line 1410
      StackMap locals: android.view.MotionEvent int
      StackMap stack:
            iload 6 /* source */
            iconst_4
            iand
            ifeq 22
        20: .line 1411
            aload 0 /* this */
            aload 5 /* motionEvent */
            invokevirtual android.media.tv.TvInputService$Session.onTrackballEvent:(Landroid/view/MotionEvent;)Z
            ifeq 24
        21: .line 1412
            iconst_1
            ireturn
        22: .line 1415
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 5 /* motionEvent */
            invokevirtual android.media.tv.TvInputService$Session.onGenericMotionEvent:(Landroid/view/MotionEvent;)Z
            ifeq 24
        23: .line 1416
            iconst_1
            ireturn
        end local 6 // int source
        end local 5 // android.view.MotionEvent motionEvent
        24: .line 1420
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            ifnull 26
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            invokevirtual android.widget.FrameLayout.isAttachedToWindow:()Z
            ifeq 26
        25: .line 1421
            iload 4 /* skipDispatchToOverlayView */
            ifeq 27
        26: .line 1422
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        27: .line 1424
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            invokevirtual android.widget.FrameLayout.hasWindowFocus:()Z
            ifne 29
        28: .line 1425
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            invokevirtual android.widget.FrameLayout.getViewRootImpl:()Landroid/view/ViewRootImpl;
            iconst_1
            iconst_1
            invokevirtual android.view.ViewRootImpl.windowFocusChanged:(ZZ)V
        29: .line 1427
      StackMap locals:
      StackMap stack:
            iload 3 /* isNavigationKey */
            ifeq 32
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            invokevirtual android.widget.FrameLayout.hasFocusable:()Z
            ifeq 32
        30: .line 1433
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            invokevirtual android.widget.FrameLayout.getViewRootImpl:()Landroid/view/ViewRootImpl;
            aload 1 /* event */
            invokevirtual android.view.ViewRootImpl.dispatchInputEvent:(Landroid/view/InputEvent;)V
        31: .line 1434
            iconst_1
            ireturn
        32: .line 1436
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mOverlayViewContainer:Landroid/widget/FrameLayout;
            invokevirtual android.widget.FrameLayout.getViewRootImpl:()Landroid/view/ViewRootImpl;
            aload 1 /* event */
            aload 2 /* receiver */
            invokevirtual android.view.ViewRootImpl.dispatchInputEvent:(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;)V
        33: .line 1437
            iconst_m1
            ireturn
        end local 4 // boolean skipDispatchToOverlayView
        end local 3 // boolean isNavigationKey
        end local 2 // android.view.InputEventReceiver receiver
        end local 1 // android.view.InputEvent event
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   34     0                       this  Landroid/media/tv/TvInputService$Session;
            0   34     1                      event  Landroid/view/InputEvent;
            0   34     2                   receiver  Landroid/view/InputEventReceiver;
            1   34     3            isNavigationKey  Z
            2   34     4  skipDispatchToOverlayView  Z
            4   12     5                   keyEvent  Landroid/view/KeyEvent;
           15   24     5                motionEvent  Landroid/view/MotionEvent;
           16   24     6                     source  I
    MethodParameters:
          Name  Flags
      event     
      receiver  

  private void initialize(android.media.tv.ITvInputSessionCallback);
    descriptor: (Landroid/media/tv/ITvInputSessionCallback;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // android.media.tv.ITvInputSessionCallback callback
         0: .line 1442
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 1443
            aload 0 /* this */
            aload 1 /* callback */
            putfield android.media.tv.TvInputService$Session.mSessionCallback:Landroid/media/tv/ITvInputSessionCallback;
         2: .line 1444
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mPendingActions:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: android.media.tv.TvInputService$Session android.media.tv.ITvInputSessionCallback java.lang.Object top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            astore 3 /* runnable */
        start local 3 // java.lang.Runnable runnable
         4: .line 1445
            aload 3 /* runnable */
            invokeinterface java.lang.Runnable.run:()V
        end local 3 // java.lang.Runnable runnable
         5: .line 1444
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 1447
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mPendingActions:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         7: .line 1442
            aload 2
            monitorexit
         8: goto 11
      StackMap locals: android.media.tv.TvInputService$Session android.media.tv.ITvInputSessionCallback java.lang.Object
      StackMap stack: java.lang.Throwable
         9: aload 2
            monitorexit
        10: athrow
        11: .line 1449
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.tv.ITvInputSessionCallback callback
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Landroid/media/tv/TvInputService$Session;
            0   12     1  callback  Landroid/media/tv/ITvInputSessionCallback;
            4    5     3  runnable  Ljava/lang/Runnable;
      Exception table:
        from    to  target  type
           1     8       9  any
           9    10       9  any
    MethodParameters:
          Name  Flags
      callback  

  private void executeOrPostRunnableOnMainThread(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.media.tv.TvInputService$Session this
        start local 1 // java.lang.Runnable action
         0: .line 1452
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mLock:Ljava/lang/Object;
            dup
            astore 2
            monitorenter
         1: .line 1453
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mSessionCallback:Landroid/media/tv/ITvInputSessionCallback;
            ifnonnull 4
         2: .line 1455
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mPendingActions:Ljava/util/List;
            aload 1 /* action */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 1456
            goto 8
         4: .line 1457
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mHandler:Landroid/os/Handler;
            invokevirtual android.os.Handler.getLooper:()Landroid/os/Looper;
            invokevirtual android.os.Looper.isCurrentThread:()Z
            ifeq 7
         5: .line 1458
            aload 1 /* action */
            invokeinterface java.lang.Runnable.run:()V
         6: .line 1459
            goto 8
         7: .line 1461
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.tv.TvInputService$Session.mHandler:Landroid/os/Handler;
            aload 1 /* action */
            invokevirtual android.os.Handler.post:(Ljava/lang/Runnable;)Z
            pop
         8: .line 1452
      StackMap locals:
      StackMap stack:
            aload 2
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 2
            monitorexit
        11: athrow
        12: .line 1465
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Runnable action
        end local 0 // android.media.tv.TvInputService$Session this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Landroid/media/tv/TvInputService$Session;
            0   13     1  action  Ljava/lang/Runnable;
      Exception table:
        from    to  target  type
           1     9      10  any
          10    11      10  any
    MethodParameters:
        Name  Flags
      action  
}
SourceFile: "TvInputService.java"
NestHost: android.media.tv.TvInputService
InnerClasses:
  private final OverlayViewCleanUpTask = android.media.tv.TvInputService$OverlayViewCleanUpTask of android.media.tv.TvInputService
  public abstract Session = android.media.tv.TvInputService$Session of android.media.tv.TvInputService
  android.media.tv.TvInputService$Session$1
  android.media.tv.TvInputService$Session$10
  android.media.tv.TvInputService$Session$11
  android.media.tv.TvInputService$Session$12
  android.media.tv.TvInputService$Session$13
  android.media.tv.TvInputService$Session$2
  android.media.tv.TvInputService$Session$3
  android.media.tv.TvInputService$Session$4
  android.media.tv.TvInputService$Session$5
  android.media.tv.TvInputService$Session$6
  android.media.tv.TvInputService$Session$7
  android.media.tv.TvInputService$Session$8
  android.media.tv.TvInputService$Session$9
  private final TimeShiftPositionTrackingRunnable = android.media.tv.TvInputService$Session$TimeShiftPositionTrackingRunnable of android.media.tv.TvInputService$Session
  public abstract Callback = android.view.KeyEvent$Callback of android.view.KeyEvent
  public DispatcherState = android.view.KeyEvent$DispatcherState of android.view.KeyEvent
  public LayoutParams = android.view.ViewGroup$LayoutParams of android.view.ViewGroup
  public LayoutParams = android.view.WindowManager$LayoutParams of android.view.WindowManager