public abstract class android.widget.CursorTreeAdapter extends android.widget.BaseExpandableListAdapter implements android.widget.Filterable, android.widget.CursorFilter$CursorFilterClient
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: android.widget.CursorTreeAdapter
  super_class: android.widget.BaseExpandableListAdapter
{
  private android.content.Context mContext;
    descriptor: Landroid/content/Context;
    flags: (0x0002) ACC_PRIVATE

  private android.os.Handler mHandler;
    descriptor: Landroid/os/Handler;
    flags: (0x0002) ACC_PRIVATE

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

  android.widget.CursorTreeAdapter$MyCursorHelper mGroupCursorHelper;
    descriptor: Landroid/widget/CursorTreeAdapter$MyCursorHelper;
    flags: (0x0000) 

  android.util.SparseArray<android.widget.CursorTreeAdapter$MyCursorHelper> mChildrenCursorHelpers;
    descriptor: Landroid/util/SparseArray;
    flags: (0x0000) 
    Signature: Landroid/util/SparseArray<Landroid/widget/CursorTreeAdapter$MyCursorHelper;>;

  android.widget.CursorFilter mCursorFilter;
    descriptor: Landroid/widget/CursorFilter;
    flags: (0x0000) 

  android.widget.FilterQueryProvider mFilterQueryProvider;
    descriptor: Landroid/widget/FilterQueryProvider;
    flags: (0x0000) 

  public void <init>(android.database.Cursor, android.content.Context);
    descriptor: (Landroid/database/Cursor;Landroid/content/Context;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // android.database.Cursor cursor
        start local 2 // android.content.Context context
         0: .line 63
            aload 0 /* this */
            invokespecial android.widget.BaseExpandableListAdapter.<init>:()V
         1: .line 64
            aload 0 /* this */
            aload 1 /* cursor */
            aload 2 /* context */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter.init:(Landroid/database/Cursor;Landroid/content/Context;Z)V
         2: .line 65
            return
        end local 2 // android.content.Context context
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Landroid/widget/CursorTreeAdapter;
            0    3     1   cursor  Landroid/database/Cursor;
            0    3     2  context  Landroid/content/Context;
    MethodParameters:
         Name  Flags
      cursor   
      context  

  public void <init>(android.database.Cursor, android.content.Context, boolean);
    descriptor: (Landroid/database/Cursor;Landroid/content/Context;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // android.database.Cursor cursor
        start local 2 // android.content.Context context
        start local 3 // boolean autoRequery
         0: .line 76
            aload 0 /* this */
            invokespecial android.widget.BaseExpandableListAdapter.<init>:()V
         1: .line 77
            aload 0 /* this */
            aload 1 /* cursor */
            aload 2 /* context */
            iload 3 /* autoRequery */
            invokevirtual android.widget.CursorTreeAdapter.init:(Landroid/database/Cursor;Landroid/content/Context;Z)V
         2: .line 78
            return
        end local 3 // boolean autoRequery
        end local 2 // android.content.Context context
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Landroid/widget/CursorTreeAdapter;
            0    3     1       cursor  Landroid/database/Cursor;
            0    3     2      context  Landroid/content/Context;
            0    3     3  autoRequery  Z
    MethodParameters:
             Name  Flags
      cursor       
      context      
      autoRequery  

  private void init(android.database.Cursor, android.content.Context, boolean);
    descriptor: (Landroid/database/Cursor;Landroid/content/Context;Z)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // android.database.Cursor cursor
        start local 2 // android.content.Context context
        start local 3 // boolean autoRequery
         0: .line 81
            aload 0 /* this */
            aload 2 /* context */
            putfield android.widget.CursorTreeAdapter.mContext:Landroid/content/Context;
         1: .line 82
            aload 0 /* this */
            new android.os.Handler
            dup
            invokespecial android.os.Handler.<init>:()V
            putfield android.widget.CursorTreeAdapter.mHandler:Landroid/os/Handler;
         2: .line 83
            aload 0 /* this */
            iload 3 /* autoRequery */
            putfield android.widget.CursorTreeAdapter.mAutoRequery:Z
         3: .line 85
            aload 0 /* this */
            new android.widget.CursorTreeAdapter$MyCursorHelper
            dup
            aload 0 /* this */
            aload 1 /* cursor */
            invokespecial android.widget.CursorTreeAdapter$MyCursorHelper.<init>:(Landroid/widget/CursorTreeAdapter;Landroid/database/Cursor;)V
            putfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
         4: .line 86
            aload 0 /* this */
            new android.util.SparseArray
            dup
            invokespecial android.util.SparseArray.<init>:()V
            putfield android.widget.CursorTreeAdapter.mChildrenCursorHelpers:Landroid/util/SparseArray;
         5: .line 87
            return
        end local 3 // boolean autoRequery
        end local 2 // android.content.Context context
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Landroid/widget/CursorTreeAdapter;
            0    6     1       cursor  Landroid/database/Cursor;
            0    6     2      context  Landroid/content/Context;
            0    6     3  autoRequery  Z
    MethodParameters:
             Name  Flags
      cursor       
      context      
      autoRequery  

  synchronized android.widget.CursorTreeAdapter$MyCursorHelper getChildrenCursorHelper(int, boolean);
    descriptor: (IZ)Landroid/widget/CursorTreeAdapter$MyCursorHelper;
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
        start local 2 // boolean requestCursor
         0: .line 100
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mChildrenCursorHelpers:Landroid/util/SparseArray;
            iload 1 /* groupPosition */
            invokevirtual android.util.SparseArray.get:(I)Ljava/lang/Object;
            checkcast android.widget.CursorTreeAdapter$MyCursorHelper
            astore 3 /* cursorHelper */
        start local 3 // android.widget.CursorTreeAdapter$MyCursorHelper cursorHelper
         1: .line 102
            aload 3 /* cursorHelper */
            ifnonnull 6
         2: .line 103
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            iload 1 /* groupPosition */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.moveTo:(I)Landroid/database/Cursor;
            ifnonnull 3
            aconst_null
            areturn
         3: .line 105
      StackMap locals: android.widget.CursorTreeAdapter$MyCursorHelper
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.getCursor:()Landroid/database/Cursor;
            invokevirtual android.widget.CursorTreeAdapter.getChildrenCursor:(Landroid/database/Cursor;)Landroid/database/Cursor;
            astore 4 /* cursor */
        start local 4 // android.database.Cursor cursor
         4: .line 106
            new android.widget.CursorTreeAdapter$MyCursorHelper
            dup
            aload 0 /* this */
            aload 4 /* cursor */
            invokespecial android.widget.CursorTreeAdapter$MyCursorHelper.<init>:(Landroid/widget/CursorTreeAdapter;Landroid/database/Cursor;)V
            astore 3 /* cursorHelper */
         5: .line 107
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mChildrenCursorHelpers:Landroid/util/SparseArray;
            iload 1 /* groupPosition */
            aload 3 /* cursorHelper */
            invokevirtual android.util.SparseArray.put:(ILjava/lang/Object;)V
        end local 4 // android.database.Cursor cursor
         6: .line 110
      StackMap locals:
      StackMap stack:
            aload 3 /* cursorHelper */
            areturn
        end local 3 // android.widget.CursorTreeAdapter$MyCursorHelper cursorHelper
        end local 2 // boolean requestCursor
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Landroid/widget/CursorTreeAdapter;
            0    7     1  groupPosition  I
            0    7     2  requestCursor  Z
            1    7     3   cursorHelper  Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            4    6     4         cursor  Landroid/database/Cursor;
    MethodParameters:
               Name  Flags
      groupPosition  
      requestCursor  

  protected abstract android.database.Cursor getChildrenCursor(android.database.Cursor);
    descriptor: (Landroid/database/Cursor;)Landroid/database/Cursor;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
             Name  Flags
      groupCursor  

  public void setGroupCursor(android.database.Cursor);
    descriptor: (Landroid/database/Cursor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // android.database.Cursor cursor
         0: .line 140
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            aload 1 /* cursor */
            iconst_0
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.changeCursor:(Landroid/database/Cursor;Z)V
         1: .line 141
            return
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/widget/CursorTreeAdapter;
            0    2     1  cursor  Landroid/database/Cursor;
    MethodParameters:
        Name  Flags
      cursor  

  public void setChildrenCursor(int, android.database.Cursor);
    descriptor: (ILandroid/database/Cursor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
        start local 2 // android.database.Cursor childrenCursor
         0: .line 158
            aload 0 /* this */
            iload 1 /* groupPosition */
            iconst_0
            invokevirtual android.widget.CursorTreeAdapter.getChildrenCursorHelper:(IZ)Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            astore 3 /* childrenCursorHelper */
        start local 3 // android.widget.CursorTreeAdapter$MyCursorHelper childrenCursorHelper
         1: .line 164
            aload 3 /* childrenCursorHelper */
            aload 2 /* childrenCursor */
            iconst_0
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.changeCursor:(Landroid/database/Cursor;Z)V
         2: .line 165
            return
        end local 3 // android.widget.CursorTreeAdapter$MyCursorHelper childrenCursorHelper
        end local 2 // android.database.Cursor childrenCursor
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    3     0                  this  Landroid/widget/CursorTreeAdapter;
            0    3     1         groupPosition  I
            0    3     2        childrenCursor  Landroid/database/Cursor;
            1    3     3  childrenCursorHelper  Landroid/widget/CursorTreeAdapter$MyCursorHelper;
    MethodParameters:
                Name  Flags
      groupPosition   
      childrenCursor  

  public android.database.Cursor getChild(int, int);
    descriptor: (II)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
        start local 2 // int childPosition
         0: .line 169
            aload 0 /* this */
            iload 1 /* groupPosition */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter.getChildrenCursorHelper:(IZ)Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            iload 2 /* childPosition */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.moveTo:(I)Landroid/database/Cursor;
            areturn
        end local 2 // int childPosition
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/widget/CursorTreeAdapter;
            0    1     1  groupPosition  I
            0    1     2  childPosition  I
    MethodParameters:
               Name  Flags
      groupPosition  
      childPosition  

  public long getChildId(int, int);
    descriptor: (II)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
        start local 2 // int childPosition
         0: .line 173
            aload 0 /* this */
            iload 1 /* groupPosition */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter.getChildrenCursorHelper:(IZ)Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            iload 2 /* childPosition */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.getId:(I)J
            lreturn
        end local 2 // int childPosition
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/widget/CursorTreeAdapter;
            0    1     1  groupPosition  I
            0    1     2  childPosition  I
    MethodParameters:
               Name  Flags
      groupPosition  
      childPosition  

  public int getChildrenCount(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
         0: .line 177
            aload 0 /* this */
            iload 1 /* groupPosition */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter.getChildrenCursorHelper:(IZ)Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            astore 2 /* helper */
        start local 2 // android.widget.CursorTreeAdapter$MyCursorHelper helper
         1: .line 178
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.isValid:()Z
            ifeq 2
            aload 2 /* helper */
            ifnull 2
            aload 2 /* helper */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.getCount:()I
            goto 3
      StackMap locals: android.widget.CursorTreeAdapter$MyCursorHelper
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ireturn
        end local 2 // android.widget.CursorTreeAdapter$MyCursorHelper helper
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Landroid/widget/CursorTreeAdapter;
            0    4     1  groupPosition  I
            1    4     2         helper  Landroid/widget/CursorTreeAdapter$MyCursorHelper;
    MethodParameters:
               Name  Flags
      groupPosition  

  public android.database.Cursor getGroup(int);
    descriptor: (I)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
         0: .line 183
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            iload 1 /* groupPosition */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.moveTo:(I)Landroid/database/Cursor;
            areturn
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/widget/CursorTreeAdapter;
            0    1     1  groupPosition  I
    MethodParameters:
               Name  Flags
      groupPosition  

  public int getGroupCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 187
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.getCount:()I
            ireturn
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/CursorTreeAdapter;

  public long getGroupId(int);
    descriptor: (I)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
         0: .line 191
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            iload 1 /* groupPosition */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.getId:(I)J
            lreturn
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/widget/CursorTreeAdapter;
            0    1     1  groupPosition  I
    MethodParameters:
               Name  Flags
      groupPosition  

  public android.view.View getGroupView(int, boolean, android.view.View, android.view.ViewGroup);
    descriptor: (IZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
        start local 2 // boolean isExpanded
        start local 3 // android.view.View convertView
        start local 4 // android.view.ViewGroup parent
         0: .line 196
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            iload 1 /* groupPosition */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.moveTo:(I)Landroid/database/Cursor;
            astore 5 /* cursor */
        start local 5 // android.database.Cursor cursor
         1: .line 197
            aload 5 /* cursor */
            ifnonnull 3
         2: .line 198
            new java.lang.IllegalStateException
            dup
            ldc "this should only be called when the cursor is valid"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 202
      StackMap locals: android.database.Cursor
      StackMap stack:
            aload 3 /* convertView */
            ifnonnull 6
         4: .line 203
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mContext:Landroid/content/Context;
            aload 5 /* cursor */
            iload 2 /* isExpanded */
            aload 4 /* parent */
            invokevirtual android.widget.CursorTreeAdapter.newGroupView:(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;
            astore 6 /* v */
        start local 6 // android.view.View v
         5: .line 204
            goto 7
        end local 6 // android.view.View v
         6: .line 205
      StackMap locals:
      StackMap stack:
            aload 3 /* convertView */
            astore 6 /* v */
        start local 6 // android.view.View v
         7: .line 207
      StackMap locals: android.view.View
      StackMap stack:
            aload 0 /* this */
            aload 6 /* v */
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mContext:Landroid/content/Context;
            aload 5 /* cursor */
            iload 2 /* isExpanded */
            invokevirtual android.widget.CursorTreeAdapter.bindGroupView:(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V
         8: .line 208
            aload 6 /* v */
            areturn
        end local 6 // android.view.View v
        end local 5 // android.database.Cursor cursor
        end local 4 // android.view.ViewGroup parent
        end local 3 // android.view.View convertView
        end local 2 // boolean isExpanded
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Landroid/widget/CursorTreeAdapter;
            0    9     1  groupPosition  I
            0    9     2     isExpanded  Z
            0    9     3    convertView  Landroid/view/View;
            0    9     4         parent  Landroid/view/ViewGroup;
            1    9     5         cursor  Landroid/database/Cursor;
            5    6     6              v  Landroid/view/View;
            7    9     6              v  Landroid/view/View;
    MethodParameters:
               Name  Flags
      groupPosition  
      isExpanded     
      convertView    
      parent         

  protected abstract android.view.View newGroupView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
    descriptor: (Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
            Name  Flags
      context     
      cursor      
      isExpanded  
      parent      

  protected abstract void bindGroupView(android.view.View, android.content.Context, android.database.Cursor, boolean);
    descriptor: (Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
            Name  Flags
      view        
      context     
      cursor      
      isExpanded  

  public android.view.View getChildView(int, int, boolean, android.view.View, android.view.ViewGroup);
    descriptor: (IIZLandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=6
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
        start local 2 // int childPosition
        start local 3 // boolean isLastChild
        start local 4 // android.view.View convertView
        start local 5 // android.view.ViewGroup parent
         0: .line 238
            aload 0 /* this */
            iload 1 /* groupPosition */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter.getChildrenCursorHelper:(IZ)Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            astore 6 /* cursorHelper */
        start local 6 // android.widget.CursorTreeAdapter$MyCursorHelper cursorHelper
         1: .line 240
            aload 6 /* cursorHelper */
            iload 2 /* childPosition */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.moveTo:(I)Landroid/database/Cursor;
            astore 7 /* cursor */
        start local 7 // android.database.Cursor cursor
         2: .line 241
            aload 7 /* cursor */
            ifnonnull 4
         3: .line 242
            new java.lang.IllegalStateException
            dup
            ldc "this should only be called when the cursor is valid"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 246
      StackMap locals: android.widget.CursorTreeAdapter$MyCursorHelper android.database.Cursor
      StackMap stack:
            aload 4 /* convertView */
            ifnonnull 7
         5: .line 247
            aload 0 /* this */
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mContext:Landroid/content/Context;
            aload 7 /* cursor */
            iload 3 /* isLastChild */
            aload 5 /* parent */
            invokevirtual android.widget.CursorTreeAdapter.newChildView:(Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;
            astore 8 /* v */
        start local 8 // android.view.View v
         6: .line 248
            goto 8
        end local 8 // android.view.View v
         7: .line 249
      StackMap locals:
      StackMap stack:
            aload 4 /* convertView */
            astore 8 /* v */
        start local 8 // android.view.View v
         8: .line 251
      StackMap locals: android.view.View
      StackMap stack:
            aload 0 /* this */
            aload 8 /* v */
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mContext:Landroid/content/Context;
            aload 7 /* cursor */
            iload 3 /* isLastChild */
            invokevirtual android.widget.CursorTreeAdapter.bindChildView:(Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V
         9: .line 252
            aload 8 /* v */
            areturn
        end local 8 // android.view.View v
        end local 7 // android.database.Cursor cursor
        end local 6 // android.widget.CursorTreeAdapter$MyCursorHelper cursorHelper
        end local 5 // android.view.ViewGroup parent
        end local 4 // android.view.View convertView
        end local 3 // boolean isLastChild
        end local 2 // int childPosition
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Landroid/widget/CursorTreeAdapter;
            0   10     1  groupPosition  I
            0   10     2  childPosition  I
            0   10     3    isLastChild  Z
            0   10     4    convertView  Landroid/view/View;
            0   10     5         parent  Landroid/view/ViewGroup;
            1   10     6   cursorHelper  Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            2   10     7         cursor  Landroid/database/Cursor;
            6    7     8              v  Landroid/view/View;
            8   10     8              v  Landroid/view/View;
    MethodParameters:
               Name  Flags
      groupPosition  
      childPosition  
      isLastChild    
      convertView    
      parent         

  protected abstract android.view.View newChildView(android.content.Context, android.database.Cursor, boolean, android.view.ViewGroup);
    descriptor: (Landroid/content/Context;Landroid/database/Cursor;ZLandroid/view/ViewGroup;)Landroid/view/View;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
             Name  Flags
      context      
      cursor       
      isLastChild  
      parent       

  protected abstract void bindChildView(android.view.View, android.content.Context, android.database.Cursor, boolean);
    descriptor: (Landroid/view/View;Landroid/content/Context;Landroid/database/Cursor;Z)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    MethodParameters:
             Name  Flags
      view         
      context      
      cursor       
      isLastChild  

  public boolean isChildSelectable(int, int);
    descriptor: (II)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=3
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
        start local 2 // int childPosition
         0: .line 281
            iconst_1
            ireturn
        end local 2 // int childPosition
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/widget/CursorTreeAdapter;
            0    1     1  groupPosition  I
            0    1     2  childPosition  I
    MethodParameters:
               Name  Flags
      groupPosition  
      childPosition  

  public boolean hasStableIds();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 285
            iconst_1
            ireturn
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/CursorTreeAdapter;

  private synchronized void releaseCursorHelpers();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 289
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mChildrenCursorHelpers:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.size:()I
            iconst_1
            isub
            istore 1 /* pos */
        start local 1 // int pos
         1: goto 4
         2: .line 290
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mChildrenCursorHelpers:Landroid/util/SparseArray;
            iload 1 /* pos */
            invokevirtual android.util.SparseArray.valueAt:(I)Ljava/lang/Object;
            checkcast android.widget.CursorTreeAdapter$MyCursorHelper
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.deactivate:()V
         3: .line 289
            iinc 1 /* pos */ -1
      StackMap locals:
      StackMap stack:
         4: iload 1 /* pos */
            ifge 2
        end local 1 // int pos
         5: .line 293
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mChildrenCursorHelpers:Landroid/util/SparseArray;
            invokevirtual android.util.SparseArray.clear:()V
         6: .line 294
            return
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/widget/CursorTreeAdapter;
            1    5     1   pos  I

  public void notifyDataSetChanged();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 298
            aload 0 /* this */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter.notifyDataSetChanged:(Z)V
         1: .line 299
            return
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/widget/CursorTreeAdapter;

  public void notifyDataSetChanged(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // boolean releaseCursors
         0: .line 310
            iload 1 /* releaseCursors */
            ifeq 2
         1: .line 311
            aload 0 /* this */
            invokevirtual android.widget.CursorTreeAdapter.releaseCursorHelpers:()V
         2: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial android.widget.BaseExpandableListAdapter.notifyDataSetChanged:()V
         3: .line 315
            return
        end local 1 // boolean releaseCursors
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Landroid/widget/CursorTreeAdapter;
            0    4     1  releaseCursors  Z
    MethodParameters:
                Name  Flags
      releaseCursors  

  public void notifyDataSetInvalidated();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 319
            aload 0 /* this */
            invokevirtual android.widget.CursorTreeAdapter.releaseCursorHelpers:()V
         1: .line 320
            aload 0 /* this */
            invokespecial android.widget.BaseExpandableListAdapter.notifyDataSetInvalidated:()V
         2: .line 321
            return
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/widget/CursorTreeAdapter;

  public void onGroupCollapsed(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
         0: .line 325
            aload 0 /* this */
            iload 1 /* groupPosition */
            invokevirtual android.widget.CursorTreeAdapter.deactivateChildrenCursorHelper:(I)V
         1: .line 326
            return
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Landroid/widget/CursorTreeAdapter;
            0    2     1  groupPosition  I
    MethodParameters:
               Name  Flags
      groupPosition  

  synchronized void deactivateChildrenCursorHelper(int);
    descriptor: (I)V
    flags: (0x0020) ACC_SYNCHRONIZED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // int groupPosition
         0: .line 335
            aload 0 /* this */
            iload 1 /* groupPosition */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter.getChildrenCursorHelper:(IZ)Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            astore 2 /* cursorHelper */
        start local 2 // android.widget.CursorTreeAdapter$MyCursorHelper cursorHelper
         1: .line 336
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mChildrenCursorHelpers:Landroid/util/SparseArray;
            iload 1 /* groupPosition */
            invokevirtual android.util.SparseArray.remove:(I)V
         2: .line 337
            aload 2 /* cursorHelper */
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.deactivate:()V
         3: .line 338
            return
        end local 2 // android.widget.CursorTreeAdapter$MyCursorHelper cursorHelper
        end local 1 // int groupPosition
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    4     0           this  Landroid/widget/CursorTreeAdapter;
            0    4     1  groupPosition  I
            1    4     2   cursorHelper  Landroid/widget/CursorTreeAdapter$MyCursorHelper;
    MethodParameters:
               Name  Flags
      groupPosition  

  public java.lang.String convertToString(android.database.Cursor);
    descriptor: (Landroid/database/Cursor;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // android.database.Cursor cursor
         0: .line 344
            aload 1 /* cursor */
            ifnonnull 1
            ldc ""
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* cursor */
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
         2: areturn
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Landroid/widget/CursorTreeAdapter;
            0    3     1  cursor  Landroid/database/Cursor;
    MethodParameters:
        Name  Flags
      cursor  

  public android.database.Cursor runQueryOnBackgroundThread(java.lang.CharSequence);
    descriptor: (Ljava/lang/CharSequence;)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // java.lang.CharSequence constraint
         0: .line 351
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mFilterQueryProvider:Landroid/widget/FilterQueryProvider;
            ifnull 2
         1: .line 352
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mFilterQueryProvider:Landroid/widget/FilterQueryProvider;
            aload 1 /* constraint */
            invokeinterface android.widget.FilterQueryProvider.runQuery:(Ljava/lang/CharSequence;)Landroid/database/Cursor;
            areturn
         2: .line 355
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.getCursor:()Landroid/database/Cursor;
            areturn
        end local 1 // java.lang.CharSequence constraint
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Landroid/widget/CursorTreeAdapter;
            0    3     1  constraint  Ljava/lang/CharSequence;
    MethodParameters:
            Name  Flags
      constraint  

  public android.widget.Filter getFilter();
    descriptor: ()Landroid/widget/Filter;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 359
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mCursorFilter:Landroid/widget/CursorFilter;
            ifnonnull 2
         1: .line 360
            aload 0 /* this */
            new android.widget.CursorFilter
            dup
            aload 0 /* this */
            invokespecial android.widget.CursorFilter.<init>:(Landroid/widget/CursorFilter$CursorFilterClient;)V
            putfield android.widget.CursorTreeAdapter.mCursorFilter:Landroid/widget/CursorFilter;
         2: .line 362
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mCursorFilter:Landroid/widget/CursorFilter;
            areturn
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/widget/CursorTreeAdapter;

  public android.widget.FilterQueryProvider getFilterQueryProvider();
    descriptor: ()Landroid/widget/FilterQueryProvider;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 369
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mFilterQueryProvider:Landroid/widget/FilterQueryProvider;
            areturn
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/CursorTreeAdapter;

  public void setFilterQueryProvider(android.widget.FilterQueryProvider);
    descriptor: (Landroid/widget/FilterQueryProvider;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // android.widget.FilterQueryProvider filterQueryProvider
         0: .line 376
            aload 0 /* this */
            aload 1 /* filterQueryProvider */
            putfield android.widget.CursorTreeAdapter.mFilterQueryProvider:Landroid/widget/FilterQueryProvider;
         1: .line 377
            return
        end local 1 // android.widget.FilterQueryProvider filterQueryProvider
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Landroid/widget/CursorTreeAdapter;
            0    2     1  filterQueryProvider  Landroid/widget/FilterQueryProvider;
    MethodParameters:
                     Name  Flags
      filterQueryProvider  

  public void changeCursor(android.database.Cursor);
    descriptor: (Landroid/database/Cursor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.widget.CursorTreeAdapter this
        start local 1 // android.database.Cursor cursor
         0: .line 383
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            aload 1 /* cursor */
            iconst_1
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.changeCursor:(Landroid/database/Cursor;Z)V
         1: .line 384
            return
        end local 1 // android.database.Cursor cursor
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/widget/CursorTreeAdapter;
            0    2     1  cursor  Landroid/database/Cursor;
    MethodParameters:
        Name  Flags
      cursor  

  public android.database.Cursor getCursor();
    descriptor: ()Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.widget.CursorTreeAdapter this
         0: .line 390
            aload 0 /* this */
            getfield android.widget.CursorTreeAdapter.mGroupCursorHelper:Landroid/widget/CursorTreeAdapter$MyCursorHelper;
            invokevirtual android.widget.CursorTreeAdapter$MyCursorHelper.getCursor:()Landroid/database/Cursor;
            areturn
        end local 0 // android.widget.CursorTreeAdapter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/widget/CursorTreeAdapter;

  public java.lang.Object getChild(int, int);
    descriptor: (II)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 1
            aload 0
            iload 1
            iload 2
            invokevirtual android.widget.CursorTreeAdapter.getChild:(II)Landroid/database/Cursor;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.Object getGroup(int);
    descriptor: (I)Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            iload 1
            invokevirtual android.widget.CursorTreeAdapter.getGroup:(I)Landroid/database/Cursor;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.CharSequence convertToString(android.database.Cursor);
    descriptor: (Landroid/database/Cursor;)Ljava/lang/CharSequence;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual android.widget.CursorTreeAdapter.convertToString:(Landroid/database/Cursor;)Ljava/lang/String;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "CursorTreeAdapter.java"
NestMembers:
  android.widget.CursorTreeAdapter$MyCursorHelper  android.widget.CursorTreeAdapter$MyCursorHelper$MyContentObserver  android.widget.CursorTreeAdapter$MyCursorHelper$MyDataSetObserver
InnerClasses:
  abstract CursorFilterClient = android.widget.CursorFilter$CursorFilterClient of android.widget.CursorFilter
  MyCursorHelper = android.widget.CursorTreeAdapter$MyCursorHelper of android.widget.CursorTreeAdapter