class android.widget.Editor$SpanController implements android.text.SpanWatcher
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.widget.Editor$SpanController
  super_class: java.lang.Object
{
  private static final int DISPLAY_TIMEOUT_MS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3000

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

  private java.lang.Runnable mHidePopup;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0002) ACC_PRIVATE

  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=2, locals=2, args_size=2
        start local 0 // android.widget.Editor$SpanController this
         0: .line 2924
            aload 0 /* this */
            aload 1
            putfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // android.widget.Editor$SpanController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/Editor$SpanController;
    MethodParameters:
        Name  Flags
      this$0  final

  private boolean isNonIntermediateSelectionSpan(android.text.Spannable, java.lang.Object);
    descriptor: (Landroid/text/Spannable;Ljava/lang/Object;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // android.widget.Editor$SpanController this
        start local 1 // android.text.Spannable text
        start local 2 // java.lang.Object span
         0: .line 2935
            getstatic android.text.Selection.SELECTION_START:Ljava/lang/Object;
            aload 2 /* span */
            if_acmpeq 1
            getstatic android.text.Selection.SELECTION_END:Ljava/lang/Object;
            aload 2 /* span */
            if_acmpne 3
         1: .line 2936
      StackMap locals:
      StackMap stack:
            aload 1 /* text */
            aload 2 /* span */
            invokeinterface android.text.Spannable.getSpanFlags:(Ljava/lang/Object;)I
            sipush 512
            iand
            ifne 3
         2: .line 2935
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_0
            ireturn
        end local 2 // java.lang.Object span
        end local 1 // android.text.Spannable text
        end local 0 // android.widget.Editor$SpanController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/widget/Editor$SpanController;
            0    4     1  text  Landroid/text/Spannable;
            0    4     2  span  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      text  final
      span  final

  public void onSpanAdded(android.text.Spannable, java.lang.Object, int, int);
    descriptor: (Landroid/text/Spannable;Ljava/lang/Object;II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=5
        start local 0 // android.widget.Editor$SpanController this
        start local 1 // android.text.Spannable text
        start local 2 // java.lang.Object span
        start local 3 // int start
        start local 4 // int end
         0: .line 2941
            aload 0 /* this */
            aload 1 /* text */
            aload 2 /* span */
            invokevirtual android.widget.Editor$SpanController.isNonIntermediateSelectionSpan:(Landroid/text/Spannable;Ljava/lang/Object;)Z
            ifeq 3
         1: .line 2942
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.sendUpdateSelection:()V
         2: .line 2943
            goto 20
      StackMap locals:
      StackMap stack:
         3: aload 2 /* span */
            instanceof android.text.style.EasyEditSpan
            ifeq 20
         4: .line 2944
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            ifnonnull 7
         5: .line 2945
            aload 0 /* this */
            new android.widget.Editor$EasyEditPopupWindow
            dup
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            invokespecial android.widget.Editor$EasyEditPopupWindow.<init>:(Landroid/widget/Editor;)V
            putfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
         6: .line 2946
            aload 0 /* this */
            new android.widget.Editor$SpanController$1
            dup
            aload 0 /* this */
            invokespecial android.widget.Editor$SpanController$1.<init>:(Landroid/widget/Editor$SpanController;)V
            putfield android.widget.Editor$SpanController.mHidePopup:Ljava/lang/Runnable;
         7: .line 2955
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            getfield android.widget.Editor$EasyEditPopupWindow.mEasyEditSpan:Landroid/text/style/EasyEditSpan;
            ifnull 9
         8: .line 2956
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            getfield android.widget.Editor$EasyEditPopupWindow.mEasyEditSpan:Landroid/text/style/EasyEditSpan;
            iconst_0
            invokevirtual android.text.style.EasyEditSpan.setDeleteEnabled:(Z)V
         9: .line 2959
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            aload 2 /* span */
            checkcast android.text.style.EasyEditSpan
            invokevirtual android.widget.Editor$EasyEditPopupWindow.setEasyEditSpan:(Landroid/text/style/EasyEditSpan;)V
        10: .line 2960
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            new android.widget.Editor$SpanController$2
            dup
            aload 0 /* this */
            invokespecial android.widget.Editor$SpanController$2.<init>:(Landroid/widget/Editor$SpanController;)V
            invokevirtual android.widget.Editor$EasyEditPopupWindow.setOnDeleteListener:(Landroid/widget/Editor$EasyEditDeleteListener;)V
        11: .line 2974
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getWindowVisibility:()I
            ifeq 13
        12: .line 2976
            return
        13: .line 2979
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getLayout:()Landroid/text/Layout;
            ifnonnull 15
        14: .line 2981
            return
        15: .line 2984
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.extractedTextModeWillBeStarted:()Z
            ifeq 17
        16: .line 2987
            return
        17: .line 2990
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            invokevirtual android.widget.Editor$EasyEditPopupWindow.show:()V
        18: .line 2991
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mHidePopup:Ljava/lang/Runnable;
            invokevirtual android.widget.TextView.removeCallbacks:(Ljava/lang/Runnable;)Z
            pop
        19: .line 2992
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mHidePopup:Ljava/lang/Runnable;
            ldc 3000
            invokevirtual android.widget.TextView.postDelayed:(Ljava/lang/Runnable;J)Z
            pop
        20: .line 2994
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int end
        end local 3 // int start
        end local 2 // java.lang.Object span
        end local 1 // android.text.Spannable text
        end local 0 // android.widget.Editor$SpanController this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   21     0   this  Landroid/widget/Editor$SpanController;
            0   21     1   text  Landroid/text/Spannable;
            0   21     2   span  Ljava/lang/Object;
            0   21     3  start  I
            0   21     4    end  I
    MethodParameters:
       Name  Flags
      text   
      span   
      start  
      end    

  public void onSpanRemoved(android.text.Spannable, java.lang.Object, int, int);
    descriptor: (Landroid/text/Spannable;Ljava/lang/Object;II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // android.widget.Editor$SpanController this
        start local 1 // android.text.Spannable text
        start local 2 // java.lang.Object span
        start local 3 // int start
        start local 4 // int end
         0: .line 2998
            aload 0 /* this */
            aload 1 /* text */
            aload 2 /* span */
            invokevirtual android.widget.Editor$SpanController.isNonIntermediateSelectionSpan:(Landroid/text/Spannable;Ljava/lang/Object;)Z
            ifeq 3
         1: .line 2999
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.sendUpdateSelection:()V
         2: .line 3000
            goto 5
      StackMap locals:
      StackMap stack:
         3: aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            ifnull 5
            aload 2 /* span */
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            getfield android.widget.Editor$EasyEditPopupWindow.mEasyEditSpan:Landroid/text/style/EasyEditSpan;
            if_acmpne 5
         4: .line 3001
            aload 0 /* this */
            invokevirtual android.widget.Editor$SpanController.hide:()V
         5: .line 3003
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int end
        end local 3 // int start
        end local 2 // java.lang.Object span
        end local 1 // android.text.Spannable text
        end local 0 // android.widget.Editor$SpanController this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Landroid/widget/Editor$SpanController;
            0    6     1   text  Landroid/text/Spannable;
            0    6     2   span  Ljava/lang/Object;
            0    6     3  start  I
            0    6     4    end  I
    MethodParameters:
       Name  Flags
      text   
      span   
      start  
      end    

  public void onSpanChanged(android.text.Spannable, java.lang.Object, int, int, int, int);
    descriptor: (Landroid/text/Spannable;Ljava/lang/Object;IIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=8, args_size=7
        start local 0 // android.widget.Editor$SpanController this
        start local 1 // android.text.Spannable text
        start local 2 // java.lang.Object span
        start local 3 // int previousStart
        start local 4 // int previousEnd
        start local 5 // int newStart
        start local 6 // int newEnd
         0: .line 3008
            aload 0 /* this */
            aload 1 /* text */
            aload 2 /* span */
            invokevirtual android.widget.Editor$SpanController.isNonIntermediateSelectionSpan:(Landroid/text/Spannable;Ljava/lang/Object;)Z
            ifeq 3
         1: .line 3009
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            invokevirtual android.widget.Editor.sendUpdateSelection:()V
         2: .line 3010
            goto 7
      StackMap locals:
      StackMap stack:
         3: aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            ifnull 7
            aload 2 /* span */
            instanceof android.text.style.EasyEditSpan
            ifeq 7
         4: .line 3011
            aload 2 /* span */
            checkcast android.text.style.EasyEditSpan
            astore 7 /* easyEditSpan */
        start local 7 // android.text.style.EasyEditSpan easyEditSpan
         5: .line 3012
            aload 0 /* this */
            iconst_2
            aload 7 /* easyEditSpan */
            invokevirtual android.widget.Editor$SpanController.sendEasySpanNotification:(ILandroid/text/style/EasyEditSpan;)V
         6: .line 3013
            aload 1 /* text */
            aload 7 /* easyEditSpan */
            invokeinterface android.text.Spannable.removeSpan:(Ljava/lang/Object;)V
        end local 7 // android.text.style.EasyEditSpan easyEditSpan
         7: .line 3015
      StackMap locals:
      StackMap stack:
            return
        end local 6 // int newEnd
        end local 5 // int newStart
        end local 4 // int previousEnd
        end local 3 // int previousStart
        end local 2 // java.lang.Object span
        end local 1 // android.text.Spannable text
        end local 0 // android.widget.Editor$SpanController this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Landroid/widget/Editor$SpanController;
            0    8     1           text  Landroid/text/Spannable;
            0    8     2           span  Ljava/lang/Object;
            0    8     3  previousStart  I
            0    8     4    previousEnd  I
            0    8     5       newStart  I
            0    8     6         newEnd  I
            5    7     7   easyEditSpan  Landroid/text/style/EasyEditSpan;
    MethodParameters:
               Name  Flags
      text           
      span           
      previousStart  
      previousEnd    
      newStart       
      newEnd         

  public void hide();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.widget.Editor$SpanController this
         0: .line 3018
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            ifnull 3
         1: .line 3019
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mPopupWindow:Landroid/widget/Editor$EasyEditPopupWindow;
            invokevirtual android.widget.Editor$EasyEditPopupWindow.hide:()V
         2: .line 3020
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.mHidePopup:Ljava/lang/Runnable;
            invokevirtual android.widget.TextView.removeCallbacks:(Ljava/lang/Runnable;)Z
            pop
         3: .line 3022
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.widget.Editor$SpanController this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/widget/Editor$SpanController;

  private void sendEasySpanNotification(int, android.text.style.EasyEditSpan);
    descriptor: (ILandroid/text/style/EasyEditSpan;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // android.widget.Editor$SpanController this
        start local 1 // int textChangedType
        start local 2 // android.text.style.EasyEditSpan span
         0: .line 3026
            aload 2 /* span */
            invokevirtual android.text.style.EasyEditSpan.getPendingIntent:()Landroid/app/PendingIntent;
            astore 3 /* pendingIntent */
        start local 3 // android.app.PendingIntent pendingIntent
         1: .line 3027
            aload 3 /* pendingIntent */
            ifnull 8
         2: .line 3028
            new android.content.Intent
            dup
            invokespecial android.content.Intent.<init>:()V
            astore 4 /* intent */
        start local 4 // android.content.Intent intent
         3: .line 3029
            aload 4 /* intent */
            ldc "android.text.style.EXTRA_TEXT_CHANGED_TYPE"
            iload 1 /* textChangedType */
            invokevirtual android.content.Intent.putExtra:(Ljava/lang/String;I)Landroid/content/Intent;
            pop
         4: .line 3030
            aload 3 /* pendingIntent */
            aload 0 /* this */
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
            iconst_0
            aload 4 /* intent */
            invokevirtual android.app.PendingIntent.send:(Landroid/content/Context;ILandroid/content/Intent;)V
        end local 4 // android.content.Intent intent
        end local 3 // android.app.PendingIntent pendingIntent
         5: .line 3032
            goto 8
      StackMap locals:
      StackMap stack: android.app.PendingIntent$CanceledException
         6: astore 3 /* e */
        start local 3 // android.app.PendingIntent$CanceledException e
         7: .line 3034
            ldc "Editor"
            ldc "PendingIntent for notification cannot be sent"
            aload 3 /* e */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 3 // android.app.PendingIntent$CanceledException e
         8: .line 3036
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.text.style.EasyEditSpan span
        end local 1 // int textChangedType
        end local 0 // android.widget.Editor$SpanController this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0             this  Landroid/widget/Editor$SpanController;
            0    9     1  textChangedType  I
            0    9     2             span  Landroid/text/style/EasyEditSpan;
            1    5     3    pendingIntent  Landroid/app/PendingIntent;
            3    5     4           intent  Landroid/content/Intent;
            7    8     3                e  Landroid/app/PendingIntent$CanceledException;
      Exception table:
        from    to  target  type
           0     5       6  Class android.app.PendingIntent$CanceledException
    MethodParameters:
                 Name  Flags
      textChangedType  
      span             

  static android.widget.Editor access$0(android.widget.Editor$SpanController);
    descriptor: (Landroid/widget/Editor$SpanController;)Landroid/widget/Editor;
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 2924
            aload 0
            getfield android.widget.Editor$SpanController.this$0:Landroid/widget/Editor;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "Editor.java"
NestHost: android.widget.Editor
InnerClasses:
  public CanceledException = android.app.PendingIntent$CanceledException of android.app.PendingIntent
  private abstract EasyEditDeleteListener = android.widget.Editor$EasyEditDeleteListener of android.widget.Editor
  private EasyEditPopupWindow = android.widget.Editor$EasyEditPopupWindow of android.widget.Editor
  private SpanController = android.widget.Editor$SpanController of android.widget.Editor
  android.widget.Editor$SpanController$1
  android.widget.Editor$SpanController$2