public class android.widget.AlphabetIndexer extends android.database.DataSetObserver implements android.widget.SectionIndexer
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.widget.AlphabetIndexer
  super_class: android.database.DataSetObserver
{
  protected android.database.Cursor mDataCursor;
    descriptor: Landroid/database/Cursor;
    flags: (0x0004) ACC_PROTECTED

  protected int mColumnIndex;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.CharSequence mAlphabet;
    descriptor: Ljava/lang/CharSequence;
    flags: (0x0004) ACC_PROTECTED

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

  private android.util.SparseIntArray mAlphaMap;
    descriptor: Landroid/util/SparseIntArray;
    flags: (0x0002) ACC_PRIVATE

  private java.text.Collator mCollator;
    descriptor: Ljava/text/Collator;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.String[] mAlphabetArray;
    descriptor: [Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

  public void <init>(android.database.Cursor, int, java.lang.CharSequence);
    descriptor: (Landroid/database/Cursor;ILjava/lang/CharSequence;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // android.widget.AlphabetIndexer this
        start local 1 // android.database.Cursor cursor
        start local 2 // int sortedColumnIndex
        start local 3 // java.lang.CharSequence alphabet
         0: .line 82
            aload 0 /* this */
            invokespecial android.database.DataSetObserver.<init>:()V
         1: .line 83
            aload 0 /* this */
            aload 1 /* cursor */
            putfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
         2: .line 84
            aload 0 /* this */
            iload 2 /* sortedColumnIndex */
            putfield android.widget.AlphabetIndexer.mColumnIndex:I
         3: .line 85
            aload 0 /* this */
            aload 3 /* alphabet */
            putfield android.widget.AlphabetIndexer.mAlphabet:Ljava/lang/CharSequence;
         4: .line 86
            aload 0 /* this */
            aload 3 /* alphabet */
            invokeinterface java.lang.CharSequence.length:()I
            putfield android.widget.AlphabetIndexer.mAlphabetLength:I
         5: .line 87
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetLength:I
            anewarray java.lang.String
            putfield android.widget.AlphabetIndexer.mAlphabetArray:[Ljava/lang/String;
         6: .line 88
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         7: goto 10
         8: .line 89
      StackMap locals: android.widget.AlphabetIndexer android.database.Cursor int java.lang.CharSequence int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetArray:[Ljava/lang/String;
            iload 4 /* i */
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabet:Ljava/lang/CharSequence;
            iload 4 /* i */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            invokestatic java.lang.Character.toString:(C)Ljava/lang/String;
            aastore
         9: .line 88
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 4 /* i */
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetLength:I
            if_icmplt 8
        end local 4 // int i
        11: .line 91
            aload 0 /* this */
            new android.util.SparseIntArray
            dup
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetLength:I
            invokespecial android.util.SparseIntArray.<init>:(I)V
            putfield android.widget.AlphabetIndexer.mAlphaMap:Landroid/util/SparseIntArray;
        12: .line 92
            aload 1 /* cursor */
            ifnull 14
        13: .line 93
            aload 1 /* cursor */
            aload 0 /* this */
            invokeinterface android.database.Cursor.registerDataSetObserver:(Landroid/database/DataSetObserver;)V
        14: .line 96
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokestatic java.text.Collator.getInstance:()Ljava/text/Collator;
            putfield android.widget.AlphabetIndexer.mCollator:Ljava/text/Collator;
        15: .line 97
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mCollator:Ljava/text/Collator;
            iconst_0
            invokevirtual java.text.Collator.setStrength:(I)V
        16: .line 98
            return
        end local 3 // java.lang.CharSequence alphabet
        end local 2 // int sortedColumnIndex
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   17     0               this  Landroid/widget/AlphabetIndexer;
            0   17     1             cursor  Landroid/database/Cursor;
            0   17     2  sortedColumnIndex  I
            0   17     3           alphabet  Ljava/lang/CharSequence;
            7   11     4                  i  I
    MethodParameters:
                   Name  Flags
      cursor             
      sortedColumnIndex  
      alphabet           

  public java.lang.Object[] getSections();
    descriptor: ()[Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.AlphabetIndexer this
         0: .line 105
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetArray:[Ljava/lang/String;
            areturn
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/AlphabetIndexer;

  public void setCursor(android.database.Cursor);
    descriptor: (Landroid/database/Cursor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.AlphabetIndexer this
        start local 1 // android.database.Cursor cursor
         0: .line 113
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            ifnull 2
         1: .line 114
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            aload 0 /* this */
            invokeinterface android.database.Cursor.unregisterDataSetObserver:(Landroid/database/DataSetObserver;)V
         2: .line 116
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* cursor */
            putfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
         3: .line 117
            aload 1 /* cursor */
            ifnull 5
         4: .line 118
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            aload 0 /* this */
            invokeinterface android.database.Cursor.registerDataSetObserver:(Landroid/database/DataSetObserver;)V
         5: .line 120
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphaMap:Landroid/util/SparseIntArray;
            invokevirtual android.util.SparseIntArray.clear:()V
         6: .line 121
            return
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Landroid/widget/AlphabetIndexer;
            0    7     1  cursor  Landroid/database/Cursor;
    MethodParameters:
        Name  Flags
      cursor  

  protected int compare(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.widget.AlphabetIndexer this
        start local 1 // java.lang.String word
        start local 2 // java.lang.String letter
         0: .line 128
            aload 1 /* word */
            invokevirtual java.lang.String.length:()I
            ifne 3
         1: .line 129
            ldc " "
            astore 3 /* firstLetter */
        start local 3 // java.lang.String firstLetter
         2: .line 130
            goto 4
        end local 3 // java.lang.String firstLetter
         3: .line 131
      StackMap locals:
      StackMap stack:
            aload 1 /* word */
            iconst_0
            iconst_1
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* firstLetter */
        start local 3 // java.lang.String firstLetter
         4: .line 134
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mCollator:Ljava/text/Collator;
            aload 3 /* firstLetter */
            aload 2 /* letter */
            invokevirtual java.text.Collator.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ireturn
        end local 3 // java.lang.String firstLetter
        end local 2 // java.lang.String letter
        end local 1 // java.lang.String word
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Landroid/widget/AlphabetIndexer;
            0    5     1         word  Ljava/lang/String;
            0    5     2       letter  Ljava/lang/String;
            2    3     3  firstLetter  Ljava/lang/String;
            4    5     3  firstLetter  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      word    
      letter  

  public int getPositionForSection(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=14, args_size=2
        start local 0 // android.widget.AlphabetIndexer this
        start local 1 // int sectionIndex
         0: .line 147
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphaMap:Landroid/util/SparseIntArray;
            astore 2 /* alphaMap */
        start local 2 // android.util.SparseIntArray alphaMap
         1: .line 148
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            astore 3 /* cursor */
        start local 3 // android.database.Cursor cursor
         2: .line 150
            aload 3 /* cursor */
            ifnull 3
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabet:Ljava/lang/CharSequence;
            ifnonnull 4
         3: .line 151
      StackMap locals: android.util.SparseIntArray android.database.Cursor
      StackMap stack:
            iconst_0
            ireturn
         4: .line 155
      StackMap locals:
      StackMap stack:
            iload 1 /* sectionIndex */
            ifgt 6
         5: .line 156
            iconst_0
            ireturn
         6: .line 158
      StackMap locals:
      StackMap stack:
            iload 1 /* sectionIndex */
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetLength:I
            if_icmplt 8
         7: .line 159
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetLength:I
            iconst_1
            isub
            istore 1 /* sectionIndex */
         8: .line 162
      StackMap locals:
      StackMap stack:
            aload 3 /* cursor */
            invokeinterface android.database.Cursor.getPosition:()I
            istore 4 /* savedCursorPos */
        start local 4 // int savedCursorPos
         9: .line 164
            aload 3 /* cursor */
            invokeinterface android.database.Cursor.getCount:()I
            istore 5 /* count */
        start local 5 // int count
        10: .line 165
            iconst_0
            istore 6 /* start */
        start local 6 // int start
        11: .line 166
            iload 5 /* count */
            istore 7 /* end */
        start local 7 // int end
        12: .line 169
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabet:Ljava/lang/CharSequence;
            iload 1 /* sectionIndex */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            istore 9 /* letter */
        start local 9 // char letter
        13: .line 170
            iload 9 /* letter */
            invokestatic java.lang.Character.toString:(C)Ljava/lang/String;
            astore 10 /* targetLetter */
        start local 10 // java.lang.String targetLetter
        14: .line 171
            iload 9 /* letter */
            istore 11 /* key */
        start local 11 // int key
        15: .line 173
            ldc -2147483648
            aload 2 /* alphaMap */
            iload 11 /* key */
            ldc -2147483648
            invokevirtual android.util.SparseIntArray.get:(II)I
            dup
            istore 8 /* pos */
        start local 8 // int pos
        16: if_icmpeq 22
        17: .line 177
            iload 8 /* pos */
            ifge 21
        18: .line 178
            iload 8 /* pos */
            ineg
            istore 8 /* pos */
        19: .line 179
            iload 8 /* pos */
            istore 7 /* end */
        20: .line 180
            goto 22
        21: .line 182
      StackMap locals: android.widget.AlphabetIndexer int android.util.SparseIntArray android.database.Cursor int int int int int int java.lang.String int
      StackMap stack:
            iload 8 /* pos */
            ireturn
        22: .line 187
      StackMap locals:
      StackMap stack:
            iload 1 /* sectionIndex */
            ifle 28
        23: .line 189
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabet:Ljava/lang/CharSequence;
            iload 1 /* sectionIndex */
            iconst_1
            isub
            invokeinterface java.lang.CharSequence.charAt:(I)C
        24: .line 188
            istore 12 /* prevLetter */
        start local 12 // int prevLetter
        25: .line 190
            aload 2 /* alphaMap */
            iload 12 /* prevLetter */
            ldc -2147483648
            invokevirtual android.util.SparseIntArray.get:(II)I
            istore 13 /* prevLetterPos */
        start local 13 // int prevLetterPos
        26: .line 191
            iload 13 /* prevLetterPos */
            ldc -2147483648
            if_icmpeq 28
        27: .line 192
            iload 13 /* prevLetterPos */
            invokestatic java.lang.Math.abs:(I)I
            istore 6 /* start */
        end local 13 // int prevLetterPos
        end local 12 // int prevLetter
        28: .line 198
      StackMap locals:
      StackMap stack:
            iload 7 /* end */
            iload 6 /* start */
            iadd
            iconst_2
            idiv
            istore 8 /* pos */
        29: .line 200
            goto 50
        30: .line 202
      StackMap locals:
      StackMap stack:
            aload 3 /* cursor */
            iload 8 /* pos */
            invokeinterface android.database.Cursor.moveToPosition:(I)Z
            pop
        31: .line 203
            aload 3 /* cursor */
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mColumnIndex:I
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            astore 12 /* curName */
        start local 12 // java.lang.String curName
        32: .line 204
            aload 12 /* curName */
            ifnonnull 37
        33: .line 205
            iload 8 /* pos */
            ifne 35
        34: .line 206
            goto 51
        35: .line 208
      StackMap locals: java.lang.String
      StackMap stack:
            iinc 8 /* pos */ -1
        36: .line 209
            goto 50
        37: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 12 /* curName */
            aload 10 /* targetLetter */
            invokevirtual android.widget.AlphabetIndexer.compare:(Ljava/lang/String;Ljava/lang/String;)I
            istore 13 /* diff */
        start local 13 // int diff
        38: .line 213
            iload 13 /* diff */
            ifeq 46
        39: .line 225
            iload 13 /* diff */
            ifge 44
        40: .line 226
            iload 8 /* pos */
            iconst_1
            iadd
            istore 6 /* start */
        41: .line 227
            iload 6 /* start */
            iload 5 /* count */
            if_icmplt 49
        42: .line 228
            iload 5 /* count */
            istore 8 /* pos */
        43: .line 229
            goto 51
        44: .line 232
      StackMap locals: int
      StackMap stack:
            iload 8 /* pos */
            istore 7 /* end */
        45: .line 234
            goto 49
        46: .line 236
      StackMap locals:
      StackMap stack:
            iload 6 /* start */
            iload 8 /* pos */
            if_icmpne 48
        47: .line 238
            goto 51
        48: .line 241
      StackMap locals:
      StackMap stack:
            iload 8 /* pos */
            istore 7 /* end */
        49: .line 244
      StackMap locals:
      StackMap stack:
            iload 6 /* start */
            iload 7 /* end */
            iadd
            iconst_2
            idiv
            istore 8 /* pos */
        end local 13 // int diff
        end local 12 // java.lang.String curName
        50: .line 200
      StackMap locals:
      StackMap stack:
            iload 8 /* pos */
            iload 7 /* end */
            if_icmplt 30
        51: .line 246
      StackMap locals:
      StackMap stack:
            aload 2 /* alphaMap */
            iload 11 /* key */
            iload 8 /* pos */
            invokevirtual android.util.SparseIntArray.put:(II)V
        52: .line 247
            aload 3 /* cursor */
            iload 4 /* savedCursorPos */
            invokeinterface android.database.Cursor.moveToPosition:(I)Z
            pop
        53: .line 248
            iload 8 /* pos */
            ireturn
        end local 11 // int key
        end local 10 // java.lang.String targetLetter
        end local 9 // char letter
        end local 8 // int pos
        end local 7 // int end
        end local 6 // int start
        end local 5 // int count
        end local 4 // int savedCursorPos
        end local 3 // android.database.Cursor cursor
        end local 2 // android.util.SparseIntArray alphaMap
        end local 1 // int sectionIndex
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   54     0            this  Landroid/widget/AlphabetIndexer;
            0   54     1    sectionIndex  I
            1   54     2        alphaMap  Landroid/util/SparseIntArray;
            2   54     3          cursor  Landroid/database/Cursor;
            9   54     4  savedCursorPos  I
           10   54     5           count  I
           11   54     6           start  I
           12   54     7             end  I
           16   54     8             pos  I
           13   54     9          letter  C
           14   54    10    targetLetter  Ljava/lang/String;
           15   54    11             key  I
           25   28    12      prevLetter  I
           26   28    13   prevLetterPos  I
           32   50    12         curName  Ljava/lang/String;
           38   50    13            diff  I
    MethodParameters:
              Name  Flags
      sectionIndex  

  public int getSectionForPosition(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // android.widget.AlphabetIndexer this
        start local 1 // int position
         0: .line 256
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            invokeinterface android.database.Cursor.getPosition:()I
            istore 2 /* savedCursorPos */
        start local 2 // int savedCursorPos
         1: .line 257
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            iload 1 /* position */
            invokeinterface android.database.Cursor.moveToPosition:(I)Z
            pop
         2: .line 258
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mColumnIndex:I
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            astore 3 /* curName */
        start local 3 // java.lang.String curName
         3: .line 259
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mDataCursor:Landroid/database/Cursor;
            iload 2 /* savedCursorPos */
            invokeinterface android.database.Cursor.moveToPosition:(I)Z
            pop
         4: .line 262
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         5: goto 11
         6: .line 263
      StackMap locals: int java.lang.String int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabet:Ljava/lang/CharSequence;
            iload 4 /* i */
            invokeinterface java.lang.CharSequence.charAt:(I)C
            istore 5 /* letter */
        start local 5 // char letter
         7: .line 264
            iload 5 /* letter */
            invokestatic java.lang.Character.toString:(C)Ljava/lang/String;
            astore 6 /* targetLetter */
        start local 6 // java.lang.String targetLetter
         8: .line 265
            aload 0 /* this */
            aload 3 /* curName */
            aload 6 /* targetLetter */
            invokevirtual android.widget.AlphabetIndexer.compare:(Ljava/lang/String;Ljava/lang/String;)I
            ifne 10
         9: .line 266
            iload 4 /* i */
            ireturn
        end local 6 // java.lang.String targetLetter
        end local 5 // char letter
        10: .line 262
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphabetLength:I
            if_icmplt 6
        end local 4 // int i
        12: .line 269
            iconst_0
            ireturn
        end local 3 // java.lang.String curName
        end local 2 // int savedCursorPos
        end local 1 // int position
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Landroid/widget/AlphabetIndexer;
            0   13     1        position  I
            1   13     2  savedCursorPos  I
            3   13     3         curName  Ljava/lang/String;
            5   12     4               i  I
            7   10     5          letter  C
            8   10     6    targetLetter  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      position  

  public void onChanged();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.AlphabetIndexer this
         0: .line 277
            aload 0 /* this */
            invokespecial android.database.DataSetObserver.onChanged:()V
         1: .line 278
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphaMap:Landroid/util/SparseIntArray;
            invokevirtual android.util.SparseIntArray.clear:()V
         2: .line 279
            return
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/widget/AlphabetIndexer;

  public void onInvalidated();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.AlphabetIndexer this
         0: .line 286
            aload 0 /* this */
            invokespecial android.database.DataSetObserver.onInvalidated:()V
         1: .line 287
            aload 0 /* this */
            getfield android.widget.AlphabetIndexer.mAlphaMap:Landroid/util/SparseIntArray;
            invokevirtual android.util.SparseIntArray.clear:()V
         2: .line 288
            return
        end local 0 // android.widget.AlphabetIndexer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/widget/AlphabetIndexer;
}
SourceFile: "AlphabetIndexer.java"