class android.widget.Editor$SelectionModifierCursorController implements android.widget.Editor$CursorController
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.widget.Editor$SelectionModifierCursorController
  super_class: java.lang.Object
{
  private android.widget.Editor$SelectionHandleView mStartHandle;
    descriptor: Landroid/widget/Editor$SelectionHandleView;
    flags: (0x0002) ACC_PRIVATE

  private android.widget.Editor$SelectionHandleView mEndHandle;
    descriptor: Landroid/widget/Editor$SelectionHandleView;
    flags: (0x0002) ACC_PRIVATE

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

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

  private float mDownPositionX;
    descriptor: F
    flags: (0x0002) ACC_PRIVATE

  private float mDownPositionY;
    descriptor: F
    flags: (0x0002) ACC_PRIVATE

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

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

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

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

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

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

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

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

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

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

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

  void <init>(android.widget.Editor);
    descriptor: (Landroid/widget/Editor;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 5751
            aload 0 /* this */
            aload 1
            putfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 5732
            aload 0 /* this */
            iconst_m1
            putfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
         2: .line 5736
            aload 0 /* this */
            iconst_m1
            putfield android.widget.Editor$SelectionModifierCursorController.mLineSelectionIsOn:I
         3: .line 5738
            aload 0 /* this */
            iconst_0
            putfield android.widget.Editor$SelectionModifierCursorController.mSwitchedLines:Z
         4: .line 5741
            aload 0 /* this */
            iconst_0
            putfield android.widget.Editor$SelectionModifierCursorController.mDragAcceleratorMode:I
         5: .line 5752
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.resetTouchOffsets:()V
         6: .line 5753
            return
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/widget/Editor$SelectionModifierCursorController;
    MethodParameters:
        Name  Flags
      this$0  final

  public void show();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 5756
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.isInBatchEditMode:()Z
            ifeq 2
         1: .line 5757
            return
         2: .line 5759
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.initDrawables:()V
         3: .line 5760
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.initHandles:()V
         4: .line 5761
            return
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  private void initDrawables();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 5764
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mSelectHandleLeft:Landroid/graphics/drawable/Drawable;
            ifnonnull 4
         1: .line 5765
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
         2: .line 5766
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            getfield android.widget.TextView.mTextSelectHandleLeftRes:I
         3: .line 5765
            invokevirtual android.content.Context.getDrawable:(I)Landroid/graphics/drawable/Drawable;
            putfield android.widget.Editor.mSelectHandleLeft:Landroid/graphics/drawable/Drawable;
         4: .line 5768
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mSelectHandleRight:Landroid/graphics/drawable/Drawable;
            ifnonnull 8
         5: .line 5769
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
         6: .line 5770
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            getfield android.widget.TextView.mTextSelectHandleRightRes:I
         7: .line 5769
            invokevirtual android.content.Context.getDrawable:(I)Landroid/graphics/drawable/Drawable;
            putfield android.widget.Editor.mSelectHandleRight:Landroid/graphics/drawable/Drawable;
         8: .line 5772
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  private void initHandles();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 5778
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tcom.android.internal.R.id cannot be resolved to a variable\n\tcom.android.internal.R.id cannot be resolved to a variable\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public void hide();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 5794
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 1
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.hide:()V
         1: .line 5795
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 2
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.hide:()V
         2: .line 5796
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public void enterDrag(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // int dragAcceleratorMode
         0: .line 5800
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.show:()V
         1: .line 5801
            aload 0 /* this */
            iload 1 /* dragAcceleratorMode */
            putfield android.widget.Editor$SelectionModifierCursorController.mDragAcceleratorMode:I
         2: .line 5803
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mLastDownPositionX:F
         3: .line 5804
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mLastDownPositionY:F
         4: .line 5803
            invokevirtual android.widget.TextView.getOffsetForPosition:(FF)I
            putfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
         5: .line 5805
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mLastDownPositionY:F
            invokevirtual android.widget.TextView.getLineAtCoordinate:(F)I
            putfield android.widget.Editor$SelectionModifierCursorController.mLineSelectionIsOn:I
         6: .line 5807
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.hide:()V
         7: .line 5812
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getParent:()Landroid/view/ViewParent;
            iconst_1
            invokeinterface android.view.ViewParent.requestDisallowInterceptTouchEvent:(Z)V
         8: .line 5813
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.cancelLongPress:()V
         9: .line 5814
            return
        end local 1 // int dragAcceleratorMode
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0                 this  Landroid/widget/Editor$SelectionModifierCursorController;
            0   10     1  dragAcceleratorMode  I
    MethodParameters:
                     Name  Flags
      dragAcceleratorMode  

  public void onTouchEvent(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // android.view.MotionEvent event
         0: .line 5819
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getX:()F
            fstore 2 /* eventX */
        start local 2 // float eventX
         1: .line 5820
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getY:()F
            fstore 3 /* eventY */
        start local 3 // float eventY
         2: .line 5821
            aload 1 /* event */
            sipush 8194
            invokevirtual android.view.MotionEvent.isFromSource:(I)Z
            istore 4 /* isMouse */
        start local 4 // boolean isMouse
         3: .line 5822
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getActionMasked:()I
            tableswitch { // 0 - 6
                    0: 4
                    1: 75
                    2: 40
                    3: 82
                    4: 82
                    5: 34
                    6: 34
              default: 82
          }
         4: .line 5824
      StackMap locals: float float int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.extractedTextModeWillBeStarted:()Z
            ifeq 7
         5: .line 5826
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.hide:()V
         6: .line 5827
            goto 82
         7: .line 5829
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
         8: .line 5830
            fload 2 /* eventX */
            fload 3 /* eventY */
         9: .line 5829
            invokevirtual android.widget.TextView.getOffsetForPosition:(FF)I
            dup_x1
            putfield android.widget.Editor$SelectionModifierCursorController.mMaxTouchOffset:I
            putfield android.widget.Editor$SelectionModifierCursorController.mMinTouchOffset:I
        10: .line 5833
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mGestureStayedInTapRegion:Z
            ifeq 29
        11: .line 5834
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTapState:I
            iconst_2
            if_icmpeq 13
        12: .line 5835
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTapState:I
            iconst_3
            if_icmpne 29
        13: .line 5836
      StackMap locals:
      StackMap stack:
            fload 2 /* eventX */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mDownPositionX:F
            fsub
            fstore 5 /* deltaX */
        start local 5 // float deltaX
        14: .line 5837
            fload 3 /* eventY */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mDownPositionY:F
            fsub
            fstore 6 /* deltaY */
        start local 6 // float deltaY
        15: .line 5838
            fload 5 /* deltaX */
            fload 5 /* deltaX */
            fmul
            fload 6 /* deltaY */
            fload 6 /* deltaY */
            fmul
            fadd
            fstore 7 /* distanceSquared */
        start local 7 // float distanceSquared
        16: .line 5841
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
        17: .line 5840
            invokestatic android.view.ViewConfiguration.get:(Landroid/content/Context;)Landroid/view/ViewConfiguration;
            astore 8 /* viewConfiguration */
        start local 8 // android.view.ViewConfiguration viewConfiguration
        18: .line 5842
            aload 8 /* viewConfiguration */
            invokevirtual android.view.ViewConfiguration.getScaledDoubleTapSlop:()I
            istore 9 /* doubleTapSlop */
        start local 9 // int doubleTapSlop
        19: .line 5844
            fload 7 /* distanceSquared */
            iload 9 /* doubleTapSlop */
            iload 9 /* doubleTapSlop */
            imul
            i2f
            fcmpg
            ifge 20
            iconst_1
            goto 21
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent float float int float float float android.view.ViewConfiguration int
      StackMap stack:
        20: iconst_0
        21: .line 5843
      StackMap locals:
      StackMap stack: int
            istore 10 /* stayedInArea */
        start local 10 // boolean stayedInArea
        22: .line 5846
            iload 10 /* stayedInArea */
            ifeq 29
            iload 4 /* isMouse */
            ifne 23
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            fload 2 /* eventX */
            fload 3 /* eventY */
            invokevirtual android.widget.Editor.isPositionOnText:(FF)Z
            ifeq 29
        23: .line 5847
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTapState:I
            iconst_2
            if_icmpne 26
        24: .line 5848
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.selectCurrentWordAndStartDrag:()Z
            pop
        25: .line 5849
            goto 28
      StackMap locals:
      StackMap stack:
        26: aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTapState:I
            iconst_3
            if_icmpne 28
        27: .line 5850
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.selectCurrentParagraphAndStartDrag:()Z
            pop
        28: .line 5852
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            iconst_1
            putfield android.widget.Editor.mDiscardNextActionUp:Z
        end local 10 // boolean stayedInArea
        end local 9 // int doubleTapSlop
        end local 8 // android.view.ViewConfiguration viewConfiguration
        end local 7 // float distanceSquared
        end local 6 // float deltaY
        end local 5 // float deltaX
        29: .line 5857
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent float float int
      StackMap stack:
            aload 0 /* this */
            fload 2 /* eventX */
            putfield android.widget.Editor$SelectionModifierCursorController.mDownPositionX:F
        30: .line 5858
            aload 0 /* this */
            fload 3 /* eventY */
            putfield android.widget.Editor$SelectionModifierCursorController.mDownPositionY:F
        31: .line 5859
            aload 0 /* this */
            iconst_1
            putfield android.widget.Editor$SelectionModifierCursorController.mGestureStayedInTapRegion:Z
        32: .line 5860
            aload 0 /* this */
            iconst_1
            putfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
        33: .line 5862
            goto 82
        34: .line 5868
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
            invokevirtual android.content.Context.getPackageManager:()Landroid/content/pm/PackageManager;
        35: .line 5869
            ldc "android.hardware.touchscreen.multitouch.distinct"
        36: .line 5868
            invokevirtual android.content.pm.PackageManager.hasSystemFeature:(Ljava/lang/String;)Z
        37: .line 5869
            ifeq 82
        38: .line 5870
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateMinAndMaxOffsets:(Landroid/view/MotionEvent;)V
        39: .line 5872
            goto 82
        40: .line 5876
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
        41: .line 5875
            invokestatic android.view.ViewConfiguration.get:(Landroid/content/Context;)Landroid/view/ViewConfiguration;
            astore 5 /* viewConfig */
        start local 5 // android.view.ViewConfiguration viewConfig
        42: .line 5877
            aload 5 /* viewConfig */
            invokevirtual android.view.ViewConfiguration.getScaledTouchSlop:()I
            istore 6 /* touchSlop */
        start local 6 // int touchSlop
        43: .line 5879
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mGestureStayedInTapRegion:Z
            ifne 44
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
            ifeq 58
        44: .line 5880
      StackMap locals: android.view.ViewConfiguration int
      StackMap stack:
            fload 2 /* eventX */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mDownPositionX:F
            fsub
            fstore 7 /* deltaX */
        start local 7 // float deltaX
        45: .line 5881
            fload 3 /* eventY */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mDownPositionY:F
            fsub
            fstore 8 /* deltaY */
        start local 8 // float deltaY
        46: .line 5882
            fload 7 /* deltaX */
            fload 7 /* deltaX */
            fmul
            fload 8 /* deltaY */
            fload 8 /* deltaY */
            fmul
            fadd
            fstore 9 /* distanceSquared */
        start local 9 // float distanceSquared
        47: .line 5884
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mGestureStayedInTapRegion:Z
            ifeq 53
        48: .line 5885
            aload 5 /* viewConfig */
            invokevirtual android.view.ViewConfiguration.getScaledDoubleTapTouchSlop:()I
            istore 10 /* doubleTapTouchSlop */
        start local 10 // int doubleTapTouchSlop
        49: .line 5886
            aload 0 /* this */
        50: .line 5887
            fload 9 /* distanceSquared */
            iload 10 /* doubleTapTouchSlop */
            iload 10 /* doubleTapTouchSlop */
            imul
            i2f
            fcmpg
            ifgt 51
            iconst_1
            goto 52
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent float float int android.view.ViewConfiguration int float float float int
      StackMap stack: android.widget.Editor$SelectionModifierCursorController
        51: iconst_0
        52: .line 5886
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent float float int android.view.ViewConfiguration int float float float int
      StackMap stack: android.widget.Editor$SelectionModifierCursorController int
            putfield android.widget.Editor$SelectionModifierCursorController.mGestureStayedInTapRegion:Z
        end local 10 // int doubleTapTouchSlop
        53: .line 5889
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
            ifeq 58
        54: .line 5891
            aload 0 /* this */
        55: .line 5892
            fload 9 /* distanceSquared */
            iload 6 /* touchSlop */
            iload 6 /* touchSlop */
            imul
            i2f
            fcmpg
            ifgt 56
            iconst_1
            goto 57
      StackMap locals:
      StackMap stack: android.widget.Editor$SelectionModifierCursorController
        56: iconst_0
        57: .line 5891
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent float float int android.view.ViewConfiguration int float float float
      StackMap stack: android.widget.Editor$SelectionModifierCursorController int
            putfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
        end local 9 // float distanceSquared
        end local 8 // float deltaY
        end local 7 // float deltaX
        58: .line 5896
      StackMap locals:
      StackMap stack:
            iload 4 /* isMouse */
            ifeq 71
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.isDragAcceleratorActive:()Z
            ifne 71
        59: .line 5897
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            fload 2 /* eventX */
            fload 3 /* eventY */
            invokevirtual android.widget.TextView.getOffsetForPosition:(FF)I
            istore 7 /* offset */
        start local 7 // int offset
        60: .line 5898
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.hasSelection:()Z
            ifeq 66
        61: .line 5899
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
            ifeq 62
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            iload 7 /* offset */
            if_icmpeq 66
        62: .line 5900
      StackMap locals: int
      StackMap stack:
            iload 7 /* offset */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionStart:()I
            if_icmplt 66
        63: .line 5901
            iload 7 /* offset */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionEnd:()I
            if_icmpgt 66
        64: .line 5902
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.startDragAndDrop:()V
        65: .line 5903
            goto 82
        66: .line 5906
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            iload 7 /* offset */
            if_icmpeq 71
        67: .line 5908
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.stopTextActionMode:()V
        68: .line 5909
            aload 0 /* this */
            iconst_1
            invokevirtual android.widget.Editor$SelectionModifierCursorController.enterDrag:(I)V
        69: .line 5910
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            iconst_1
            putfield android.widget.Editor.mDiscardNextActionUp:Z
        70: .line 5911
            aload 0 /* this */
            iconst_0
            putfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
        end local 7 // int offset
        71: .line 5915
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 73
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.isShowing:()Z
            ifeq 73
        72: .line 5917
            goto 82
        73: .line 5920
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateSelection:(Landroid/view/MotionEvent;)V
        74: .line 5921
            goto 82
        end local 6 // int touchSlop
        end local 5 // android.view.ViewConfiguration viewConfig
        75: .line 5924
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.isDragAcceleratorActive:()Z
            ifne 77
        76: .line 5925
            goto 82
        77: .line 5927
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateSelection:(Landroid/view/MotionEvent;)V
        78: .line 5930
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getParent:()Landroid/view/ViewParent;
            iconst_0
            invokeinterface android.view.ViewParent.requestDisallowInterceptTouchEvent:(Z)V
        79: .line 5933
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.resetDragAcceleratorState:()V
        80: .line 5935
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.hasSelection:()Z
            ifeq 82
        81: .line 5937
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
            invokevirtual android.widget.Editor.startSelectionActionModeAsync:(Z)V
        82: .line 5941
      StackMap locals:
      StackMap stack:
            return
        end local 4 // boolean isMouse
        end local 3 // float eventY
        end local 2 // float eventX
        end local 1 // android.view.MotionEvent event
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   83     0                this  Landroid/widget/Editor$SelectionModifierCursorController;
            0   83     1               event  Landroid/view/MotionEvent;
            1   83     2              eventX  F
            2   83     3              eventY  F
            3   83     4             isMouse  Z
           14   29     5              deltaX  F
           15   29     6              deltaY  F
           16   29     7     distanceSquared  F
           18   29     8   viewConfiguration  Landroid/view/ViewConfiguration;
           19   29     9       doubleTapSlop  I
           22   29    10        stayedInArea  Z
           42   75     5          viewConfig  Landroid/view/ViewConfiguration;
           43   75     6           touchSlop  I
           45   58     7              deltaX  F
           46   58     8              deltaY  F
           47   58     9     distanceSquared  F
           49   53    10  doubleTapTouchSlop  I
           60   71     7              offset  I
    MethodParameters:
       Name  Flags
      event  

  private void updateSelection(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // android.view.MotionEvent event
         0: .line 5944
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getLayout:()Landroid/text/Layout;
            ifnull 7
         1: .line 5945
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mDragAcceleratorMode:I
            tableswitch { // 1 - 3
                    1: 2
                    2: 4
                    3: 6
              default: 7
          }
         2: .line 5947
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateCharacterBasedSelection:(Landroid/view/MotionEvent;)V
         3: .line 5948
            goto 7
         4: .line 5950
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateWordBasedSelection:(Landroid/view/MotionEvent;)V
         5: .line 5951
            goto 7
         6: .line 5953
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* event */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateParagraphBasedSelection:(Landroid/view/MotionEvent;)V
         7: .line 5957
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.view.MotionEvent event
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0   this  Landroid/widget/Editor$SelectionModifierCursorController;
            0    8     1  event  Landroid/view/MotionEvent;
    MethodParameters:
       Name  Flags
      event  

  private boolean selectCurrentParagraphAndStartDrag();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 5965
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mInsertionActionModeRunnable:Ljava/lang/Runnable;
            ifnull 2
         1: .line 5966
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mInsertionActionModeRunnable:Ljava/lang/Runnable;
            invokevirtual android.widget.TextView.removeCallbacks:(Ljava/lang/Runnable;)Z
            pop
         2: .line 5968
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.stopTextActionMode:()V
         3: .line 5969
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.selectCurrentParagraph:()Z
            ifne 5
         4: .line 5970
            iconst_0
            ireturn
         5: .line 5972
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_3
            invokevirtual android.widget.Editor$SelectionModifierCursorController.enterDrag:(I)V
         6: .line 5973
            iconst_1
            ireturn
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  private void updateCharacterBasedSelection(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // android.view.MotionEvent event
         0: .line 5977
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getX:()F
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getY:()F
            invokevirtual android.widget.TextView.getOffsetForPosition:(FF)I
            istore 2 /* offset */
        start local 2 // int offset
         1: .line 5978
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            iload 2 /* offset */
         2: .line 5979
            aload 1 /* event */
            sipush 4098
            invokevirtual android.view.MotionEvent.isFromSource:(I)Z
         3: .line 5978
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateSelectionInternal:(IIZ)V
         4: .line 5980
            return
        end local 2 // int offset
        end local 1 // android.view.MotionEvent event
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Landroid/widget/Editor$SelectionModifierCursorController;
            0    5     1   event  Landroid/view/MotionEvent;
            1    5     2  offset  I
    MethodParameters:
       Name  Flags
      event  

  private void updateWordBasedSelection(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=10, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // android.view.MotionEvent event
         0: .line 5983
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mHaventMovedEnoughToStartDrag:Z
            ifeq 2
         1: .line 5984
            return
         2: .line 5986
      StackMap locals:
      StackMap stack:
            aload 1 /* event */
            sipush 8194
            invokevirtual android.view.MotionEvent.isFromSource:(I)Z
            istore 2 /* isMouse */
        start local 2 // boolean isMouse
         3: .line 5988
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
         4: .line 5987
            invokestatic android.view.ViewConfiguration.get:(Landroid/content/Context;)Landroid/view/ViewConfiguration;
            astore 3 /* viewConfig */
        start local 3 // android.view.ViewConfiguration viewConfig
         5: .line 5989
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getX:()F
            fstore 4 /* eventX */
        start local 4 // float eventX
         6: .line 5990
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getY:()F
            fstore 5 /* eventY */
        start local 5 // float eventY
         7: .line 5992
            iload 2 /* isMouse */
            ifeq 10
         8: .line 5994
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            fload 5 /* eventY */
            invokevirtual android.widget.TextView.getLineAtCoordinate:(F)I
            istore 6 /* currLine */
        start local 6 // int currLine
         9: .line 5995
            goto 24
        end local 6 // int currLine
        10: .line 5996
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent int android.view.ViewConfiguration float float
      StackMap stack:
            fload 5 /* eventY */
            fstore 7 /* y */
        start local 7 // float y
        11: .line 5997
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mSwitchedLines:Z
            ifeq 18
        12: .line 6002
            aload 3 /* viewConfig */
            invokevirtual android.view.ViewConfiguration.getScaledTouchSlop:()I
            istore 8 /* touchSlop */
        start local 8 // int touchSlop
        13: .line 6003
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 15
        14: .line 6004
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.getIdealVerticalOffset:()F
            goto 16
        15: .line 6005
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent int android.view.ViewConfiguration float float top float int
      StackMap stack:
            iload 8 /* touchSlop */
            i2f
        16: .line 6003
      StackMap locals:
      StackMap stack: float
            fstore 9 /* fingerOffset */
        start local 9 // float fingerOffset
        17: .line 6006
            fload 5 /* eventY */
            fload 9 /* fingerOffset */
            fsub
            fstore 7 /* y */
        end local 9 // float fingerOffset
        end local 8 // int touchSlop
        18: .line 6009
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getLayout:()Landroid/text/Layout;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mLineSelectionIsOn:I
        19: .line 6010
            fload 7 /* y */
        20: .line 6009
            invokevirtual android.widget.Editor.getCurrentLineAdjustedForSlop:(Landroid/text/Layout;IF)I
            istore 6 /* currLine */
        start local 6 // int currLine
        21: .line 6011
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mSwitchedLines:Z
            ifne 24
            iload 6 /* currLine */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mLineSelectionIsOn:I
            if_icmpeq 24
        22: .line 6016
            aload 0 /* this */
            iconst_1
            putfield android.widget.Editor$SelectionModifierCursorController.mSwitchedLines:Z
        23: .line 6017
            return
        end local 7 // float y
        24: .line 6022
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent int android.view.ViewConfiguration float float int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            iload 6 /* currLine */
            fload 4 /* eventX */
            invokevirtual android.widget.TextView.getOffsetAtCoordinate:(IF)I
            istore 8 /* offset */
        start local 8 // int offset
        25: .line 6024
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            iload 8 /* offset */
            if_icmpge 29
        26: .line 6026
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            iload 8 /* offset */
            invokevirtual android.widget.Editor.getWordEnd:(I)I
            istore 8 /* offset */
        27: .line 6027
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            invokevirtual android.widget.Editor.getWordStart:(I)I
            istore 7 /* startOffset */
        start local 7 // int startOffset
        28: .line 6028
            goto 33
        end local 7 // int startOffset
        29: .line 6030
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent int android.view.ViewConfiguration float float int top int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            iload 8 /* offset */
            invokevirtual android.widget.Editor.getWordStart:(I)I
            istore 8 /* offset */
        30: .line 6031
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            invokevirtual android.widget.Editor.getWordEnd:(I)I
            istore 7 /* startOffset */
        start local 7 // int startOffset
        31: .line 6032
            iload 7 /* startOffset */
            iload 8 /* offset */
            if_icmpne 33
        32: .line 6033
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            iload 8 /* offset */
            iconst_0
            invokevirtual android.widget.Editor.getNextCursorOffset:(IZ)I
            istore 8 /* offset */
        33: .line 6036
      StackMap locals: android.widget.Editor$SelectionModifierCursorController android.view.MotionEvent int android.view.ViewConfiguration float float int int int
      StackMap stack:
            aload 0 /* this */
            iload 6 /* currLine */
            putfield android.widget.Editor$SelectionModifierCursorController.mLineSelectionIsOn:I
        34: .line 6037
            aload 0 /* this */
            iload 7 /* startOffset */
            iload 8 /* offset */
        35: .line 6038
            aload 1 /* event */
            sipush 4098
            invokevirtual android.view.MotionEvent.isFromSource:(I)Z
        36: .line 6037
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateSelectionInternal:(IIZ)V
        37: .line 6039
            return
        end local 8 // int offset
        end local 7 // int startOffset
        end local 6 // int currLine
        end local 5 // float eventY
        end local 4 // float eventX
        end local 3 // android.view.ViewConfiguration viewConfig
        end local 2 // boolean isMouse
        end local 1 // android.view.MotionEvent event
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   38     0          this  Landroid/widget/Editor$SelectionModifierCursorController;
            0   38     1         event  Landroid/view/MotionEvent;
            3   38     2       isMouse  Z
            5   38     3    viewConfig  Landroid/view/ViewConfiguration;
            6   38     4        eventX  F
            7   38     5        eventY  F
            9   10     6      currLine  I
           21   38     6      currLine  I
           11   24     7             y  F
           13   18     8     touchSlop  I
           17   18     9  fingerOffset  F
           28   29     7   startOffset  I
           31   38     7   startOffset  I
           25   38     8        offset  I
    MethodParameters:
       Name  Flags
      event  

  private void updateParagraphBasedSelection(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // android.view.MotionEvent event
         0: .line 6042
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getX:()F
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getY:()F
            invokevirtual android.widget.TextView.getOffsetForPosition:(FF)I
            istore 2 /* offset */
        start local 2 // int offset
         1: .line 6044
            iload 2 /* offset */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            invokestatic java.lang.Math.min:(II)I
            istore 3 /* start */
        start local 3 // int start
         2: .line 6045
            iload 2 /* offset */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
            invokestatic java.lang.Math.max:(II)I
            istore 4 /* end */
        start local 4 // int end
         3: .line 6046
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            iload 3 /* start */
            iload 4 /* end */
            invokevirtual android.widget.Editor.getParagraphsRange:(II)J
            lstore 5 /* paragraphsRange */
        start local 5 // long paragraphsRange
         4: .line 6047
            lload 5 /* paragraphsRange */
            invokestatic android.text.TextUtils.unpackRangeStartFromLong:(J)I
            istore 7 /* selectionStart */
        start local 7 // int selectionStart
         5: .line 6048
            lload 5 /* paragraphsRange */
            invokestatic android.text.TextUtils.unpackRangeEndFromLong:(J)I
            istore 8 /* selectionEnd */
        start local 8 // int selectionEnd
         6: .line 6049
            aload 0 /* this */
            iload 7 /* selectionStart */
            iload 8 /* selectionEnd */
         7: .line 6050
            aload 1 /* event */
            sipush 4098
            invokevirtual android.view.MotionEvent.isFromSource:(I)Z
         8: .line 6049
            invokevirtual android.widget.Editor$SelectionModifierCursorController.updateSelectionInternal:(IIZ)V
         9: .line 6051
            return
        end local 8 // int selectionEnd
        end local 7 // int selectionStart
        end local 5 // long paragraphsRange
        end local 4 // int end
        end local 3 // int start
        end local 2 // int offset
        end local 1 // android.view.MotionEvent event
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0             this  Landroid/widget/Editor$SelectionModifierCursorController;
            0   10     1            event  Landroid/view/MotionEvent;
            1   10     2           offset  I
            2   10     3            start  I
            3   10     4              end  I
            4   10     5  paragraphsRange  J
            5   10     7   selectionStart  I
            6   10     8     selectionEnd  I
    MethodParameters:
       Name  Flags
      event  

  private void updateSelectionInternal(int, int, boolean);
    descriptor: (IIZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // int selectionStart
        start local 2 // int selectionEnd
        start local 3 // boolean fromTouchScreen
         0: .line 6055
            iload 3 /* fromTouchScreen */
            ifeq 4
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mHapticTextHandleEnabled:Z
            ifeq 4
         1: .line 6056
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionStart:()I
            iload 1 /* selectionStart */
            if_icmpne 3
         2: .line 6057
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionEnd:()I
            iload 2 /* selectionEnd */
            if_icmpeq 4
         3: .line 6055
      StackMap locals:
      StackMap stack:
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 4 /* performHapticFeedback */
        start local 4 // boolean performHapticFeedback
         6: .line 6058
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Spannable
            iload 1 /* selectionStart */
            iload 2 /* selectionEnd */
            invokestatic android.text.Selection.setSelection:(Landroid/text/Spannable;II)V
         7: .line 6059
            iload 4 /* performHapticFeedback */
            ifeq 9
         8: .line 6060
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            bipush 9
            invokevirtual android.widget.TextView.performHapticFeedback:(I)Z
            pop
         9: .line 6062
      StackMap locals: int
      StackMap stack:
            return
        end local 4 // boolean performHapticFeedback
        end local 3 // boolean fromTouchScreen
        end local 2 // int selectionEnd
        end local 1 // int selectionStart
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   10     0                   this  Landroid/widget/Editor$SelectionModifierCursorController;
            0   10     1         selectionStart  I
            0   10     2           selectionEnd  I
            0   10     3        fromTouchScreen  Z
            6   10     4  performHapticFeedback  Z
    MethodParameters:
                 Name  Flags
      selectionStart   
      selectionEnd     
      fromTouchScreen  

  private void updateMinAndMaxOffsets(android.view.MotionEvent);
    descriptor: (Landroid/view/MotionEvent;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // android.view.MotionEvent event
         0: .line 6068
            aload 1 /* event */
            invokevirtual android.view.MotionEvent.getPointerCount:()I
            istore 2 /* pointerCount */
        start local 2 // int pointerCount
         1: .line 6069
            iconst_0
            istore 3 /* index */
        start local 3 // int index
         2: goto 7
         3: .line 6070
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 1 /* event */
            iload 3 /* index */
            invokevirtual android.view.MotionEvent.getX:(I)F
            aload 1 /* event */
            iload 3 /* index */
            invokevirtual android.view.MotionEvent.getY:(I)F
            invokevirtual android.widget.TextView.getOffsetForPosition:(FF)I
            istore 4 /* offset */
        start local 4 // int offset
         4: .line 6071
            iload 4 /* offset */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mMinTouchOffset:I
            if_icmpge 5
            aload 0 /* this */
            iload 4 /* offset */
            putfield android.widget.Editor$SelectionModifierCursorController.mMinTouchOffset:I
         5: .line 6072
      StackMap locals: int
      StackMap stack:
            iload 4 /* offset */
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mMaxTouchOffset:I
            if_icmple 6
            aload 0 /* this */
            iload 4 /* offset */
            putfield android.widget.Editor$SelectionModifierCursorController.mMaxTouchOffset:I
        end local 4 // int offset
         6: .line 6069
      StackMap locals:
      StackMap stack:
            iinc 3 /* index */ 1
      StackMap locals:
      StackMap stack:
         7: iload 3 /* index */
            iload 2 /* pointerCount */
            if_icmplt 3
        end local 3 // int index
         8: .line 6074
            return
        end local 2 // int pointerCount
        end local 1 // android.view.MotionEvent event
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Landroid/widget/Editor$SelectionModifierCursorController;
            0    9     1         event  Landroid/view/MotionEvent;
            1    9     2  pointerCount  I
            2    8     3         index  I
            4    6     4        offset  I
    MethodParameters:
       Name  Flags
      event  

  public int getMinTouchOffset();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6077
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mMinTouchOffset:I
            ireturn
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public int getMaxTouchOffset();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6081
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mMaxTouchOffset:I
            ireturn
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public void resetTouchOffsets();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6085
            aload 0 /* this */
            aload 0 /* this */
            iconst_m1
            dup_x1
            putfield android.widget.Editor$SelectionModifierCursorController.mMaxTouchOffset:I
            putfield android.widget.Editor$SelectionModifierCursorController.mMinTouchOffset:I
         1: .line 6086
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.resetDragAcceleratorState:()V
         2: .line 6087
            return
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  private void resetDragAcceleratorState();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6090
            aload 0 /* this */
            iconst_m1
            putfield android.widget.Editor$SelectionModifierCursorController.mStartOffset:I
         1: .line 6091
            aload 0 /* this */
            iconst_0
            putfield android.widget.Editor$SelectionModifierCursorController.mDragAcceleratorMode:I
         2: .line 6092
            aload 0 /* this */
            iconst_0
            putfield android.widget.Editor$SelectionModifierCursorController.mSwitchedLines:Z
         3: .line 6093
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionStart:()I
            istore 1 /* selectionStart */
        start local 1 // int selectionStart
         4: .line 6094
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionEnd:()I
            istore 2 /* selectionEnd */
        start local 2 // int selectionEnd
         5: .line 6095
            iload 1 /* selectionStart */
            iflt 6
            iload 2 /* selectionEnd */
            ifge 8
         6: .line 6096
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Spannable
            invokestatic android.text.Selection.removeSelection:(Landroid/text/Spannable;)V
         7: .line 6097
            goto 12
      StackMap locals:
      StackMap stack:
         8: iload 1 /* selectionStart */
            iload 2 /* selectionEnd */
            if_icmple 12
         9: .line 6098
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Spannable
        10: .line 6099
            iload 2 /* selectionEnd */
            iload 1 /* selectionStart */
        11: .line 6098
            invokestatic android.text.Selection.setSelection:(Landroid/text/Spannable;II)V
        12: .line 6101
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int selectionEnd
        end local 1 // int selectionStart
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Landroid/widget/Editor$SelectionModifierCursorController;
            4   13     1  selectionStart  I
            5   13     2    selectionEnd  I

  public boolean isSelectionStartDragged();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6107
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 1
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.isDragging:()Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public boolean isCursorBeingModified();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6112
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.isDragAcceleratorActive:()Z
            ifne 3
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.isSelectionStartDragged:()Z
            ifne 3
         1: .line 6113
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 2
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.isDragging:()Z
            ifne 3
         2: .line 6112
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public boolean isDragAcceleratorActive();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6120
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mDragAcceleratorMode:I
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public void onTouchModeChanged(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
        start local 1 // boolean isInTouchMode
         0: .line 6124
            iload 1 /* isInTouchMode */
            ifne 2
         1: .line 6125
            aload 0 /* this */
            invokevirtual android.widget.Editor$SelectionModifierCursorController.hide:()V
         2: .line 6127
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean isInTouchMode
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Landroid/widget/Editor$SelectionModifierCursorController;
            0    3     1  isInTouchMode  Z
    MethodParameters:
               Name  Flags
      isInTouchMode  

  public void onDetached();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6131
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getViewTreeObserver:()Landroid/view/ViewTreeObserver;
            astore 1 /* observer */
        start local 1 // android.view.ViewTreeObserver observer
         1: .line 6132
            aload 1 /* observer */
            aload 0 /* this */
            invokevirtual android.view.ViewTreeObserver.removeOnTouchModeChangeListener:(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V
         2: .line 6134
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 3
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.onDetached:()V
         3: .line 6135
      StackMap locals: android.view.ViewTreeObserver
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 4
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.onDetached:()V
         4: .line 6136
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.view.ViewTreeObserver observer
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Landroid/widget/Editor$SelectionModifierCursorController;
            1    5     1  observer  Landroid/view/ViewTreeObserver;

  public boolean isActive();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6140
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 1
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.isShowing:()Z
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/widget/Editor$SelectionModifierCursorController;

  public void invalidateHandles();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.Editor$SelectionModifierCursorController this
         0: .line 6144
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 2
         1: .line 6145
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mStartHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.invalidate:()V
         2: .line 6147
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            ifnull 4
         3: .line 6148
            aload 0 /* this */
            getfield android.widget.Editor$SelectionModifierCursorController.mEndHandle:Landroid/widget/Editor$SelectionHandleView;
            invokevirtual android.widget.Editor$SelectionHandleView.invalidate:()V
         4: .line 6150
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.widget.Editor$SelectionModifierCursorController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/widget/Editor$SelectionModifierCursorController;
}
SourceFile: "Editor.java"
NestHost: android.widget.Editor
InnerClasses:
  public abstract OnTouchModeChangeListener = android.view.ViewTreeObserver$OnTouchModeChangeListener of android.view.ViewTreeObserver
  private abstract CursorController = android.widget.Editor$CursorController of android.widget.Editor
  public final SelectionHandleView = android.widget.Editor$SelectionHandleView of android.widget.Editor
  SelectionModifierCursorController = android.widget.Editor$SelectionModifierCursorController of android.widget.Editor