final class android.widget.Editor$CursorAnchorInfoNotifier implements android.widget.Editor$TextViewPositionListener
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: android.widget.Editor$CursorAnchorInfoNotifier
  super_class: java.lang.Object
{
  final android.view.inputmethod.CursorAnchorInfo$Builder mSelectionInfoBuilder;
    descriptor: Landroid/view/inputmethod/CursorAnchorInfo$Builder;
    flags: (0x0010) ACC_FINAL

  final int[] mTmpIntOffset;
    descriptor: [I
    flags: (0x0010) ACC_FINAL

  final android.graphics.Matrix mViewToScreenMatrix;
    descriptor: Landroid/graphics/Matrix;
    flags: (0x0010) ACC_FINAL

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

  private void <init>(android.widget.Editor);
    descriptor: (Landroid/widget/Editor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
         0: .line 4253
            aload 0 /* this */
            aload 1
            putfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 4254
            aload 0 /* this */
            new android.view.inputmethod.CursorAnchorInfo$Builder
            dup
            invokespecial android.view.inputmethod.CursorAnchorInfo$Builder.<init>:()V
            putfield android.widget.Editor$CursorAnchorInfoNotifier.mSelectionInfoBuilder:Landroid/view/inputmethod/CursorAnchorInfo$Builder;
         2: .line 4255
            aload 0 /* this */
            iconst_2
            newarray 10
            putfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
         3: .line 4256
            aload 0 /* this */
            new android.graphics.Matrix
            dup
            invokespecial android.graphics.Matrix.<init>:()V
            putfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
         4: .line 4253
            return
        end local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/widget/Editor$CursorAnchorInfoNotifier;
    MethodParameters:
        Name  Flags
      this$0  final

  public void updatePosition(int, int, boolean, boolean);
    descriptor: (IIZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=22, args_size=5
        start local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
        start local 1 // int parentPositionX
        start local 2 // int parentPositionY
        start local 3 // boolean parentPositionChanged
        start local 4 // boolean parentScrolled
         0: .line 4261
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mInputMethodState:Landroid/widget/Editor$InputMethodState;
            astore 5 /* ims */
        start local 5 // android.widget.Editor$InputMethodState ims
         1: .line 4262
            aload 5 /* ims */
            ifnull 2
            aload 5 /* ims */
            getfield android.widget.Editor$InputMethodState.mBatchEditNesting:I
            ifle 3
         2: .line 4263
      StackMap locals: android.widget.Editor$InputMethodState
      StackMap stack:
            return
         3: .line 4265
      StackMap locals:
      StackMap stack:
            invokestatic android.view.inputmethod.InputMethodManager.peekInstance:()Landroid/view/inputmethod/InputMethodManager;
            astore 6 /* imm */
        start local 6 // android.view.inputmethod.InputMethodManager imm
         4: .line 4266
            aload 6 /* imm */
            ifnonnull 6
         5: .line 4267
            return
         6: .line 4269
      StackMap locals: android.view.inputmethod.InputMethodManager
      StackMap stack:
            aload 6 /* imm */
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.view.inputmethod.InputMethodManager.isActive:(Landroid/view/View;)Z
            ifne 8
         7: .line 4270
            return
         8: .line 4273
      StackMap locals:
      StackMap stack:
            aload 6 /* imm */
            invokevirtual android.view.inputmethod.InputMethodManager.isCursorAnchorInfoEnabled:()Z
            ifne 10
         9: .line 4274
            return
        10: .line 4276
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getLayout:()Landroid/text/Layout;
            astore 7 /* layout */
        start local 7 // android.text.Layout layout
        11: .line 4277
            aload 7 /* layout */
            ifnonnull 13
        12: .line 4278
            return
        13: .line 4281
      StackMap locals: android.text.Layout
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.mSelectionInfoBuilder:Landroid/view/inputmethod/CursorAnchorInfo$Builder;
            astore 8 /* builder */
        start local 8 // android.view.inputmethod.CursorAnchorInfo$Builder builder
        14: .line 4282
            aload 8 /* builder */
            invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.reset:()V
        15: .line 4284
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionStart:()I
            istore 9 /* selectionStart */
        start local 9 // int selectionStart
        16: .line 4285
            aload 8 /* builder */
            iload 9 /* selectionStart */
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSelectionEnd:()I
            invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setSelectionRange:(II)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
            pop
        17: .line 4288
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getMatrix:()Landroid/graphics/Matrix;
            invokevirtual android.graphics.Matrix.set:(Landroid/graphics/Matrix;)V
        18: .line 4289
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
            invokevirtual android.widget.TextView.getLocationOnScreen:([I)V
        19: .line 4290
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
            iconst_0
            iaload
            i2f
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.mTmpIntOffset:[I
            iconst_1
            iaload
            i2f
            invokevirtual android.graphics.Matrix.postTranslate:(FF)Z
            pop
        20: .line 4291
            aload 8 /* builder */
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.mViewToScreenMatrix:Landroid/graphics/Matrix;
            invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setMatrix:(Landroid/graphics/Matrix;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
            pop
        21: .line 4294
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.viewportToContentHorizontalOffset:()I
            i2f
        22: .line 4293
            fstore 10 /* viewportToContentHorizontalOffset */
        start local 10 // float viewportToContentHorizontalOffset
        23: .line 4296
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.viewportToContentVerticalOffset:()I
            i2f
        24: .line 4295
            fstore 11 /* viewportToContentVerticalOffset */
        start local 11 // float viewportToContentVerticalOffset
        25: .line 4298
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            astore 12 /* text */
        start local 12 // java.lang.CharSequence text
        26: .line 4299
            aload 12 /* text */
            instanceof android.text.Spannable
            ifeq 47
        27: .line 4300
            aload 12 /* text */
            checkcast android.text.Spannable
            astore 13 /* sp */
        start local 13 // android.text.Spannable sp
        28: .line 4301
            aload 13 /* sp */
            invokestatic com.android.internal.widget.EditableInputConnection.getComposingSpanStart:(Landroid/text/Spannable;)I
            istore 14 /* composingTextStart */
        start local 14 // int composingTextStart
        29: .line 4302
            aload 13 /* sp */
            invokestatic com.android.internal.widget.EditableInputConnection.getComposingSpanEnd:(Landroid/text/Spannable;)I
            istore 15 /* composingTextEnd */
        start local 15 // int composingTextEnd
        30: .line 4303
            iload 15 /* composingTextEnd */
            iload 14 /* composingTextStart */
            if_icmpge 34
        31: .line 4304
            iload 15 /* composingTextEnd */
            istore 16 /* temp */
        start local 16 // int temp
        32: .line 4305
            iload 14 /* composingTextStart */
            istore 15 /* composingTextEnd */
        33: .line 4306
            iload 16 /* temp */
            istore 14 /* composingTextStart */
        end local 16 // int temp
        34: .line 4309
      StackMap locals: android.widget.Editor$CursorAnchorInfoNotifier int int int int android.widget.Editor$InputMethodState android.view.inputmethod.InputMethodManager android.text.Layout android.view.inputmethod.CursorAnchorInfo$Builder int float float java.lang.CharSequence android.text.Spannable int int
      StackMap stack:
            iload 14 /* composingTextStart */
            iflt 36
            iload 14 /* composingTextStart */
            iload 15 /* composingTextEnd */
        35: .line 4308
            if_icmpge 36
            iconst_1
            goto 37
      StackMap locals:
      StackMap stack:
        36: iconst_0
      StackMap locals:
      StackMap stack: int
        37: istore 16 /* hasComposingText */
        start local 16 // boolean hasComposingText
        38: .line 4310
            iload 16 /* hasComposingText */
            ifeq 47
        39: .line 4311
            aload 12 /* text */
            iload 14 /* composingTextStart */
        40: .line 4312
            iload 15 /* composingTextEnd */
        41: .line 4311
            invokeinterface java.lang.CharSequence.subSequence:(II)Ljava/lang/CharSequence;
            astore 17 /* composingText */
        start local 17 // java.lang.CharSequence composingText
        42: .line 4313
            aload 8 /* builder */
            iload 14 /* composingTextStart */
            aload 17 /* composingText */
            invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setComposingText:(ILjava/lang/CharSequence;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
            pop
        43: .line 4314
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 8 /* builder */
            iload 14 /* composingTextStart */
        44: .line 4315
            iload 15 /* composingTextEnd */
            fload 10 /* viewportToContentHorizontalOffset */
        45: .line 4316
            fload 11 /* viewportToContentVerticalOffset */
        46: .line 4314
            invokevirtual android.widget.TextView.populateCharacterBounds:(Landroid/view/inputmethod/CursorAnchorInfo$Builder;IIFF)V
        end local 17 // java.lang.CharSequence composingText
        end local 16 // boolean hasComposingText
        end local 15 // int composingTextEnd
        end local 14 // int composingTextStart
        end local 13 // android.text.Spannable sp
        47: .line 4321
      StackMap locals:
      StackMap stack:
            iload 9 /* selectionStart */
            iflt 78
        48: .line 4322
            iload 9 /* selectionStart */
            istore 13 /* offset */
        start local 13 // int offset
        49: .line 4323
            aload 7 /* layout */
            iload 13 /* offset */
            invokevirtual android.text.Layout.getLineForOffset:(I)I
            istore 14 /* line */
        start local 14 // int line
        50: .line 4324
            aload 7 /* layout */
            iload 13 /* offset */
            invokevirtual android.text.Layout.getPrimaryHorizontal:(I)F
        51: .line 4325
            fload 10 /* viewportToContentHorizontalOffset */
        52: .line 4324
            fadd
            fstore 15 /* insertionMarkerX */
        start local 15 // float insertionMarkerX
        53: .line 4326
            aload 7 /* layout */
            iload 14 /* line */
            invokevirtual android.text.Layout.getLineTop:(I)I
            i2f
        54: .line 4327
            fload 11 /* viewportToContentVerticalOffset */
        55: .line 4326
            fadd
            fstore 16 /* insertionMarkerTop */
        start local 16 // float insertionMarkerTop
        56: .line 4328
            aload 7 /* layout */
            iload 14 /* line */
            invokevirtual android.text.Layout.getLineBaseline:(I)I
            i2f
        57: .line 4329
            fload 11 /* viewportToContentVerticalOffset */
        58: .line 4328
            fadd
            fstore 17 /* insertionMarkerBaseline */
        start local 17 // float insertionMarkerBaseline
        59: .line 4330
            aload 7 /* layout */
            iload 14 /* line */
            invokevirtual android.text.Layout.getLineBottomWithoutSpacing:(I)I
            i2f
        60: .line 4331
            fload 11 /* viewportToContentVerticalOffset */
        61: .line 4330
            fadd
            fstore 18 /* insertionMarkerBottom */
        start local 18 // float insertionMarkerBottom
        62: .line 4332
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
        63: .line 4333
            fload 15 /* insertionMarkerX */
            fload 16 /* insertionMarkerTop */
            invokevirtual android.widget.TextView.isPositionVisible:(FF)Z
        64: .line 4332
            istore 19 /* isTopVisible */
        start local 19 // boolean isTopVisible
        65: .line 4334
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
        66: .line 4335
            fload 15 /* insertionMarkerX */
            fload 18 /* insertionMarkerBottom */
            invokevirtual android.widget.TextView.isPositionVisible:(FF)Z
        67: .line 4334
            istore 20 /* isBottomVisible */
        start local 20 // boolean isBottomVisible
        68: .line 4336
            iconst_0
            istore 21 /* insertionMarkerFlags */
        start local 21 // int insertionMarkerFlags
        69: .line 4337
            iload 19 /* isTopVisible */
            ifne 70
            iload 20 /* isBottomVisible */
            ifeq 71
        70: .line 4338
      StackMap locals: android.widget.Editor$CursorAnchorInfoNotifier int int int int android.widget.Editor$InputMethodState android.view.inputmethod.InputMethodManager android.text.Layout android.view.inputmethod.CursorAnchorInfo$Builder int float float java.lang.CharSequence int int float float float float int int int
      StackMap stack:
            iload 21 /* insertionMarkerFlags */
            iconst_1
            ior
            istore 21 /* insertionMarkerFlags */
        71: .line 4340
      StackMap locals:
      StackMap stack:
            iload 19 /* isTopVisible */
            ifeq 72
            iload 20 /* isBottomVisible */
            ifne 73
        72: .line 4341
      StackMap locals:
      StackMap stack:
            iload 21 /* insertionMarkerFlags */
            iconst_2
            ior
            istore 21 /* insertionMarkerFlags */
        73: .line 4343
      StackMap locals:
      StackMap stack:
            aload 7 /* layout */
            iload 13 /* offset */
            invokevirtual android.text.Layout.isRtlCharAt:(I)Z
            ifeq 75
        74: .line 4344
            iload 21 /* insertionMarkerFlags */
            iconst_4
            ior
            istore 21 /* insertionMarkerFlags */
        75: .line 4346
      StackMap locals:
      StackMap stack:
            aload 8 /* builder */
            fload 15 /* insertionMarkerX */
            fload 16 /* insertionMarkerTop */
        76: .line 4347
            fload 17 /* insertionMarkerBaseline */
            fload 18 /* insertionMarkerBottom */
            iload 21 /* insertionMarkerFlags */
        77: .line 4346
            invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.setInsertionMarkerLocation:(FFFFI)Landroid/view/inputmethod/CursorAnchorInfo$Builder;
            pop
        end local 21 // int insertionMarkerFlags
        end local 20 // boolean isBottomVisible
        end local 19 // boolean isTopVisible
        end local 18 // float insertionMarkerBottom
        end local 17 // float insertionMarkerBaseline
        end local 16 // float insertionMarkerTop
        end local 15 // float insertionMarkerX
        end local 14 // int line
        end local 13 // int offset
        78: .line 4350
      StackMap locals: android.widget.Editor$CursorAnchorInfoNotifier int int int int android.widget.Editor$InputMethodState android.view.inputmethod.InputMethodManager android.text.Layout android.view.inputmethod.CursorAnchorInfo$Builder int float float java.lang.CharSequence
      StackMap stack:
            aload 6 /* imm */
            aload 0 /* this */
            getfield android.widget.Editor$CursorAnchorInfoNotifier.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 8 /* builder */
            invokevirtual android.view.inputmethod.CursorAnchorInfo$Builder.build:()Landroid/view/inputmethod/CursorAnchorInfo;
            invokevirtual android.view.inputmethod.InputMethodManager.updateCursorAnchorInfo:(Landroid/view/View;Landroid/view/inputmethod/CursorAnchorInfo;)V
        79: .line 4351
            return
        end local 12 // java.lang.CharSequence text
        end local 11 // float viewportToContentVerticalOffset
        end local 10 // float viewportToContentHorizontalOffset
        end local 9 // int selectionStart
        end local 8 // android.view.inputmethod.CursorAnchorInfo$Builder builder
        end local 7 // android.text.Layout layout
        end local 6 // android.view.inputmethod.InputMethodManager imm
        end local 5 // android.widget.Editor$InputMethodState ims
        end local 4 // boolean parentScrolled
        end local 3 // boolean parentPositionChanged
        end local 2 // int parentPositionY
        end local 1 // int parentPositionX
        end local 0 // android.widget.Editor$CursorAnchorInfoNotifier this
      LocalVariableTable:
        Start  End  Slot                               Name  Signature
            0   80     0                               this  Landroid/widget/Editor$CursorAnchorInfoNotifier;
            0   80     1                    parentPositionX  I
            0   80     2                    parentPositionY  I
            0   80     3              parentPositionChanged  Z
            0   80     4                     parentScrolled  Z
            1   80     5                                ims  Landroid/widget/Editor$InputMethodState;
            4   80     6                                imm  Landroid/view/inputmethod/InputMethodManager;
           11   80     7                             layout  Landroid/text/Layout;
           14   80     8                            builder  Landroid/view/inputmethod/CursorAnchorInfo$Builder;
           16   80     9                     selectionStart  I
           23   80    10  viewportToContentHorizontalOffset  F
           25   80    11    viewportToContentVerticalOffset  F
           26   80    12                               text  Ljava/lang/CharSequence;
           28   47    13                                 sp  Landroid/text/Spannable;
           29   47    14                 composingTextStart  I
           30   47    15                   composingTextEnd  I
           32   34    16                               temp  I
           38   47    16                   hasComposingText  Z
           42   47    17                      composingText  Ljava/lang/CharSequence;
           49   78    13                             offset  I
           50   78    14                               line  I
           53   78    15                   insertionMarkerX  F
           56   78    16                 insertionMarkerTop  F
           59   78    17            insertionMarkerBaseline  F
           62   78    18              insertionMarkerBottom  F
           65   78    19                       isTopVisible  Z
           68   78    20                    isBottomVisible  Z
           69   78    21               insertionMarkerFlags  I
    MethodParameters:
                       Name  Flags
      parentPositionX        
      parentPositionY        
      parentPositionChanged  
      parentScrolled         
}
SourceFile: "Editor.java"
NestHost: android.widget.Editor
InnerClasses:
  public final Builder = android.view.inputmethod.CursorAnchorInfo$Builder of android.view.inputmethod.CursorAnchorInfo
  private final CursorAnchorInfoNotifier = android.widget.Editor$CursorAnchorInfoNotifier of android.widget.Editor
  InputMethodState = android.widget.Editor$InputMethodState of android.widget.Editor
  private abstract TextViewPositionListener = android.widget.Editor$TextViewPositionListener of android.widget.Editor