public class android.widget.Editor$UndoInputFilter implements android.text.InputFilter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.widget.Editor$UndoInputFilter
  super_class: java.lang.Object
{
  private final android.widget.Editor mEditor;
    descriptor: Landroid/widget/Editor;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

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

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

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

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

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

  public void <init>(android.widget.Editor);
    descriptor: (Landroid/widget/Editor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.Editor$UndoInputFilter this
        start local 1 // android.widget.Editor editor
         0: .line 6354
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 6355
            aload 0 /* this */
            aload 1 /* editor */
            putfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
         2: .line 6356
            return
        end local 1 // android.widget.Editor editor
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Landroid/widget/Editor$UndoInputFilter;
            0    3     1  editor  Landroid/widget/Editor;
    MethodParameters:
        Name  Flags
      editor  

  public void saveInstanceState(android.os.Parcel);
    descriptor: (Landroid/os/Parcel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.Editor$UndoInputFilter this
        start local 1 // android.os.Parcel parcel
         0: .line 6359
            aload 1 /* parcel */
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mIsUserEdit:Z
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: android.os.Parcel
         1: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.os.Parcel int
         2: invokevirtual android.os.Parcel.writeInt:(I)V
         3: .line 6360
            aload 1 /* parcel */
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mHasComposition:Z
            ifeq 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack: android.os.Parcel
         4: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.os.Parcel int
         5: invokevirtual android.os.Parcel.writeInt:(I)V
         6: .line 6361
            aload 1 /* parcel */
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mExpanding:Z
            ifeq 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack: android.os.Parcel
         7: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.os.Parcel int
         8: invokevirtual android.os.Parcel.writeInt:(I)V
         9: .line 6362
            aload 1 /* parcel */
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mPreviousOperationWasInSameBatchEdit:Z
            ifeq 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack: android.os.Parcel
        10: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.os.Parcel int
        11: invokevirtual android.os.Parcel.writeInt:(I)V
        12: .line 6363
            return
        end local 1 // android.os.Parcel parcel
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Landroid/widget/Editor$UndoInputFilter;
            0   13     1  parcel  Landroid/os/Parcel;
    MethodParameters:
        Name  Flags
      parcel  

  public void restoreInstanceState(android.os.Parcel);
    descriptor: (Landroid/os/Parcel;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.Editor$UndoInputFilter this
        start local 1 // android.os.Parcel parcel
         0: .line 6366
            aload 0 /* this */
            aload 1 /* parcel */
            invokevirtual android.os.Parcel.readInt:()I
            ifeq 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack: android.widget.Editor$UndoInputFilter
         1: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.widget.Editor$UndoInputFilter int
         2: putfield android.widget.Editor$UndoInputFilter.mIsUserEdit:Z
         3: .line 6367
            aload 0 /* this */
            aload 1 /* parcel */
            invokevirtual android.os.Parcel.readInt:()I
            ifeq 4
            iconst_1
            goto 5
      StackMap locals:
      StackMap stack: android.widget.Editor$UndoInputFilter
         4: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.widget.Editor$UndoInputFilter int
         5: putfield android.widget.Editor$UndoInputFilter.mHasComposition:Z
         6: .line 6368
            aload 0 /* this */
            aload 1 /* parcel */
            invokevirtual android.os.Parcel.readInt:()I
            ifeq 7
            iconst_1
            goto 8
      StackMap locals:
      StackMap stack: android.widget.Editor$UndoInputFilter
         7: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.widget.Editor$UndoInputFilter int
         8: putfield android.widget.Editor$UndoInputFilter.mExpanding:Z
         9: .line 6369
            aload 0 /* this */
            aload 1 /* parcel */
            invokevirtual android.os.Parcel.readInt:()I
            ifeq 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack: android.widget.Editor$UndoInputFilter
        10: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter android.os.Parcel
      StackMap stack: android.widget.Editor$UndoInputFilter int
        11: putfield android.widget.Editor$UndoInputFilter.mPreviousOperationWasInSameBatchEdit:Z
        12: .line 6370
            return
        end local 1 // android.os.Parcel parcel
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Landroid/widget/Editor$UndoInputFilter;
            0   13     1  parcel  Landroid/os/Parcel;
    MethodParameters:
        Name  Flags
      parcel  

  public void beginBatchEdit();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.widget.Editor$UndoInputFilter this
         0: .line 6377
            aload 0 /* this */
            iconst_1
            putfield android.widget.Editor$UndoInputFilter.mIsUserEdit:Z
         1: .line 6378
            return
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/widget/Editor$UndoInputFilter;

  public void endBatchEdit();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.widget.Editor$UndoInputFilter this
         0: .line 6382
            aload 0 /* this */
            iconst_0
            putfield android.widget.Editor$UndoInputFilter.mIsUserEdit:Z
         1: .line 6383
            aload 0 /* this */
            iconst_0
            putfield android.widget.Editor$UndoInputFilter.mPreviousOperationWasInSameBatchEdit:Z
         2: .line 6384
            return
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/widget/Editor$UndoInputFilter;

  public java.lang.CharSequence filter(java.lang.CharSequence, int, int, android.text.Spanned, int, int);
    descriptor: (Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=10, args_size=7
        start local 0 // android.widget.Editor$UndoInputFilter this
        start local 1 // java.lang.CharSequence source
        start local 2 // int start
        start local 3 // int end
        start local 4 // android.text.Spanned dest
        start local 5 // int dstart
        start local 6 // int dend
         0: .line 6395
            aload 0 /* this */
            aload 1 /* source */
            iload 2 /* start */
            iload 3 /* end */
            aload 4 /* dest */
            iload 5 /* dstart */
            iload 6 /* dend */
            invokevirtual android.widget.Editor$UndoInputFilter.canUndoEdit:(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Z
            ifne 2
         1: .line 6396
            aconst_null
            areturn
         2: .line 6399
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mHasComposition:Z
            istore 7 /* hadComposition */
        start local 7 // boolean hadComposition
         3: .line 6400
            aload 0 /* this */
            aload 1 /* source */
            invokestatic android.widget.Editor$UndoInputFilter.isComposition:(Ljava/lang/CharSequence;)Z
            putfield android.widget.Editor$UndoInputFilter.mHasComposition:Z
         4: .line 6401
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mExpanding:Z
            istore 8 /* wasExpanding */
        start local 8 // boolean wasExpanding
         5: .line 6402
            iconst_0
            istore 9 /* shouldCreateSeparateState */
        start local 9 // boolean shouldCreateSeparateState
         6: .line 6403
            iload 3 /* end */
            iload 2 /* start */
            isub
            iload 6 /* dend */
            iload 5 /* dstart */
            isub
            if_icmpeq 12
         7: .line 6404
            aload 0 /* this */
            iload 3 /* end */
            iload 2 /* start */
            isub
            iload 6 /* dend */
            iload 5 /* dstart */
            isub
            if_icmple 8
            iconst_1
            goto 9
      StackMap locals: android.widget.Editor$UndoInputFilter java.lang.CharSequence int int android.text.Spanned int int int int int
      StackMap stack: android.widget.Editor$UndoInputFilter
         8: iconst_0
      StackMap locals: android.widget.Editor$UndoInputFilter java.lang.CharSequence int int android.text.Spanned int int int int int
      StackMap stack: android.widget.Editor$UndoInputFilter int
         9: putfield android.widget.Editor$UndoInputFilter.mExpanding:Z
        10: .line 6405
            iload 7 /* hadComposition */
            ifeq 12
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mExpanding:Z
            iload 8 /* wasExpanding */
            if_icmpeq 12
        11: .line 6406
            iconst_1
            istore 9 /* shouldCreateSeparateState */
        12: .line 6411
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* source */
            iload 2 /* start */
            iload 3 /* end */
            aload 4 /* dest */
            iload 5 /* dstart */
            iload 6 /* dend */
            iload 9 /* shouldCreateSeparateState */
            invokevirtual android.widget.Editor$UndoInputFilter.handleEdit:(Ljava/lang/CharSequence;IILandroid/text/Spanned;IIZ)V
        13: .line 6412
            aconst_null
            areturn
        end local 9 // boolean shouldCreateSeparateState
        end local 8 // boolean wasExpanding
        end local 7 // boolean hadComposition
        end local 6 // int dend
        end local 5 // int dstart
        end local 4 // android.text.Spanned dest
        end local 3 // int end
        end local 2 // int start
        end local 1 // java.lang.CharSequence source
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   14     0                       this  Landroid/widget/Editor$UndoInputFilter;
            0   14     1                     source  Ljava/lang/CharSequence;
            0   14     2                      start  I
            0   14     3                        end  I
            0   14     4                       dest  Landroid/text/Spanned;
            0   14     5                     dstart  I
            0   14     6                       dend  I
            3   14     7             hadComposition  Z
            5   14     8               wasExpanding  Z
            6   14     9  shouldCreateSeparateState  Z
    MethodParameters:
        Name  Flags
      source  
      start   
      end     
      dest    
      dstart  
      dend    

  void freezeLastEdit();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.widget.Editor$UndoInputFilter this
         0: .line 6416
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoManager:Landroid/content/UndoManager;
            ldc "Edit text"
            invokevirtual android.content.UndoManager.beginUpdate:(Ljava/lang/CharSequence;)V
         1: .line 6417
            aload 0 /* this */
            invokevirtual android.widget.Editor$UndoInputFilter.getLastEdit:()Landroid/widget/Editor$EditOperation;
            astore 1 /* lastEdit */
        start local 1 // android.widget.Editor$EditOperation lastEdit
         2: .line 6418
            aload 1 /* lastEdit */
            ifnull 4
         3: .line 6419
            aload 1 /* lastEdit */
            iconst_1
            putfield android.widget.Editor$EditOperation.mFrozen:Z
         4: .line 6421
      StackMap locals: android.widget.Editor$EditOperation
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoManager:Landroid/content/UndoManager;
            invokevirtual android.content.UndoManager.endUpdate:()V
         5: .line 6422
            return
        end local 1 // android.widget.Editor$EditOperation lastEdit
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Landroid/widget/Editor$UndoInputFilter;
            2    6     1  lastEdit  Landroid/widget/Editor$EditOperation;

  private void handleEdit(java.lang.CharSequence, int, int, android.text.Spanned, int, int, boolean);
    descriptor: (Ljava/lang/CharSequence;IILandroid/text/Spanned;IIZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=12, args_size=8
        start local 0 // android.widget.Editor$UndoInputFilter this
        start local 1 // java.lang.CharSequence source
        start local 2 // int start
        start local 3 // int end
        start local 4 // android.text.Spanned dest
        start local 5 // int dstart
        start local 6 // int dend
        start local 7 // boolean shouldCreateSeparateState
         0: .line 6444
            aload 0 /* this */
            invokevirtual android.widget.Editor$UndoInputFilter.isInTextWatcher:()Z
            ifne 1
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mPreviousOperationWasInSameBatchEdit:Z
            ifeq 3
         1: .line 6445
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 8 /* mergeMode */
        start local 8 // int mergeMode
         2: .line 6446
            goto 7
        end local 8 // int mergeMode
      StackMap locals:
      StackMap stack:
         3: iload 7 /* shouldCreateSeparateState */
            ifeq 6
         4: .line 6447
            iconst_1
            istore 8 /* mergeMode */
        start local 8 // int mergeMode
         5: .line 6448
            goto 7
        end local 8 // int mergeMode
         6: .line 6449
      StackMap locals:
      StackMap stack:
            iconst_2
            istore 8 /* mergeMode */
        start local 8 // int mergeMode
         7: .line 6452
      StackMap locals: int
      StackMap stack:
            aload 1 /* source */
            iload 2 /* start */
            iload 3 /* end */
            invokestatic android.text.TextUtils.substring:(Ljava/lang/CharSequence;II)Ljava/lang/String;
            astore 9 /* newText */
        start local 9 // java.lang.String newText
         8: .line 6453
            aload 4 /* dest */
            iload 5 /* dstart */
            iload 6 /* dend */
            invokestatic android.text.TextUtils.substring:(Ljava/lang/CharSequence;II)Ljava/lang/String;
            astore 10 /* oldText */
        start local 10 // java.lang.String oldText
         9: .line 6454
            new android.widget.Editor$EditOperation
            dup
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            aload 10 /* oldText */
            iload 5 /* dstart */
            aload 9 /* newText */
        10: .line 6455
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mHasComposition:Z
        11: .line 6454
            invokespecial android.widget.Editor$EditOperation.<init>:(Landroid/widget/Editor;Ljava/lang/String;ILjava/lang/String;Z)V
            astore 11 /* edit */
        start local 11 // android.widget.Editor$EditOperation edit
        12: .line 6456
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mHasComposition:Z
            ifeq 14
            aload 11 /* edit */
            getfield android.widget.Editor$EditOperation.mNewText:Ljava/lang/String;
            aload 11 /* edit */
            getfield android.widget.Editor$EditOperation.mOldText:Ljava/lang/String;
            invokestatic android.text.TextUtils.equals:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
            ifeq 14
        13: .line 6457
            return
        14: .line 6459
      StackMap locals: java.lang.String java.lang.String android.widget.Editor$EditOperation
      StackMap stack:
            aload 0 /* this */
            aload 11 /* edit */
            iload 8 /* mergeMode */
            invokevirtual android.widget.Editor$UndoInputFilter.recordEdit:(Landroid/widget/Editor$EditOperation;I)V
        15: .line 6460
            return
        end local 11 // android.widget.Editor$EditOperation edit
        end local 10 // java.lang.String oldText
        end local 9 // java.lang.String newText
        end local 8 // int mergeMode
        end local 7 // boolean shouldCreateSeparateState
        end local 6 // int dend
        end local 5 // int dstart
        end local 4 // android.text.Spanned dest
        end local 3 // int end
        end local 2 // int start
        end local 1 // java.lang.CharSequence source
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   16     0                       this  Landroid/widget/Editor$UndoInputFilter;
            0   16     1                     source  Ljava/lang/CharSequence;
            0   16     2                      start  I
            0   16     3                        end  I
            0   16     4                       dest  Landroid/text/Spanned;
            0   16     5                     dstart  I
            0   16     6                       dend  I
            0   16     7  shouldCreateSeparateState  Z
            2    3     8                  mergeMode  I
            5    6     8                  mergeMode  I
            7   16     8                  mergeMode  I
            8   16     9                    newText  Ljava/lang/String;
            9   16    10                    oldText  Ljava/lang/String;
           12   16    11                       edit  Landroid/widget/Editor$EditOperation;
    MethodParameters:
                           Name  Flags
      source                     
      start                      
      end                        
      dest                       
      dstart                     
      dend                       
      shouldCreateSeparateState  

  private android.widget.Editor$EditOperation getLastEdit();
    descriptor: ()Landroid/widget/Editor$EditOperation;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // android.widget.Editor$UndoInputFilter this
         0: .line 6463
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoManager:Landroid/content/UndoManager;
            astore 1 /* um */
        start local 1 // android.content.UndoManager um
         1: .line 6464
            aload 1 /* um */
         2: .line 6465
            ldc Landroid/widget/Editor$EditOperation;
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoOwner:Landroid/content/UndoOwner;
            iconst_1
         3: .line 6464
            invokevirtual android.content.UndoManager.getLastOperation:(Ljava/lang/Class;Landroid/content/UndoOwner;I)Landroid/content/UndoOperation;
            checkcast android.widget.Editor$EditOperation
            areturn
        end local 1 // android.content.UndoManager um
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/widget/Editor$UndoInputFilter;
            1    4     1    um  Landroid/content/UndoManager;

  private void recordEdit(android.widget.Editor$EditOperation, int);
    descriptor: (Landroid/widget/Editor$EditOperation;I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // android.widget.Editor$UndoInputFilter this
        start local 1 // android.widget.Editor$EditOperation edit
        start local 2 // int mergeMode
         0: .line 6473
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoManager:Landroid/content/UndoManager;
            astore 3 /* um */
        start local 3 // android.content.UndoManager um
         1: .line 6474
            aload 3 /* um */
            ldc "Edit text"
            invokevirtual android.content.UndoManager.beginUpdate:(Ljava/lang/CharSequence;)V
         2: .line 6475
            aload 0 /* this */
            invokevirtual android.widget.Editor$UndoInputFilter.getLastEdit:()Landroid/widget/Editor$EditOperation;
            astore 4 /* lastEdit */
        start local 4 // android.widget.Editor$EditOperation lastEdit
         3: .line 6476
            aload 4 /* lastEdit */
            ifnonnull 6
         4: .line 6479
            aload 3 /* um */
            aload 1 /* edit */
            iconst_0
            invokevirtual android.content.UndoManager.addOperation:(Landroid/content/UndoOperation;I)V
         5: .line 6480
            goto 17
      StackMap locals: android.content.UndoManager android.widget.Editor$EditOperation
      StackMap stack:
         6: iload 2 /* mergeMode */
            ifne 9
         7: .line 6484
            aload 4 /* lastEdit */
            aload 1 /* edit */
            invokevirtual android.widget.Editor$EditOperation.forceMergeWith:(Landroid/widget/Editor$EditOperation;)V
         8: .line 6485
            goto 17
      StackMap locals:
      StackMap stack:
         9: aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mIsUserEdit:Z
            ifne 13
        10: .line 6489
            aload 3 /* um */
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoOwner:Landroid/content/UndoOwner;
            invokevirtual android.content.UndoManager.commitState:(Landroid/content/UndoOwner;)I
            pop
        11: .line 6490
            aload 3 /* um */
            aload 1 /* edit */
            iconst_0
            invokevirtual android.content.UndoManager.addOperation:(Landroid/content/UndoOperation;I)V
        12: .line 6491
            goto 17
      StackMap locals:
      StackMap stack:
        13: iload 2 /* mergeMode */
            iconst_2
            if_icmpne 15
            aload 4 /* lastEdit */
            aload 1 /* edit */
            invokevirtual android.widget.Editor$EditOperation.mergeWith:(Landroid/widget/Editor$EditOperation;)Z
            ifeq 15
        14: .line 6494
            goto 17
        15: .line 6497
      StackMap locals:
      StackMap stack:
            aload 3 /* um */
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoOwner:Landroid/content/UndoOwner;
            invokevirtual android.content.UndoManager.commitState:(Landroid/content/UndoOwner;)I
            pop
        16: .line 6498
            aload 3 /* um */
            aload 1 /* edit */
            iconst_0
            invokevirtual android.content.UndoManager.addOperation:(Landroid/content/UndoOperation;I)V
        17: .line 6500
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mIsUserEdit:Z
            putfield android.widget.Editor$UndoInputFilter.mPreviousOperationWasInSameBatchEdit:Z
        18: .line 6501
            aload 3 /* um */
            invokevirtual android.content.UndoManager.endUpdate:()V
        19: .line 6502
            return
        end local 4 // android.widget.Editor$EditOperation lastEdit
        end local 3 // android.content.UndoManager um
        end local 2 // int mergeMode
        end local 1 // android.widget.Editor$EditOperation edit
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       this  Landroid/widget/Editor$UndoInputFilter;
            0   20     1       edit  Landroid/widget/Editor$EditOperation;
            0   20     2  mergeMode  I
            1   20     3         um  Landroid/content/UndoManager;
            3   20     4   lastEdit  Landroid/widget/Editor$EditOperation;
    MethodParameters:
           Name  Flags
      edit       
      mergeMode  

  private boolean canUndoEdit(java.lang.CharSequence, int, int, android.text.Spanned, int, int);
    descriptor: (Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=7
        start local 0 // android.widget.Editor$UndoInputFilter this
        start local 1 // java.lang.CharSequence source
        start local 2 // int start
        start local 3 // int end
        start local 4 // android.text.Spanned dest
        start local 5 // int dstart
        start local 6 // int dend
         0: .line 6506
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mAllowUndo:Z
            ifne 2
         1: .line 6508
            iconst_0
            ireturn
         2: .line 6511
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mUndoManager:Landroid/content/UndoManager;
            invokevirtual android.content.UndoManager.isInUndo:()Z
            ifeq 4
         3: .line 6513
            iconst_0
            ireturn
         4: .line 6519
      StackMap locals:
      StackMap stack:
            aload 1 /* source */
            iload 2 /* start */
            iload 3 /* end */
            invokestatic android.widget.Editor.isValidRange:(Ljava/lang/CharSequence;II)Z
            ifeq 5
            aload 4 /* dest */
            iload 5 /* dstart */
            iload 6 /* dend */
            invokestatic android.widget.Editor.isValidRange:(Ljava/lang/CharSequence;II)Z
            ifne 6
         5: .line 6521
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         6: .line 6526
      StackMap locals:
      StackMap stack:
            iload 2 /* start */
            iload 3 /* end */
            if_icmpne 8
            iload 5 /* dstart */
            iload 6 /* dend */
            if_icmpne 8
         7: .line 6528
            iconst_0
            ireturn
         8: .line 6531
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 6 // int dend
        end local 5 // int dstart
        end local 4 // android.text.Spanned dest
        end local 3 // int end
        end local 2 // int start
        end local 1 // java.lang.CharSequence source
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Landroid/widget/Editor$UndoInputFilter;
            0    9     1  source  Ljava/lang/CharSequence;
            0    9     2   start  I
            0    9     3     end  I
            0    9     4    dest  Landroid/text/Spanned;
            0    9     5  dstart  I
            0    9     6    dend  I
    MethodParameters:
        Name  Flags
      source  
      start   
      end     
      dest    
      dstart  
      dend    

  private static boolean isComposition(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // java.lang.CharSequence source
         0: .line 6535
            aload 0 /* source */
            instanceof android.text.Spannable
            ifne 2
         1: .line 6536
            iconst_0
            ireturn
         2: .line 6539
      StackMap locals:
      StackMap stack:
            aload 0 /* source */
            checkcast android.text.Spannable
            astore 1 /* text */
        start local 1 // android.text.Spannable text
         3: .line 6540
            aload 1 /* text */
            invokestatic com.android.internal.widget.EditableInputConnection.getComposingSpanStart:(Landroid/text/Spannable;)I
            istore 2 /* composeBegin */
        start local 2 // int composeBegin
         4: .line 6541
            aload 1 /* text */
            invokestatic com.android.internal.widget.EditableInputConnection.getComposingSpanEnd:(Landroid/text/Spannable;)I
            istore 3 /* composeEnd */
        start local 3 // int composeEnd
         5: .line 6542
            iload 2 /* composeBegin */
            iload 3 /* composeEnd */
            if_icmpge 6
            iconst_1
            ireturn
      StackMap locals: android.text.Spannable int int
      StackMap stack:
         6: iconst_0
            ireturn
        end local 3 // int composeEnd
        end local 2 // int composeBegin
        end local 1 // android.text.Spannable text
        end local 0 // java.lang.CharSequence source
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0        source  Ljava/lang/CharSequence;
            3    7     1          text  Landroid/text/Spannable;
            4    7     2  composeBegin  I
            5    7     3    composeEnd  I
    MethodParameters:
        Name  Flags
      source  

  private boolean isInTextWatcher();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.widget.Editor$UndoInputFilter this
         0: .line 6546
            aload 0 /* this */
            getfield android.widget.Editor$UndoInputFilter.mEditor:Landroid/widget/Editor;
            getfield android.widget.Editor.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            astore 1 /* text */
        start local 1 // java.lang.CharSequence text
         1: .line 6547
            aload 1 /* text */
            instanceof android.text.SpannableStringBuilder
            ifeq 4
         2: .line 6548
            aload 1 /* text */
            checkcast android.text.SpannableStringBuilder
            invokevirtual android.text.SpannableStringBuilder.getTextWatcherDepth:()I
         3: .line 6547
            ifle 4
            iconst_1
            ireturn
      StackMap locals: java.lang.CharSequence
      StackMap stack:
         4: iconst_0
            ireturn
        end local 1 // java.lang.CharSequence text
        end local 0 // android.widget.Editor$UndoInputFilter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/widget/Editor$UndoInputFilter;
            1    5     1  text  Ljava/lang/CharSequence;
}
SourceFile: "Editor.java"
NestHost: android.widget.Editor
InnerClasses:
  public EditOperation = android.widget.Editor$EditOperation of android.widget.Editor
  public UndoInputFilter = android.widget.Editor$UndoInputFilter of android.widget.Editor
  private abstract MergeMode = android.widget.Editor$UndoInputFilter$MergeMode of android.widget.Editor$UndoInputFilter