public class android.widget.SpellChecker implements android.view.textservice.SpellCheckerSession$SpellCheckerSessionListener
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.widget.SpellChecker
  super_class: java.lang.Object
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final boolean DBG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int MAX_NUMBER_OF_WORDS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 50

  public static final int AVERAGE_WORD_LENGTH;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 7

  public static final int WORD_ITERATOR_INTERVAL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 350

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

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

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

  private final android.widget.TextView mTextView;
    descriptor: Landroid/widget/TextView;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  android.view.textservice.SpellCheckerSession mSpellCheckerSession;
    descriptor: Landroid/view/textservice/SpellCheckerSession;
    flags: (0x0000) 

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

  final int mCookie;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  private int[] mIds;
    descriptor: [I
    flags: (0x0002) ACC_PRIVATE

  private android.text.style.SpellCheckSpan[] mSpellCheckSpans;
    descriptor: [Landroid/text/style/SpellCheckSpan;
    flags: (0x0002) ACC_PRIVATE

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

  private android.widget.SpellChecker$SpellParser[] mSpellParsers;
    descriptor: [Landroid/widget/SpellChecker$SpellParser;
    flags: (0x0002) ACC_PRIVATE

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

  private java.util.Locale mCurrentLocale;
    descriptor: Ljava/util/Locale;
    flags: (0x0002) ACC_PRIVATE

  private android.text.method.WordIterator mWordIterator;
    descriptor: Landroid/text/method/WordIterator;
    flags: (0x0002) ACC_PRIVATE

  private android.view.textservice.TextServicesManager mTextServicesManager;
    descriptor: Landroid/view/textservice/TextServicesManager;
    flags: (0x0002) ACC_PRIVATE

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

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

  private final android.util.LruCache<java.lang.Long, android.text.style.SuggestionSpan> mSuggestionSpanCache;
    descriptor: Landroid/util/LruCache;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Landroid/util/LruCache<Ljava/lang/Long;Landroid/text/style/SuggestionSpan;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 49
            ldc Landroid/widget/SpellChecker;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            putstatic android.widget.SpellChecker.TAG:Ljava/lang/String;
         1: .line 100
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(android.widget.TextView);
    descriptor: (Landroid/widget/TextView;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.widget.SpellChecker this
        start local 1 // android.widget.TextView textView
         0: .line 104
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 86
            aload 0 /* this */
            iconst_0
            anewarray android.widget.SpellChecker$SpellParser
            putfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
         2: .line 88
            aload 0 /* this */
            iconst_0
            putfield android.widget.SpellChecker.mSpanSequenceCounter:I
         3: .line 101
            aload 0 /* this */
         4: .line 102
            new android.util.LruCache
            dup
            bipush 10
            invokespecial android.util.LruCache.<init>:(I)V
            putfield android.widget.SpellChecker.mSuggestionSpanCache:Landroid/util/LruCache;
         5: .line 105
            aload 0 /* this */
            aload 1 /* textView */
            putfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
         6: .line 109
            aload 0 /* this */
            iconst_1
            invokestatic com.android.internal.util.ArrayUtils.newUnpaddedIntArray:(I)[I
            putfield android.widget.SpellChecker.mIds:[I
         7: .line 110
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            arraylength
            anewarray android.text.style.SpellCheckSpan
            putfield android.widget.SpellChecker.mSpellCheckSpans:[Landroid/text/style/SpellCheckSpan;
         8: .line 112
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSpellCheckerLocale:()Ljava/util/Locale;
            invokevirtual android.widget.SpellChecker.setLocale:(Ljava/util/Locale;)V
         9: .line 114
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual java.lang.Object.hashCode:()I
            putfield android.widget.SpellChecker.mCookie:I
        10: .line 115
            return
        end local 1 // android.widget.TextView textView
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Landroid/widget/SpellChecker;
            0   11     1  textView  Landroid/widget/TextView;
    MethodParameters:
          Name  Flags
      textView  

  private void resetSession();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // android.widget.SpellChecker this
         0: .line 118
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.closeSession:()V
         1: .line 120
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
         2: .line 121
            ldc "textservices"
            invokevirtual android.content.Context.getSystemService:(Ljava/lang/String;)Ljava/lang/Object;
            checkcast android.view.textservice.TextServicesManager
         3: .line 120
            putfield android.widget.SpellChecker.mTextServicesManager:Landroid/view/textservice/TextServicesManager;
         4: .line 122
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextServicesManager:Landroid/view/textservice/TextServicesManager;
            invokevirtual android.view.textservice.TextServicesManager.isSpellCheckerEnabled:()Z
            ifeq 7
         5: .line 123
            aload 0 /* this */
            getfield android.widget.SpellChecker.mCurrentLocale:Ljava/util/Locale;
            ifnull 7
         6: .line 124
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextServicesManager:Landroid/view/textservice/TextServicesManager;
            iconst_1
            invokevirtual android.view.textservice.TextServicesManager.getCurrentSpellCheckerSubtype:(Z)Landroid/view/textservice/SpellCheckerSubtype;
            ifnonnull 9
         7: .line 125
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
         8: .line 126
            goto 15
         9: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextServicesManager:Landroid/view/textservice/TextServicesManager;
        10: .line 128
            aconst_null
        11: .line 129
            aload 0 /* this */
            getfield android.widget.SpellChecker.mCurrentLocale:Ljava/util/Locale;
            aload 0 /* this */
        12: .line 130
            iconst_0
        13: .line 127
            invokevirtual android.view.textservice.TextServicesManager.newSpellCheckerSession:(Landroid/os/Bundle;Ljava/util/Locale;Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListener;Z)Landroid/view/textservice/SpellCheckerSession;
            putfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
        14: .line 131
            aload 0 /* this */
            iconst_1
            putfield android.widget.SpellChecker.mIsSentenceSpellCheckSupported:Z
        15: .line 135
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 1 /* i */
        start local 1 // int i
        16: goto 19
        17: .line 136
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            iload 1 /* i */
            iconst_m1
            iastore
        18: .line 135
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 1 /* i */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            if_icmplt 17
        end local 1 // int i
        20: .line 138
            aload 0 /* this */
            iconst_0
            putfield android.widget.SpellChecker.mLength:I
        21: .line 141
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Editable
            invokevirtual android.widget.TextView.removeMisspelledSpans:(Landroid/text/Spannable;)V
        22: .line 142
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSuggestionSpanCache:Landroid/util/LruCache;
            invokevirtual android.util.LruCache.evictAll:()V
        23: .line 143
            return
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   24     0  this  Landroid/widget/SpellChecker;
           16   20     1     i  I

  private void setLocale(java.util.Locale);
    descriptor: (Ljava/util/Locale;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.widget.SpellChecker this
        start local 1 // java.util.Locale locale
         0: .line 146
            aload 0 /* this */
            aload 1 /* locale */
            putfield android.widget.SpellChecker.mCurrentLocale:Ljava/util/Locale;
         1: .line 148
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.resetSession:()V
         2: .line 150
            aload 1 /* locale */
            ifnull 4
         3: .line 152
            aload 0 /* this */
            new android.text.method.WordIterator
            dup
            aload 1 /* locale */
            invokespecial android.text.method.WordIterator.<init>:(Ljava/util/Locale;)V
            putfield android.widget.SpellChecker.mWordIterator:Landroid/text/method/WordIterator;
         4: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.onLocaleChanged:()V
         5: .line 157
            return
        end local 1 // java.util.Locale locale
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Landroid/widget/SpellChecker;
            0    6     1  locale  Ljava/util/Locale;
    MethodParameters:
        Name  Flags
      locale  

  private boolean isSessionActive();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.SpellChecker this
         0: .line 164
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/widget/SpellChecker;

  public void closeSession();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // android.widget.SpellChecker this
         0: .line 168
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
            ifnull 2
         1: .line 169
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
            invokevirtual android.view.textservice.SpellCheckerSession.close:()V
         2: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
            arraylength
            istore 1 /* length */
        start local 1 // int length
         3: .line 173
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 7
         5: .line 174
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
            iload 2 /* i */
            aaload
            invokevirtual android.widget.SpellChecker$SpellParser.stop:()V
         6: .line 173
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            iload 1 /* length */
            if_icmplt 5
        end local 2 // int i
         8: .line 177
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellRunnable:Ljava/lang/Runnable;
            ifnull 10
         9: .line 178
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellRunnable:Ljava/lang/Runnable;
            invokevirtual android.widget.TextView.removeCallbacks:(Ljava/lang/Runnable;)Z
            pop
        10: .line 180
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int length
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   11     0    this  Landroid/widget/SpellChecker;
            3   11     1  length  I
            4    8     2       i  I

  private int nextSpellCheckSpanIndex();
    descriptor: ()I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=1
        start local 0 // android.widget.SpellChecker this
         0: .line 183
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 4
         2: .line 184
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            iload 1 /* i */
            iaload
            ifge 3
            iload 1 /* i */
            ireturn
         3: .line 183
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
         4: iload 1 /* i */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            if_icmplt 2
        end local 1 // int i
         5: .line 187
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            iconst_0
            invokestatic com.android.internal.util.GrowingArrayUtils.append:([III)[I
            putfield android.widget.SpellChecker.mIds:[I
         6: .line 188
            aload 0 /* this */
         7: .line 189
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckSpans:[Landroid/text/style/SpellCheckSpan;
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            new android.text.style.SpellCheckSpan
            dup
            invokespecial android.text.style.SpellCheckSpan.<init>:()V
         8: .line 188
            invokestatic com.android.internal.util.GrowingArrayUtils.append:([Ljava/lang/Object;ILjava/lang/Object;)[Ljava/lang/Object;
            checkcast android.text.style.SpellCheckSpan[]
            putfield android.widget.SpellChecker.mSpellCheckSpans:[Landroid/text/style/SpellCheckSpan;
         9: .line 190
            aload 0 /* this */
            dup
            getfield android.widget.SpellChecker.mLength:I
            iconst_1
            iadd
            putfield android.widget.SpellChecker.mLength:I
        10: .line 191
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            iconst_1
            isub
            ireturn
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Landroid/widget/SpellChecker;
            1    5     1     i  I

  private void addSpellCheckSpan(android.text.Editable, int, int);
    descriptor: (Landroid/text/Editable;II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=6, args_size=4
        start local 0 // android.widget.SpellChecker this
        start local 1 // android.text.Editable editable
        start local 2 // int start
        start local 3 // int end
         0: .line 195
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.nextSpellCheckSpanIndex:()I
            istore 4 /* index */
        start local 4 // int index
         1: .line 196
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckSpans:[Landroid/text/style/SpellCheckSpan;
            iload 4 /* index */
            aaload
            astore 5 /* spellCheckSpan */
        start local 5 // android.text.style.SpellCheckSpan spellCheckSpan
         2: .line 197
            aload 1 /* editable */
            aload 5 /* spellCheckSpan */
            iload 2 /* start */
            iload 3 /* end */
            bipush 33
            invokeinterface android.text.Editable.setSpan:(Ljava/lang/Object;III)V
         3: .line 198
            aload 5 /* spellCheckSpan */
            iconst_0
            invokevirtual android.text.style.SpellCheckSpan.setSpellCheckInProgress:(Z)V
         4: .line 199
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            iload 4 /* index */
            aload 0 /* this */
            dup
            getfield android.widget.SpellChecker.mSpanSequenceCounter:I
            dup_x1
            iconst_1
            iadd
            putfield android.widget.SpellChecker.mSpanSequenceCounter:I
            iastore
         5: .line 200
            return
        end local 5 // android.text.style.SpellCheckSpan spellCheckSpan
        end local 4 // int index
        end local 3 // int end
        end local 2 // int start
        end local 1 // android.text.Editable editable
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    6     0            this  Landroid/widget/SpellChecker;
            0    6     1        editable  Landroid/text/Editable;
            0    6     2           start  I
            0    6     3             end  I
            1    6     4           index  I
            2    6     5  spellCheckSpan  Landroid/text/style/SpellCheckSpan;
    MethodParameters:
          Name  Flags
      editable  
      start     
      end       

  public void onSpellCheckSpanRemoved(android.text.style.SpellCheckSpan);
    descriptor: (Landroid/text/style/SpellCheckSpan;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.widget.SpellChecker this
        start local 1 // android.text.style.SpellCheckSpan spellCheckSpan
         0: .line 204
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         1: goto 6
         2: .line 205
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckSpans:[Landroid/text/style/SpellCheckSpan;
            iload 2 /* i */
            aaload
            aload 1 /* spellCheckSpan */
            if_acmpne 5
         3: .line 206
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            iload 2 /* i */
            iconst_m1
            iastore
         4: .line 207
            return
         5: .line 204
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 2 /* i */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            if_icmplt 2
        end local 2 // int i
         7: .line 210
            return
        end local 1 // android.text.style.SpellCheckSpan spellCheckSpan
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Landroid/widget/SpellChecker;
            0    8     1  spellCheckSpan  Landroid/text/style/SpellCheckSpan;
            1    7     2               i  I
    MethodParameters:
                Name  Flags
      spellCheckSpan  

  public void onSelectionChanged();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.SpellChecker this
         0: .line 213
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.spellCheck:()V
         1: .line 214
            return
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/widget/SpellChecker;

  public void spellCheck(int, int);
    descriptor: (II)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // android.widget.SpellChecker this
        start local 1 // int start
        start local 2 // int end
         0: .line 220
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getSpellCheckerLocale:()Ljava/util/Locale;
            astore 3 /* locale */
        start local 3 // java.util.Locale locale
         1: .line 221
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.isSessionActive:()Z
            istore 4 /* isSessionActive */
        start local 4 // boolean isSessionActive
         2: .line 222
            aload 3 /* locale */
            ifnull 3
            aload 0 /* this */
            getfield android.widget.SpellChecker.mCurrentLocale:Ljava/util/Locale;
            ifnull 3
            aload 0 /* this */
            getfield android.widget.SpellChecker.mCurrentLocale:Ljava/util/Locale;
            aload 3 /* locale */
            invokevirtual java.util.Locale.equals:(Ljava/lang/Object;)Z
            ifne 7
         3: .line 223
      StackMap locals: java.util.Locale int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* locale */
            invokevirtual android.widget.SpellChecker.setLocale:(Ljava/util/Locale;)V
         4: .line 225
            iconst_0
            istore 1 /* start */
         5: .line 226
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            invokeinterface java.lang.CharSequence.length:()I
            istore 2 /* end */
         6: .line 227
            goto 10
         7: .line 228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextServicesManager:Landroid/view/textservice/TextServicesManager;
            invokevirtual android.view.textservice.TextServicesManager.isSpellCheckerEnabled:()Z
            istore 5 /* spellCheckerActivated */
        start local 5 // boolean spellCheckerActivated
         8: .line 229
            iload 4 /* isSessionActive */
            iload 5 /* spellCheckerActivated */
            if_icmpeq 10
         9: .line 231
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.resetSession:()V
        end local 5 // boolean spellCheckerActivated
        10: .line 235
      StackMap locals:
      StackMap stack:
            iload 4 /* isSessionActive */
            ifne 11
            return
        11: .line 238
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
            arraylength
            istore 5 /* length */
        start local 5 // int length
        12: .line 239
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        13: goto 19
        14: .line 240
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
            iload 6 /* i */
            aaload
            astore 7 /* spellParser */
        start local 7 // android.widget.SpellChecker$SpellParser spellParser
        15: .line 241
            aload 7 /* spellParser */
            invokevirtual android.widget.SpellChecker$SpellParser.isFinished:()Z
            ifeq 18
        16: .line 242
            aload 7 /* spellParser */
            iload 1 /* start */
            iload 2 /* end */
            invokevirtual android.widget.SpellChecker$SpellParser.parse:(II)V
        17: .line 243
            return
        end local 7 // android.widget.SpellChecker$SpellParser spellParser
        18: .line 239
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 6 /* i */
            iload 5 /* length */
            if_icmplt 14
        end local 6 // int i
        20: .line 251
            iload 5 /* length */
            iconst_1
            iadd
            anewarray android.widget.SpellChecker$SpellParser
            astore 6 /* newSpellParsers */
        start local 6 // android.widget.SpellChecker$SpellParser[] newSpellParsers
        21: .line 252
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
            iconst_0
            aload 6 /* newSpellParsers */
            iconst_0
            iload 5 /* length */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        22: .line 253
            aload 0 /* this */
            aload 6 /* newSpellParsers */
            putfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
        23: .line 255
            new android.widget.SpellChecker$SpellParser
            dup
            aload 0 /* this */
            invokespecial android.widget.SpellChecker$SpellParser.<init>:(Landroid/widget/SpellChecker;)V
            astore 7 /* spellParser */
        start local 7 // android.widget.SpellChecker$SpellParser spellParser
        24: .line 256
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellParsers:[Landroid/widget/SpellChecker$SpellParser;
            iload 5 /* length */
            aload 7 /* spellParser */
            aastore
        25: .line 257
            aload 7 /* spellParser */
            iload 1 /* start */
            iload 2 /* end */
            invokevirtual android.widget.SpellChecker$SpellParser.parse:(II)V
        26: .line 258
            return
        end local 7 // android.widget.SpellChecker$SpellParser spellParser
        end local 6 // android.widget.SpellChecker$SpellParser[] newSpellParsers
        end local 5 // int length
        end local 4 // boolean isSessionActive
        end local 3 // java.util.Locale locale
        end local 2 // int end
        end local 1 // int start
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   27     0                   this  Landroid/widget/SpellChecker;
            0   27     1                  start  I
            0   27     2                    end  I
            1   27     3                 locale  Ljava/util/Locale;
            2   27     4        isSessionActive  Z
            8   10     5  spellCheckerActivated  Z
           12   27     5                 length  I
           13   20     6                      i  I
           15   18     7            spellParser  Landroid/widget/SpellChecker$SpellParser;
           21   27     6        newSpellParsers  [Landroid/widget/SpellChecker$SpellParser;
           24   27     7            spellParser  Landroid/widget/SpellChecker$SpellParser;
    MethodParameters:
       Name  Flags
      start  
      end    

  private void spellCheck();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=12, args_size=1
        start local 0 // android.widget.SpellChecker this
         0: .line 261
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
            ifnonnull 1
            return
         1: .line 263
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Editable
            astore 1 /* editable */
        start local 1 // android.text.Editable editable
         2: .line 264
            aload 1 /* editable */
            invokestatic android.text.Selection.getSelectionStart:(Ljava/lang/CharSequence;)I
            istore 2 /* selectionStart */
        start local 2 // int selectionStart
         3: .line 265
            aload 1 /* editable */
            invokestatic android.text.Selection.getSelectionEnd:(Ljava/lang/CharSequence;)I
            istore 3 /* selectionEnd */
        start local 3 // int selectionEnd
         4: .line 267
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            anewarray android.view.textservice.TextInfo
            astore 4 /* textInfos */
        start local 4 // android.view.textservice.TextInfo[] textInfos
         5: .line 268
            iconst_0
            istore 5 /* textInfosCount */
        start local 5 // int textInfosCount
         6: .line 270
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         7: goto 31
         8: .line 271
      StackMap locals: android.widget.SpellChecker android.text.Editable int int android.view.textservice.TextInfo[] int int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckSpans:[Landroid/text/style/SpellCheckSpan;
            iload 6 /* i */
            aaload
            astore 7 /* spellCheckSpan */
        start local 7 // android.text.style.SpellCheckSpan spellCheckSpan
         9: .line 272
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            iload 6 /* i */
            iaload
            iflt 30
            aload 7 /* spellCheckSpan */
            invokevirtual android.text.style.SpellCheckSpan.isSpellCheckInProgress:()Z
            ifeq 10
            goto 30
        10: .line 274
      StackMap locals: android.text.style.SpellCheckSpan
      StackMap stack:
            aload 1 /* editable */
            aload 7 /* spellCheckSpan */
            invokeinterface android.text.Editable.getSpanStart:(Ljava/lang/Object;)I
            istore 8 /* start */
        start local 8 // int start
        11: .line 275
            aload 1 /* editable */
            aload 7 /* spellCheckSpan */
            invokeinterface android.text.Editable.getSpanEnd:(Ljava/lang/Object;)I
            istore 9 /* end */
        start local 9 // int end
        12: .line 282
            iload 2 /* selectionStart */
            iload 9 /* end */
            iconst_1
            iadd
            if_icmpne 18
        13: .line 284
            aload 0 /* this */
            getfield android.widget.SpellChecker.mCurrentLocale:Ljava/util/Locale;
            aload 1 /* editable */
            iload 9 /* end */
            iconst_1
            iadd
            invokestatic java.lang.Character.codePointBefore:(Ljava/lang/CharSequence;I)I
        14: .line 283
            invokestatic android.text.method.WordIterator.isMidWordPunctuation:(Ljava/util/Locale;I)Z
        15: .line 284
            ifeq 18
        16: .line 285
            iconst_0
            istore 10 /* isEditing */
        start local 10 // boolean isEditing
        17: .line 286
            goto 26
        end local 10 // boolean isEditing
      StackMap locals: int int
      StackMap stack:
        18: aload 0 /* this */
            getfield android.widget.SpellChecker.mIsSentenceSpellCheckSupported:Z
            ifeq 23
        19: .line 290
            iload 3 /* selectionEnd */
            iload 8 /* start */
            if_icmple 20
            iload 2 /* selectionStart */
            iload 9 /* end */
            if_icmpgt 20
            iconst_0
            goto 21
      StackMap locals:
      StackMap stack:
        20: iconst_1
      StackMap locals:
      StackMap stack: int
        21: istore 10 /* isEditing */
        start local 10 // boolean isEditing
        22: .line 291
            goto 26
        end local 10 // boolean isEditing
        23: .line 292
      StackMap locals:
      StackMap stack:
            iload 3 /* selectionEnd */
            iload 8 /* start */
            if_icmplt 24
            iload 2 /* selectionStart */
            iload 9 /* end */
            if_icmpgt 24
            iconst_0
            goto 25
      StackMap locals:
      StackMap stack:
        24: iconst_1
      StackMap locals:
      StackMap stack: int
        25: istore 10 /* isEditing */
        start local 10 // boolean isEditing
        26: .line 294
      StackMap locals: int
      StackMap stack:
            iload 8 /* start */
            iflt 30
            iload 9 /* end */
            iload 8 /* start */
            if_icmple 30
            iload 10 /* isEditing */
            ifeq 30
        27: .line 295
            aload 7 /* spellCheckSpan */
            iconst_1
            invokevirtual android.text.style.SpellCheckSpan.setSpellCheckInProgress:(Z)V
        28: .line 296
            new android.view.textservice.TextInfo
            dup
            aload 1 /* editable */
            iload 8 /* start */
            iload 9 /* end */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mCookie:I
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            iload 6 /* i */
            iaload
            invokespecial android.view.textservice.TextInfo.<init>:(Ljava/lang/CharSequence;IIII)V
            astore 11 /* textInfo */
        start local 11 // android.view.textservice.TextInfo textInfo
        29: .line 297
            aload 4 /* textInfos */
            iload 5 /* textInfosCount */
            iinc 5 /* textInfosCount */ 1
            aload 11 /* textInfo */
            aastore
        end local 11 // android.view.textservice.TextInfo textInfo
        end local 10 // boolean isEditing
        end local 9 // int end
        end local 8 // int start
        end local 7 // android.text.style.SpellCheckSpan spellCheckSpan
        30: .line 270
      StackMap locals: android.widget.SpellChecker android.text.Editable int int android.view.textservice.TextInfo[] int int
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        31: iload 6 /* i */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            if_icmplt 8
        end local 6 // int i
        32: .line 307
            iload 5 /* textInfosCount */
            ifle 45
        33: .line 308
            iload 5 /* textInfosCount */
            aload 4 /* textInfos */
            arraylength
            if_icmpge 37
        34: .line 309
            iload 5 /* textInfosCount */
            anewarray android.view.textservice.TextInfo
            astore 6 /* textInfosCopy */
        start local 6 // android.view.textservice.TextInfo[] textInfosCopy
        35: .line 310
            aload 4 /* textInfos */
            iconst_0
            aload 6 /* textInfosCopy */
            iconst_0
            iload 5 /* textInfosCount */
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        36: .line 311
            aload 6 /* textInfosCopy */
            astore 4 /* textInfos */
        end local 6 // android.view.textservice.TextInfo[] textInfosCopy
        37: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIsSentenceSpellCheckSupported:Z
            ifeq 42
        38: .line 315
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
        39: .line 316
            aload 4 /* textInfos */
            iconst_5
        40: .line 315
            invokevirtual android.view.textservice.SpellCheckerSession.getSentenceSuggestions:([Landroid/view/textservice/TextInfo;I)V
        41: .line 317
            goto 45
        42: .line 318
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckerSession:Landroid/view/textservice/SpellCheckerSession;
            aload 4 /* textInfos */
            iconst_5
        43: .line 319
            iconst_0
        44: .line 318
            invokevirtual android.view.textservice.SpellCheckerSession.getSuggestions:([Landroid/view/textservice/TextInfo;IZ)V
        45: .line 322
      StackMap locals:
      StackMap stack:
            return
        end local 5 // int textInfosCount
        end local 4 // android.view.textservice.TextInfo[] textInfos
        end local 3 // int selectionEnd
        end local 2 // int selectionStart
        end local 1 // android.text.Editable editable
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   46     0            this  Landroid/widget/SpellChecker;
            2   46     1        editable  Landroid/text/Editable;
            3   46     2  selectionStart  I
            4   46     3    selectionEnd  I
            5   46     4       textInfos  [Landroid/view/textservice/TextInfo;
            6   46     5  textInfosCount  I
            7   32     6               i  I
            9   30     7  spellCheckSpan  Landroid/text/style/SpellCheckSpan;
           11   30     8           start  I
           12   30     9             end  I
           17   18    10       isEditing  Z
           22   23    10       isEditing  Z
           26   30    10       isEditing  Z
           29   30    11        textInfo  Landroid/view/textservice/TextInfo;
           35   37     6   textInfosCopy  [Landroid/view/textservice/TextInfo;

  private android.text.style.SpellCheckSpan onGetSuggestionsInternal(android.view.textservice.SuggestionsInfo, int, int);
    descriptor: (Landroid/view/textservice/SuggestionsInfo;II)Landroid/text/style/SpellCheckSpan;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=17, args_size=4
        start local 0 // android.widget.SpellChecker this
        start local 1 // android.view.textservice.SuggestionsInfo suggestionsInfo
        start local 2 // int offset
        start local 3 // int length
         0: .line 326
            aload 1 /* suggestionsInfo */
            ifnull 1
            aload 1 /* suggestionsInfo */
            invokevirtual android.view.textservice.SuggestionsInfo.getCookie:()I
            aload 0 /* this */
            getfield android.widget.SpellChecker.mCookie:I
            if_icmpeq 2
         1: .line 327
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 329
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Editable
            astore 4 /* editable */
        start local 4 // android.text.Editable editable
         3: .line 330
            aload 1 /* suggestionsInfo */
            invokevirtual android.view.textservice.SuggestionsInfo.getSequence:()I
            istore 5 /* sequenceNumber */
        start local 5 // int sequenceNumber
         4: .line 331
            iconst_0
            istore 6 /* k */
        start local 6 // int k
         5: goto 38
         6: .line 332
      StackMap locals: android.text.Editable int int
      StackMap stack:
            iload 5 /* sequenceNumber */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIds:[I
            iload 6 /* k */
            iaload
            if_icmpne 37
         7: .line 333
            aload 1 /* suggestionsInfo */
            invokevirtual android.view.textservice.SuggestionsInfo.getSuggestionsAttributes:()I
            istore 7 /* attributes */
        start local 7 // int attributes
         8: .line 335
            iload 7 /* attributes */
            iconst_1
            iand
            ifle 9
            iconst_1
            goto 10
      StackMap locals: int
      StackMap stack:
         9: iconst_0
        10: .line 334
      StackMap locals:
      StackMap stack: int
            istore 8 /* isInDictionary */
        start local 8 // boolean isInDictionary
        11: .line 337
            iload 7 /* attributes */
            iconst_2
            iand
            ifle 12
            iconst_1
            goto 13
      StackMap locals: int
      StackMap stack:
        12: iconst_0
        13: .line 336
      StackMap locals:
      StackMap stack: int
            istore 9 /* looksLikeTypo */
        start local 9 // boolean looksLikeTypo
        14: .line 339
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellCheckSpans:[Landroid/text/style/SpellCheckSpan;
            iload 6 /* k */
            aaload
            astore 10 /* spellCheckSpan */
        start local 10 // android.text.style.SpellCheckSpan spellCheckSpan
        15: .line 342
            iload 8 /* isInDictionary */
            ifne 20
            iload 9 /* looksLikeTypo */
            ifeq 20
        16: .line 343
            aload 0 /* this */
        17: .line 344
            aload 4 /* editable */
            aload 1 /* suggestionsInfo */
            aload 10 /* spellCheckSpan */
            iload 2 /* offset */
            iload 3 /* length */
        18: .line 343
            invokevirtual android.widget.SpellChecker.createMisspelledSuggestionSpan:(Landroid/text/Editable;Landroid/view/textservice/SuggestionsInfo;Landroid/text/style/SpellCheckSpan;II)V
        19: .line 345
            goto 36
        20: .line 347
      StackMap locals: int android.text.style.SpellCheckSpan
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIsSentenceSpellCheckSupported:Z
            ifeq 36
        21: .line 350
            aload 4 /* editable */
            aload 10 /* spellCheckSpan */
            invokeinterface android.text.Editable.getSpanStart:(Ljava/lang/Object;)I
            istore 11 /* spellCheckSpanStart */
        start local 11 // int spellCheckSpanStart
        22: .line 351
            aload 4 /* editable */
            aload 10 /* spellCheckSpan */
            invokeinterface android.text.Editable.getSpanEnd:(Ljava/lang/Object;)I
            istore 12 /* spellCheckSpanEnd */
        start local 12 // int spellCheckSpanEnd
        23: .line 354
            iload 2 /* offset */
            iconst_m1
            if_icmpeq 27
            iload 3 /* length */
            iconst_m1
            if_icmpeq 27
        24: .line 355
            iload 11 /* spellCheckSpanStart */
            iload 2 /* offset */
            iadd
            istore 13 /* start */
        start local 13 // int start
        25: .line 356
            iload 13 /* start */
            iload 3 /* length */
            iadd
            istore 14 /* end */
        start local 14 // int end
        26: .line 357
            goto 29
        end local 14 // int end
        end local 13 // int start
        27: .line 358
      StackMap locals: int int
      StackMap stack:
            iload 11 /* spellCheckSpanStart */
            istore 13 /* start */
        start local 13 // int start
        28: .line 359
            iload 12 /* spellCheckSpanEnd */
            istore 14 /* end */
        start local 14 // int end
        29: .line 361
      StackMap locals: int int
      StackMap stack:
            iload 11 /* spellCheckSpanStart */
            iflt 36
            iload 12 /* spellCheckSpanEnd */
            iload 11 /* spellCheckSpanStart */
            if_icmple 36
        30: .line 362
            iload 14 /* end */
            iload 13 /* start */
            if_icmple 36
        31: .line 363
            iload 13 /* start */
            iload 14 /* end */
            invokestatic android.text.TextUtils.packRangeInLong:(II)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            astore 15 /* key */
        start local 15 // java.lang.Long key
        32: .line 364
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSuggestionSpanCache:Landroid/util/LruCache;
            aload 15 /* key */
            invokevirtual android.util.LruCache.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.text.style.SuggestionSpan
            astore 16 /* tempSuggestionSpan */
        start local 16 // android.text.style.SuggestionSpan tempSuggestionSpan
        33: .line 365
            aload 16 /* tempSuggestionSpan */
            ifnull 36
        34: .line 370
            aload 4 /* editable */
            aload 16 /* tempSuggestionSpan */
            invokeinterface android.text.Editable.removeSpan:(Ljava/lang/Object;)V
        35: .line 371
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSuggestionSpanCache:Landroid/util/LruCache;
            aload 15 /* key */
            invokevirtual android.util.LruCache.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 16 // android.text.style.SuggestionSpan tempSuggestionSpan
        end local 15 // java.lang.Long key
        end local 14 // int end
        end local 13 // int start
        end local 12 // int spellCheckSpanEnd
        end local 11 // int spellCheckSpanStart
        36: .line 376
      StackMap locals: android.widget.SpellChecker android.view.textservice.SuggestionsInfo int int android.text.Editable int int int int int android.text.style.SpellCheckSpan
      StackMap stack:
            aload 10 /* spellCheckSpan */
            areturn
        end local 10 // android.text.style.SpellCheckSpan spellCheckSpan
        end local 9 // boolean looksLikeTypo
        end local 8 // boolean isInDictionary
        end local 7 // int attributes
        37: .line 331
      StackMap locals: android.widget.SpellChecker android.view.textservice.SuggestionsInfo int int android.text.Editable int int
      StackMap stack:
            iinc 6 /* k */ 1
      StackMap locals:
      StackMap stack:
        38: iload 6 /* k */
            aload 0 /* this */
            getfield android.widget.SpellChecker.mLength:I
            if_icmplt 6
        end local 6 // int k
        39: .line 379
            aconst_null
            areturn
        end local 5 // int sequenceNumber
        end local 4 // android.text.Editable editable
        end local 3 // int length
        end local 2 // int offset
        end local 1 // android.view.textservice.SuggestionsInfo suggestionsInfo
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   40     0                 this  Landroid/widget/SpellChecker;
            0   40     1      suggestionsInfo  Landroid/view/textservice/SuggestionsInfo;
            0   40     2               offset  I
            0   40     3               length  I
            3   40     4             editable  Landroid/text/Editable;
            4   40     5       sequenceNumber  I
            5   39     6                    k  I
            8   37     7           attributes  I
           11   37     8       isInDictionary  Z
           14   37     9        looksLikeTypo  Z
           15   37    10       spellCheckSpan  Landroid/text/style/SpellCheckSpan;
           22   36    11  spellCheckSpanStart  I
           23   36    12    spellCheckSpanEnd  I
           25   27    13                start  I
           28   36    13                start  I
           26   27    14                  end  I
           29   36    14                  end  I
           32   36    15                  key  Ljava/lang/Long;
           33   36    16   tempSuggestionSpan  Landroid/text/style/SuggestionSpan;
    MethodParameters:
                 Name  Flags
      suggestionsInfo  
      offset           
      length           

  public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]);
    descriptor: ([Landroid/view/textservice/SuggestionsInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // android.widget.SpellChecker this
        start local 1 // android.view.textservice.SuggestionsInfo[] results
         0: .line 384
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Editable
            astore 2 /* editable */
        start local 2 // android.text.Editable editable
         1: .line 385
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 8
         3: .line 387
      StackMap locals: android.text.Editable int
      StackMap stack:
            aload 0 /* this */
            aload 1 /* results */
            iload 3 /* i */
            aaload
            iconst_m1
            iconst_m1
            invokevirtual android.widget.SpellChecker.onGetSuggestionsInternal:(Landroid/view/textservice/SuggestionsInfo;II)Landroid/text/style/SpellCheckSpan;
         4: .line 386
            astore 4 /* spellCheckSpan */
        start local 4 // android.text.style.SpellCheckSpan spellCheckSpan
         5: .line 388
            aload 4 /* spellCheckSpan */
            ifnull 7
         6: .line 390
            aload 2 /* editable */
            aload 4 /* spellCheckSpan */
            invokeinterface android.text.Editable.removeSpan:(Ljava/lang/Object;)V
        end local 4 // android.text.style.SpellCheckSpan spellCheckSpan
         7: .line 385
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 3 /* i */
            aload 1 /* results */
            arraylength
            if_icmplt 3
        end local 3 // int i
         9: .line 393
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.scheduleNewSpellCheck:()V
        10: .line 394
            return
        end local 2 // android.text.Editable editable
        end local 1 // android.view.textservice.SuggestionsInfo[] results
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0            this  Landroid/widget/SpellChecker;
            0   11     1         results  [Landroid/view/textservice/SuggestionsInfo;
            1   11     2        editable  Landroid/text/Editable;
            2    9     3               i  I
            5    7     4  spellCheckSpan  Landroid/text/style/SpellCheckSpan;
    MethodParameters:
         Name  Flags
      results  

  public void onGetSentenceSuggestions(android.view.textservice.SentenceSuggestionsInfo[]);
    descriptor: ([Landroid/view/textservice/SentenceSuggestionsInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=11, args_size=2
        start local 0 // android.widget.SpellChecker this
        start local 1 // android.view.textservice.SentenceSuggestionsInfo[] results
         0: .line 398
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getText:()Ljava/lang/CharSequence;
            checkcast android.text.Editable
            astore 2 /* editable */
        start local 2 // android.text.Editable editable
         1: .line 400
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         2: goto 24
         3: .line 401
      StackMap locals: android.text.Editable int
      StackMap stack:
            aload 1 /* results */
            iload 3 /* i */
            aaload
            astore 4 /* ssi */
        start local 4 // android.view.textservice.SentenceSuggestionsInfo ssi
         4: .line 402
            aload 4 /* ssi */
            ifnonnull 6
         5: .line 403
            goto 23
         6: .line 405
      StackMap locals: android.view.textservice.SentenceSuggestionsInfo
      StackMap stack:
            aconst_null
            astore 5 /* spellCheckSpan */
        start local 5 // android.text.style.SpellCheckSpan spellCheckSpan
         7: .line 406
            iconst_0
            istore 6 /* j */
        start local 6 // int j
         8: goto 20
         9: .line 407
      StackMap locals: android.text.style.SpellCheckSpan int
      StackMap stack:
            aload 4 /* ssi */
            iload 6 /* j */
            invokevirtual android.view.textservice.SentenceSuggestionsInfo.getSuggestionsInfoAt:(I)Landroid/view/textservice/SuggestionsInfo;
            astore 7 /* suggestionsInfo */
        start local 7 // android.view.textservice.SuggestionsInfo suggestionsInfo
        10: .line 408
            aload 7 /* suggestionsInfo */
            ifnonnull 12
        11: .line 409
            goto 19
        12: .line 411
      StackMap locals: android.view.textservice.SuggestionsInfo
      StackMap stack:
            aload 4 /* ssi */
            iload 6 /* j */
            invokevirtual android.view.textservice.SentenceSuggestionsInfo.getOffsetAt:(I)I
            istore 8 /* offset */
        start local 8 // int offset
        13: .line 412
            aload 4 /* ssi */
            iload 6 /* j */
            invokevirtual android.view.textservice.SentenceSuggestionsInfo.getLengthAt:(I)I
            istore 9 /* length */
        start local 9 // int length
        14: .line 413
            aload 0 /* this */
        15: .line 414
            aload 7 /* suggestionsInfo */
            iload 8 /* offset */
            iload 9 /* length */
        16: .line 413
            invokevirtual android.widget.SpellChecker.onGetSuggestionsInternal:(Landroid/view/textservice/SuggestionsInfo;II)Landroid/text/style/SpellCheckSpan;
            astore 10 /* scs */
        start local 10 // android.text.style.SpellCheckSpan scs
        17: .line 415
            aload 5 /* spellCheckSpan */
            ifnonnull 19
            aload 10 /* scs */
            ifnull 19
        18: .line 418
            aload 10 /* scs */
            astore 5 /* spellCheckSpan */
        end local 10 // android.text.style.SpellCheckSpan scs
        end local 9 // int length
        end local 8 // int offset
        end local 7 // android.view.textservice.SuggestionsInfo suggestionsInfo
        19: .line 406
      StackMap locals:
      StackMap stack:
            iinc 6 /* j */ 1
      StackMap locals:
      StackMap stack:
        20: iload 6 /* j */
            aload 4 /* ssi */
            invokevirtual android.view.textservice.SentenceSuggestionsInfo.getSuggestionsCount:()I
            if_icmplt 9
        end local 6 // int j
        21: .line 421
            aload 5 /* spellCheckSpan */
            ifnull 23
        22: .line 423
            aload 2 /* editable */
            aload 5 /* spellCheckSpan */
            invokeinterface android.text.Editable.removeSpan:(Ljava/lang/Object;)V
        end local 5 // android.text.style.SpellCheckSpan spellCheckSpan
        end local 4 // android.view.textservice.SentenceSuggestionsInfo ssi
        23: .line 400
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        24: iload 3 /* i */
            aload 1 /* results */
            arraylength
            if_icmplt 3
        end local 3 // int i
        25: .line 426
            aload 0 /* this */
            invokevirtual android.widget.SpellChecker.scheduleNewSpellCheck:()V
        26: .line 427
            return
        end local 2 // android.text.Editable editable
        end local 1 // android.view.textservice.SentenceSuggestionsInfo[] results
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   27     0             this  Landroid/widget/SpellChecker;
            0   27     1          results  [Landroid/view/textservice/SentenceSuggestionsInfo;
            1   27     2         editable  Landroid/text/Editable;
            2   25     3                i  I
            4   23     4              ssi  Landroid/view/textservice/SentenceSuggestionsInfo;
            7   23     5   spellCheckSpan  Landroid/text/style/SpellCheckSpan;
            8   21     6                j  I
           10   19     7  suggestionsInfo  Landroid/view/textservice/SuggestionsInfo;
           13   19     8           offset  I
           14   19     9           length  I
           17   19    10              scs  Landroid/text/style/SpellCheckSpan;
    MethodParameters:
         Name  Flags
      results  

  private void scheduleNewSpellCheck();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.widget.SpellChecker this
         0: .line 433
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellRunnable:Ljava/lang/Runnable;
            ifnonnull 3
         1: .line 434
            aload 0 /* this */
            new android.widget.SpellChecker$1
            dup
            aload 0 /* this */
            invokespecial android.widget.SpellChecker$1.<init>:(Landroid/widget/SpellChecker;)V
            putfield android.widget.SpellChecker.mSpellRunnable:Ljava/lang/Runnable;
         2: .line 447
            goto 4
         3: .line 448
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellRunnable:Ljava/lang/Runnable;
            invokevirtual android.widget.TextView.removeCallbacks:(Ljava/lang/Runnable;)Z
            pop
         4: .line 451
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSpellRunnable:Ljava/lang/Runnable;
            ldc 400
            invokevirtual android.widget.TextView.postDelayed:(Ljava/lang/Runnable;J)Z
            pop
         5: .line 452
            return
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Landroid/widget/SpellChecker;

  private void createMisspelledSuggestionSpan(android.text.Editable, android.view.textservice.SuggestionsInfo, android.text.style.SpellCheckSpan, int, int);
    descriptor: (Landroid/text/Editable;Landroid/view/textservice/SuggestionsInfo;Landroid/text/style/SpellCheckSpan;II)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=15, args_size=6
        start local 0 // android.widget.SpellChecker this
        start local 1 // android.text.Editable editable
        start local 2 // android.view.textservice.SuggestionsInfo suggestionsInfo
        start local 3 // android.text.style.SpellCheckSpan spellCheckSpan
        start local 4 // int offset
        start local 5 // int length
         0: .line 456
            aload 1 /* editable */
            aload 3 /* spellCheckSpan */
            invokeinterface android.text.Editable.getSpanStart:(Ljava/lang/Object;)I
            istore 6 /* spellCheckSpanStart */
        start local 6 // int spellCheckSpanStart
         1: .line 457
            aload 1 /* editable */
            aload 3 /* spellCheckSpan */
            invokeinterface android.text.Editable.getSpanEnd:(Ljava/lang/Object;)I
            istore 7 /* spellCheckSpanEnd */
        start local 7 // int spellCheckSpanEnd
         2: .line 458
            iload 6 /* spellCheckSpanStart */
            iflt 3
            iload 7 /* spellCheckSpanEnd */
            iload 6 /* spellCheckSpanStart */
            if_icmpgt 4
         3: .line 459
      StackMap locals: int int
      StackMap stack:
            return
         4: .line 463
      StackMap locals:
      StackMap stack:
            iload 4 /* offset */
            iconst_m1
            if_icmpeq 8
            iload 5 /* length */
            iconst_m1
            if_icmpeq 8
         5: .line 464
            iload 6 /* spellCheckSpanStart */
            iload 4 /* offset */
            iadd
            istore 8 /* start */
        start local 8 // int start
         6: .line 465
            iload 8 /* start */
            iload 5 /* length */
            iadd
            istore 9 /* end */
        start local 9 // int end
         7: .line 466
            goto 10
        end local 9 // int end
        end local 8 // int start
         8: .line 467
      StackMap locals:
      StackMap stack:
            iload 6 /* spellCheckSpanStart */
            istore 8 /* start */
        start local 8 // int start
         9: .line 468
            iload 7 /* spellCheckSpanEnd */
            istore 9 /* end */
        start local 9 // int end
        10: .line 471
      StackMap locals: int int
      StackMap stack:
            aload 2 /* suggestionsInfo */
            invokevirtual android.view.textservice.SuggestionsInfo.getSuggestionsCount:()I
            istore 10 /* suggestionsCount */
        start local 10 // int suggestionsCount
        11: .line 473
            iload 10 /* suggestionsCount */
            ifle 19
        12: .line 474
            iload 10 /* suggestionsCount */
            anewarray java.lang.String
            astore 11 /* suggestions */
        start local 11 // java.lang.String[] suggestions
        13: .line 475
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        14: goto 17
        15: .line 476
      StackMap locals: int java.lang.String[] int
      StackMap stack:
            aload 11 /* suggestions */
            iload 12 /* i */
            aload 2 /* suggestionsInfo */
            iload 12 /* i */
            invokevirtual android.view.textservice.SuggestionsInfo.getSuggestionAt:(I)Ljava/lang/String;
            aastore
        16: .line 475
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 12 /* i */
            iload 10 /* suggestionsCount */
            if_icmplt 15
        end local 12 // int i
        18: .line 478
            goto 20
        end local 11 // java.lang.String[] suggestions
        19: .line 479
      StackMap locals:
      StackMap stack:
            ldc Ljava/lang/String;
            invokestatic com.android.internal.util.ArrayUtils.emptyArray:(Ljava/lang/Class;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 11 /* suggestions */
        start local 11 // java.lang.String[] suggestions
        20: .line 482
      StackMap locals: java.lang.String[]
      StackMap stack:
            new android.text.style.SuggestionSpan
            dup
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            invokevirtual android.widget.TextView.getContext:()Landroid/content/Context;
            aload 11 /* suggestions */
        21: .line 483
            iconst_3
        22: .line 482
            invokespecial android.text.style.SuggestionSpan.<init>:(Landroid/content/Context;[Ljava/lang/String;I)V
            astore 12 /* suggestionSpan */
        start local 12 // android.text.style.SuggestionSpan suggestionSpan
        23: .line 486
            aload 0 /* this */
            getfield android.widget.SpellChecker.mIsSentenceSpellCheckSupported:Z
            ifeq 29
        24: .line 487
            iload 8 /* start */
            iload 9 /* end */
            invokestatic android.text.TextUtils.packRangeInLong:(II)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            astore 13 /* key */
        start local 13 // java.lang.Long key
        25: .line 488
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSuggestionSpanCache:Landroid/util/LruCache;
            aload 13 /* key */
            invokevirtual android.util.LruCache.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast android.text.style.SuggestionSpan
            astore 14 /* tempSuggestionSpan */
        start local 14 // android.text.style.SuggestionSpan tempSuggestionSpan
        26: .line 489
            aload 14 /* tempSuggestionSpan */
            ifnull 28
        27: .line 494
            aload 1 /* editable */
            aload 14 /* tempSuggestionSpan */
            invokeinterface android.text.Editable.removeSpan:(Ljava/lang/Object;)V
        28: .line 496
      StackMap locals: android.text.style.SuggestionSpan java.lang.Long android.text.style.SuggestionSpan
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.SpellChecker.mSuggestionSpanCache:Landroid/util/LruCache;
            aload 13 /* key */
            aload 12 /* suggestionSpan */
            invokevirtual android.util.LruCache.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 14 // android.text.style.SuggestionSpan tempSuggestionSpan
        end local 13 // java.lang.Long key
        29: .line 498
      StackMap locals:
      StackMap stack:
            aload 1 /* editable */
            aload 12 /* suggestionSpan */
            iload 8 /* start */
            iload 9 /* end */
            bipush 33
            invokeinterface android.text.Editable.setSpan:(Ljava/lang/Object;III)V
        30: .line 500
            aload 0 /* this */
            getfield android.widget.SpellChecker.mTextView:Landroid/widget/TextView;
            iload 8 /* start */
            iload 9 /* end */
            iconst_0
            invokevirtual android.widget.TextView.invalidateRegion:(IIZ)V
        31: .line 501
            return
        end local 12 // android.text.style.SuggestionSpan suggestionSpan
        end local 11 // java.lang.String[] suggestions
        end local 10 // int suggestionsCount
        end local 9 // int end
        end local 8 // int start
        end local 7 // int spellCheckSpanEnd
        end local 6 // int spellCheckSpanStart
        end local 5 // int length
        end local 4 // int offset
        end local 3 // android.text.style.SpellCheckSpan spellCheckSpan
        end local 2 // android.view.textservice.SuggestionsInfo suggestionsInfo
        end local 1 // android.text.Editable editable
        end local 0 // android.widget.SpellChecker this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   32     0                 this  Landroid/widget/SpellChecker;
            0   32     1             editable  Landroid/text/Editable;
            0   32     2      suggestionsInfo  Landroid/view/textservice/SuggestionsInfo;
            0   32     3       spellCheckSpan  Landroid/text/style/SpellCheckSpan;
            0   32     4               offset  I
            0   32     5               length  I
            1   32     6  spellCheckSpanStart  I
            2   32     7    spellCheckSpanEnd  I
            6    8     8                start  I
            9   32     8                start  I
            7    8     9                  end  I
           10   32     9                  end  I
           11   32    10     suggestionsCount  I
           13   19    11          suggestions  [Ljava/lang/String;
           20   32    11          suggestions  [Ljava/lang/String;
           14   18    12                    i  I
           23   32    12       suggestionSpan  Landroid/text/style/SuggestionSpan;
           25   29    13                  key  Ljava/lang/Long;
           26   29    14   tempSuggestionSpan  Landroid/text/style/SuggestionSpan;
    MethodParameters:
                 Name  Flags
      editable         
      suggestionsInfo  
      spellCheckSpan   
      offset           
      length           

  public static boolean haveWordBoundariesChanged(android.text.Editable, int, int, int, int);
    descriptor: (Landroid/text/Editable;IIII)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=7, args_size=5
        start local 0 // android.text.Editable editable
        start local 1 // int start
        start local 2 // int end
        start local 3 // int spanStart
        start local 4 // int spanEnd
         0: .line 757
            iload 4 /* spanEnd */
            iload 1 /* start */
            if_icmpeq 3
            iload 3 /* spanStart */
            iload 2 /* end */
            if_icmpeq 3
         1: .line 758
            iconst_1
            istore 5 /* haveWordBoundariesChanged */
        start local 5 // boolean haveWordBoundariesChanged
         2: .line 762
            goto 12
        end local 5 // boolean haveWordBoundariesChanged
      StackMap locals:
      StackMap stack:
         3: iload 4 /* spanEnd */
            iload 1 /* start */
            if_icmpne 7
            iload 1 /* start */
            aload 0 /* editable */
            invokeinterface android.text.Editable.length:()I
            if_icmpge 7
         4: .line 763
            aload 0 /* editable */
            iload 1 /* start */
            invokestatic java.lang.Character.codePointAt:(Ljava/lang/CharSequence;I)I
            istore 6 /* codePoint */
        start local 6 // int codePoint
         5: .line 764
            iload 6 /* codePoint */
            invokestatic java.lang.Character.isLetterOrDigit:(I)Z
            istore 5 /* haveWordBoundariesChanged */
        end local 6 // int codePoint
        start local 5 // boolean haveWordBoundariesChanged
         6: .line 771
            goto 12
        end local 5 // boolean haveWordBoundariesChanged
      StackMap locals:
      StackMap stack:
         7: iload 3 /* spanStart */
            iload 2 /* end */
            if_icmpne 11
            iload 2 /* end */
            ifle 11
         8: .line 772
            aload 0 /* editable */
            iload 2 /* end */
            invokestatic java.lang.Character.codePointBefore:(Ljava/lang/CharSequence;I)I
            istore 6 /* codePoint */
        start local 6 // int codePoint
         9: .line 773
            iload 6 /* codePoint */
            invokestatic java.lang.Character.isLetterOrDigit:(I)Z
            istore 5 /* haveWordBoundariesChanged */
        end local 6 // int codePoint
        start local 5 // boolean haveWordBoundariesChanged
        10: .line 780
            goto 12
        end local 5 // boolean haveWordBoundariesChanged
        11: .line 784
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 5 /* haveWordBoundariesChanged */
        start local 5 // boolean haveWordBoundariesChanged
        12: .line 786
      StackMap locals: int
      StackMap stack:
            iload 5 /* haveWordBoundariesChanged */
            ireturn
        end local 5 // boolean haveWordBoundariesChanged
        end local 4 // int spanEnd
        end local 3 // int spanStart
        end local 2 // int end
        end local 1 // int start
        end local 0 // android.text.Editable editable
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   13     0                   editable  Landroid/text/Editable;
            0   13     1                      start  I
            0   13     2                        end  I
            0   13     3                  spanStart  I
            0   13     4                    spanEnd  I
            2    3     5  haveWordBoundariesChanged  Z
            6    7     5  haveWordBoundariesChanged  Z
           10   11     5  haveWordBoundariesChanged  Z
           12   13     5  haveWordBoundariesChanged  Z
            5    6     6                  codePoint  I
            9   10     6                  codePoint  I
    MethodParameters:
           Name  Flags
      editable   final
      start      final
      end        final
      spanStart  final
      spanEnd    final
}
SourceFile: "SpellChecker.java"
NestMembers:
  android.widget.SpellChecker$1  android.widget.SpellChecker$SpellParser
InnerClasses:
  public abstract SpellCheckerSessionListener = android.view.textservice.SpellCheckerSession$SpellCheckerSessionListener of android.view.textservice.SpellCheckerSession
  android.widget.SpellChecker$1
  private SpellParser = android.widget.SpellChecker$SpellParser of android.widget.SpellChecker