class com.android.mtp.MtpDatabase
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.android.mtp.MtpDatabase
  super_class: java.lang.Object
{
  private final android.database.sqlite.SQLiteDatabase mDatabase;
    descriptor: Landroid/database/sqlite/SQLiteDatabase;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.android.mtp.Mapper mMapper;
    descriptor: Lcom/android/mtp/Mapper;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  android.database.sqlite.SQLiteDatabase getSQLiteDatabase();
    descriptor: ()Landroid/database/sqlite/SQLiteDatabase;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.mtp.MtpDatabase this
         0: .line 90
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            areturn
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/mtp/MtpDatabase;

  void <init>(android.content.Context, int);
    descriptor: (Landroid/content/Context;I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // android.content.Context context
        start local 2 // int flags
         0: .line 93
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 94
            new com.android.mtp.MtpDatabase$OpenHelper
            dup
            aload 1 /* context */
            iload 2 /* flags */
            invokespecial com.android.mtp.MtpDatabase$OpenHelper.<init>:(Landroid/content/Context;I)V
            astore 3 /* helper */
        start local 3 // com.android.mtp.MtpDatabase$OpenHelper helper
         2: .line 95
            aload 0 /* this */
            aload 3 /* helper */
            invokevirtual com.android.mtp.MtpDatabase$OpenHelper.getWritableDatabase:()Landroid/database/sqlite/SQLiteDatabase;
            putfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         3: .line 96
            aload 0 /* this */
            new com.android.mtp.Mapper
            dup
            aload 0 /* this */
            invokespecial com.android.mtp.Mapper.<init>:(Lcom/android/mtp/MtpDatabase;)V
            putfield com.android.mtp.MtpDatabase.mMapper:Lcom/android/mtp/Mapper;
         4: .line 97
            return
        end local 3 // com.android.mtp.MtpDatabase$OpenHelper helper
        end local 2 // int flags
        end local 1 // android.content.Context context
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lcom/android/mtp/MtpDatabase;
            0    5     1  context  Landroid/content/Context;
            0    5     2    flags  I
            2    5     3   helper  Lcom/android/mtp/MtpDatabase$OpenHelper;
    MethodParameters:
         Name  Flags
      context  
      flags    

  void close();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.mtp.MtpDatabase this
         0: .line 100
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.close:()V
         1: .line 101
            return
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/android/mtp/MtpDatabase;

  com.android.mtp.Mapper getMapper();
    descriptor: ()Lcom/android/mtp/Mapper;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.mtp.MtpDatabase this
         0: .line 108
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mMapper:Lcom/android/mtp/Mapper;
            areturn
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/mtp/MtpDatabase;

  android.database.Cursor queryRoots(android.content.res.Resources, java.lang.String[]);
    descriptor: (Landroid/content/res/Resources;[Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
         0: .line 195
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tR cannot be resolved to a variable\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/mtp/MtpDatabase;
    MethodParameters:
             Name  Flags
      resources    
      columnNames  

  android.database.Cursor queryRootDocuments(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0000) 
    Code:
      stack=8, locals=2, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String[] columnNames
         0: .line 221
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         1: .line 222
            ldc "Documents"
         2: .line 223
            aload 1 /* columnNames */
         3: .line 224
            ldc "row_state IN (?, ?) AND document_type = ?"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 225
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         5: .line 226
            aconst_null
         6: .line 227
            aconst_null
         7: .line 228
            aconst_null
         8: .line 221
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            areturn
        end local 1 // java.lang.String[] columnNames
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    9     0         this  Lcom/android/mtp/MtpDatabase;
            0    9     1  columnNames  [Ljava/lang/String;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
             Name  Flags
      columnNames  

  android.database.Cursor queryChildDocuments(java.lang.String[], java.lang.String);
    descriptor: ([Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0000) 
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String[] columnNames
        start local 2 // java.lang.String parentDocumentId
         0: .line 238
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         1: .line 239
            ldc "Documents"
         2: .line 240
            aload 1 /* columnNames */
         3: .line 241
            ldc "row_state IN (?, ?) AND parent_document_id = ?"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 242
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            aload 2 /* parentDocumentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         5: .line 243
            aconst_null
         6: .line 244
            aconst_null
         7: .line 245
            aconst_null
         8: .line 238
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            areturn
        end local 2 // java.lang.String parentDocumentId
        end local 1 // java.lang.String[] columnNames
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lcom/android/mtp/MtpDatabase;
            0    9     1       columnNames  [Ljava/lang/String;
            0    9     2  parentDocumentId  Ljava/lang/String;
    MethodParameters:
                  Name  Flags
      columnNames       
      parentDocumentId  

  java.lang.String[] getStorageDocumentIds(java.lang.String);
    descriptor: (Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=8, locals=7, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
         0: .line 257
            aload 0 /* this */
            aload 1 /* documentId */
            invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
            getfield com.android.mtp.Identifier.mDocumentType:I
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: invokestatic com.android.internal.util.Preconditions.checkArgument:(Z)V
         3: .line 260
            aconst_null
            astore 2
            aconst_null
            astore 3
         4: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         5: .line 261
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         6: .line 262
            ldc "document_id"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         7: .line 263
            ldc "row_state IN (?, ?) AND parent_document_id = ? AND document_type = ?"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 266
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
         9: .line 267
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
        10: .line 268
            aload 1 /* documentId */
            aastore
            dup
            iconst_3
        11: .line 269
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
        12: .line 266
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
        13: .line 270
            aconst_null
        14: .line 271
            aconst_null
        15: .line 272
            aconst_null
        16: .line 260
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 4 /* cursor */
        start local 4 // android.database.Cursor cursor
        17: .line 273
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.getCount:()I
            anewarray java.lang.String
            astore 5 /* ids */
        start local 5 // java.lang.String[] ids
        18: .line 274
            iconst_0
            istore 6 /* i */
        start local 6 // int i
        19: goto 22
        20: .line 275
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.Throwable java.lang.Throwable android.database.Cursor java.lang.String[] int
      StackMap stack:
            aload 5 /* ids */
            iload 6 /* i */
            aload 4 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            aastore
        21: .line 274
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        22: aload 4 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            ifne 20
        end local 6 // int i
        23: .line 277
            aload 5 /* ids */
        24: .line 278
            aload 4 /* cursor */
            ifnull 25
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        25: .line 277
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.Throwable java.lang.Throwable android.database.Cursor java.lang.String[]
      StackMap stack: java.lang.String[]
            areturn
        end local 5 // java.lang.String[] ids
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack: java.lang.Throwable
        26: astore 2
        27: .line 278
            aload 4 /* cursor */
            ifnull 28
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 4 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        28: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        29: astore 3
            aload 2
            ifnonnull 30
            aload 3
            astore 2
            goto 31
      StackMap locals:
      StackMap stack:
        30: aload 2
            aload 3
            if_acmpeq 31
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        31: aload 2
            athrow
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   32     0        this  Lcom/android/mtp/MtpDatabase;
            0   32     1  documentId  Ljava/lang/String;
           17   28     4      cursor  Landroid/database/Cursor;
           18   26     5         ids  [Ljava/lang/String;
           19   23     6           i  I
      Exception table:
        from    to  target  type
          17    24      26  any
           4    25      29  any
          26    29      29  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  

  android.database.Cursor queryDocument(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0000) 
    Code:
      stack=9, locals=3, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
        start local 2 // java.lang.String[] projection
         0: .line 288
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         1: .line 289
            ldc "Documents"
         2: .line 290
            aload 2 /* projection */
         3: .line 291
            ldc "document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 292
            aload 1 /* documentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         5: .line 293
            aconst_null
         6: .line 294
            aconst_null
         7: .line 295
            aconst_null
         8: .line 296
            ldc "1"
         9: .line 288
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            areturn
        end local 2 // java.lang.String[] projection
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lcom/android/mtp/MtpDatabase;
            0   10     1  documentId  Ljava/lang/String;
            0   10     2  projection  [Ljava/lang/String;
    MethodParameters:
            Name  Flags
      documentId  
      projection  

  java.lang.String getDocumentIdForDevice(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=9, locals=5, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // int deviceId
         0: .line 300
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         1: .line 301
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 302
            ldc "document_id"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         3: .line 303
            ldc "document_type = ? AND device_id = ?"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 304
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iload 1 /* deviceId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         5: .line 305
            aconst_null
         6: .line 306
            aconst_null
         7: .line 307
            aconst_null
         8: .line 308
            ldc "1"
         9: .line 300
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 2 /* cursor */
        start local 2 // android.database.Cursor cursor
        10: .line 310
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            ifeq 14
        11: .line 311
            aload 2 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            astore 4
        12: .line 316
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        13: .line 311
            aload 4
            areturn
        14: .line 316
      StackMap locals: android.database.Cursor
      StackMap stack:
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        15: .line 313
            aconst_null
            areturn
        16: .line 315
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        17: .line 316
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        18: .line 317
            aload 3
            athrow
        end local 2 // android.database.Cursor cursor
        end local 1 // int deviceId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   19     0      this  Lcom/android/mtp/MtpDatabase;
            0   19     1  deviceId  I
           10   19     2    cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          10    12      16  any
    MethodParameters:
          Name  Flags
      deviceId  

  com.android.mtp.Identifier getParentIdentifier(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/android/mtp/Identifier;
    flags: (0x0000) 
    Code:
      stack=9, locals=5, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
         0: .line 327
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         1: .line 328
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 329
            ldc "parent_document_id"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         3: .line 330
            ldc "document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 331
            aload 1 /* documentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         5: .line 332
            aconst_null
         6: .line 333
            aconst_null
         7: .line 334
            aconst_null
         8: .line 335
            ldc "1"
         9: .line 327
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 2 /* cursor */
        start local 2 // android.database.Cursor cursor
        10: .line 337
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            ifeq 14
        11: .line 338
            aload 0 /* this */
            aload 2 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            invokevirtual com.android.mtp.MtpDatabase.createIdentifier:(Ljava/lang/String;)Lcom/android/mtp/Identifier;
            astore 4
        12: .line 343
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        13: .line 338
            aload 4
            areturn
        14: .line 340
      StackMap locals: android.database.Cursor
      StackMap stack:
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Cannot find a row having ID = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* documentId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 342
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        16: .line 343
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        17: .line 344
            aload 3
            athrow
        end local 2 // android.database.Cursor cursor
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/android/mtp/MtpDatabase;
            0   18     1  documentId  Ljava/lang/String;
           10   18     2      cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          10    12      15  any
          14    15      15  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  

  java.lang.String getDeviceDocumentId(int);
    descriptor: (I)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=9, locals=5, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // int deviceId
         0: .line 348
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         2: .line 349
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 350
            ldc "document_id"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         4: .line 351
            ldc "device_id = ? AND document_type = ? AND row_state != ?"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         5: .line 353
            iload 1 /* deviceId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         6: .line 354
            aconst_null
         7: .line 355
            aconst_null
         8: .line 356
            aconst_null
         9: .line 357
            ldc "1"
        10: .line 348
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 4 /* cursor */
        start local 4 // android.database.Cursor cursor
        11: .line 358
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.getCount:()I
            ifle 16
        12: .line 359
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            pop
        13: .line 360
            aload 4 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
        14: .line 364
            aload 4 /* cursor */
            ifnull 15
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        15: .line 360
      StackMap locals: com.android.mtp.MtpDatabase int java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack: java.lang.String
            areturn
        16: .line 362
      StackMap locals:
      StackMap stack:
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "The device ID not found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* deviceId */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 2
        18: .line 364
            aload 4 /* cursor */
            ifnull 19
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 4 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        19: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 3
            aload 2
            ifnonnull 21
            aload 3
            astore 2
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 2
            aload 3
            if_acmpeq 22
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        22: aload 2
            athrow
        end local 1 // int deviceId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   23     0      this  Lcom/android/mtp/MtpDatabase;
            0   23     1  deviceId  I
           11   19     4    cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          11    14      17  any
          16    17      17  any
           1    15      20  any
          16    20      20  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
          Name  Flags
      deviceId  

  java.lang.String putNewDocument(int, java.lang.String, int[], android.mtp.MtpObjectInfo, long);
    descriptor: (ILjava/lang/String;[ILandroid/mtp/MtpObjectInfo;J)Ljava/lang/String;
    flags: (0x0000) 
    Code:
      stack=7, locals=12, args_size=6
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // int deviceId
        start local 2 // java.lang.String parentDocumentId
        start local 3 // int[] operationsSupported
        start local 4 // android.mtp.MtpObjectInfo info
        start local 5 // long size
         0: .line 380
            new android.content.ContentValues
            dup
            invokespecial android.content.ContentValues.<init>:()V
            astore 7 /* values */
        start local 7 // android.content.ContentValues values
         1: .line 382
            aload 7 /* values */
            iload 1 /* deviceId */
            aload 2 /* parentDocumentId */
            aload 3 /* operationsSupported */
            aload 4 /* info */
            lload 5 /* size */
         2: .line 381
            invokestatic com.android.mtp.MtpDatabase.getObjectDocumentValues:(Landroid/content/ContentValues;ILjava/lang/String;[ILandroid/mtp/MtpObjectInfo;J)V
         3: .line 383
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         4: .line 385
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            ldc "Documents"
            aconst_null
            aload 7 /* values */
            invokevirtual android.database.sqlite.SQLiteDatabase.insert:(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
            lstore 8 /* id */
        start local 8 // long id
         5: .line 386
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
         6: .line 387
            lload 8 /* id */
            invokestatic java.lang.Long.toString:(J)Ljava/lang/String;
            astore 11
         7: .line 389
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
         8: .line 387
            aload 11
            areturn
        end local 8 // long id
         9: .line 388
      StackMap locals: com.android.mtp.MtpDatabase int java.lang.String int[] android.mtp.MtpObjectInfo long android.content.ContentValues
      StackMap stack: java.lang.Throwable
            astore 10
        10: .line 389
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        11: .line 390
            aload 10
            athrow
        end local 7 // android.content.ContentValues values
        end local 5 // long size
        end local 4 // android.mtp.MtpObjectInfo info
        end local 3 // int[] operationsSupported
        end local 2 // java.lang.String parentDocumentId
        end local 1 // int deviceId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   12     0                 this  Lcom/android/mtp/MtpDatabase;
            0   12     1             deviceId  I
            0   12     2     parentDocumentId  Ljava/lang/String;
            0   12     3  operationsSupported  [I
            0   12     4                 info  Landroid/mtp/MtpObjectInfo;
            0   12     5                 size  J
            1   12     7               values  Landroid/content/ContentValues;
            5    9     8                   id  J
      Exception table:
        from    to  target  type
           4     7       9  any
    MethodParameters:
                     Name  Flags
      deviceId             
      parentDocumentId     
      operationsSupported  
      info                 
      size                 

  void deleteDocument(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
         0: .line 398
            aload 0 /* this */
            ldc "document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* documentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
            invokevirtual com.android.mtp.MtpDatabase.deleteDocumentsAndRootsRecursively:(Ljava/lang/String;[Ljava/lang/String;)Z
            pop
         1: .line 399
            return
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/android/mtp/MtpDatabase;
            0    2     1  documentId  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      documentId  

  com.android.mtp.Identifier createIdentifier(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/android/mtp/Identifier;
    flags: (0x0000) 
    Code:
      stack=9, locals=5, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
         0: .line 409
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         1: .line 410
            ldc "Documents"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 411
            ldc "device_id"
            aastore
            dup
            iconst_1
         3: .line 412
            ldc "storage_id"
            aastore
            dup
            iconst_2
         4: .line 413
            ldc "object_handle"
            aastore
            dup
            iconst_3
         5: .line 414
            ldc "document_type"
            aastore
         6: .line 411
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         7: .line 415
            ldc "document_id = ? AND row_state IN (?, ?)"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
         8: .line 416
            aload 1 /* documentId */
            aastore
            dup
            iconst_1
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         9: .line 417
            aconst_null
        10: .line 418
            aconst_null
        11: .line 419
            aconst_null
        12: .line 420
            ldc "1"
        13: .line 409
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 2 /* cursor */
        start local 2 // android.database.Cursor cursor
        14: .line 422
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.getCount:()I
            ifne 16
        15: .line 423
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "ID \""
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* documentId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\" is not found."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 425
      StackMap locals: android.database.Cursor
      StackMap stack:
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            pop
        17: .line 426
            new com.android.mtp.Identifier
            dup
        18: .line 427
            aload 2 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getInt:(I)I
        19: .line 428
            aload 2 /* cursor */
            iconst_1
            invokeinterface android.database.Cursor.getInt:(I)I
        20: .line 429
            aload 2 /* cursor */
            iconst_2
            invokeinterface android.database.Cursor.getInt:(I)I
        21: .line 430
            aload 1 /* documentId */
        22: .line 431
            aload 2 /* cursor */
            iconst_3
            invokeinterface android.database.Cursor.getInt:(I)I
        23: .line 426
            invokespecial com.android.mtp.Identifier.<init>:(IIILjava/lang/String;I)V
            astore 4
        24: .line 434
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        25: .line 426
            aload 4
            areturn
        26: .line 433
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 3
        27: .line 434
            aload 2 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        28: .line 435
            aload 3
            athrow
        end local 2 // android.database.Cursor cursor
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   29     0        this  Lcom/android/mtp/MtpDatabase;
            0   29     1  documentId  Ljava/lang/String;
           14   29     2      cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          14    24      26  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  

  boolean deleteDocumentsAndRootsRecursively(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=8, locals=8, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String selection
        start local 2 // java.lang.String[] args
         0: .line 445
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         1: .line 447
            iconst_0
            istore 3 /* changed */
        start local 3 // boolean changed
         2: .line 448
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         3: .line 449
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         4: .line 450
            ldc "document_id"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         5: .line 451
            aload 1 /* selection */
         6: .line 452
            aload 2 /* args */
         7: .line 453
            aconst_null
         8: .line 454
            aconst_null
         9: .line 455
            aconst_null
        10: .line 448
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 4 /* cursor */
        start local 4 // android.database.Cursor cursor
        11: .line 457
            goto 18
        12: .line 458
      StackMap locals: int android.database.Cursor
      StackMap stack:
            aload 0 /* this */
        13: .line 459
            ldc "parent_document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        14: .line 460
            aload 4 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
        15: .line 458
            invokevirtual com.android.mtp.MtpDatabase.deleteDocumentsAndRootsRecursively:(Ljava/lang/String;[Ljava/lang/String;)Z
        16: .line 460
            ifeq 18
        17: .line 461
            iconst_1
            istore 3 /* changed */
        18: .line 457
      StackMap locals:
      StackMap stack:
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            ifne 12
        19: .line 464
            goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 5
        21: .line 465
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        22: .line 466
            aload 5
            athrow
        23: .line 465
      StackMap locals:
      StackMap stack:
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        24: .line 467
            aload 0 /* this */
            aload 1 /* selection */
            aload 2 /* args */
            invokevirtual com.android.mtp.MtpDatabase.deleteDocumentsAndRoots:(Ljava/lang/String;[Ljava/lang/String;)Z
            ifeq 26
        25: .line 468
            iconst_1
            istore 3 /* changed */
        26: .line 470
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
        27: .line 471
            iload 3 /* changed */
            istore 7
        28: .line 473
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        29: .line 471
            iload 7
            ireturn
        end local 4 // android.database.Cursor cursor
        end local 3 // boolean changed
        30: .line 472
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.String[]
      StackMap stack: java.lang.Throwable
            astore 6
        31: .line 473
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        32: .line 474
            aload 6
            athrow
        end local 2 // java.lang.String[] args
        end local 1 // java.lang.String selection
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   33     0       this  Lcom/android/mtp/MtpDatabase;
            0   33     1  selection  Ljava/lang/String;
            0   33     2       args  [Ljava/lang/String;
            2   30     3    changed  Z
           11   30     4     cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          11    20      20  any
           1    28      30  any
    MethodParameters:
           Name  Flags
      selection  
      args       

  boolean disconnectDocumentsRecursively(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=8, locals=9, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String selection
        start local 2 // java.lang.String[] args
         0: .line 484
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         1: .line 486
            iconst_0
            istore 3 /* changed */
        start local 3 // boolean changed
         2: .line 487
            aconst_null
            astore 4
            aconst_null
            astore 5
         3: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         4: .line 488
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         5: .line 489
            ldc "document_id"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         6: .line 490
            aload 1 /* selection */
         7: .line 491
            aload 2 /* args */
         8: .line 492
            aconst_null
         9: .line 493
            aconst_null
        10: .line 494
            aconst_null
        11: .line 487
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 6 /* cursor */
        start local 6 // android.database.Cursor cursor
        12: .line 495
            goto 19
        13: .line 496
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.String[] int java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack:
            aload 0 /* this */
        14: .line 497
            ldc "parent_document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        15: .line 498
            aload 6 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
        16: .line 496
            invokevirtual com.android.mtp.MtpDatabase.disconnectDocumentsRecursively:(Ljava/lang/String;[Ljava/lang/String;)Z
        17: .line 498
            ifeq 19
        18: .line 499
            iconst_1
            istore 3 /* changed */
        19: .line 495
      StackMap locals:
      StackMap stack:
            aload 6 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            ifne 13
        20: .line 502
            aload 6 /* cursor */
            ifnull 26
            aload 6 /* cursor */
            invokeinterface android.database.Cursor.close:()V
            goto 26
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: astore 4
            aload 6 /* cursor */
            ifnull 22
            aload 6 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 6 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        22: aload 4
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 5
            aload 4
            ifnonnull 24
            aload 5
            astore 4
            goto 25
      StackMap locals:
      StackMap stack:
        24: aload 4
            aload 5
            if_acmpeq 25
            aload 4
            aload 5
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        25: aload 4
            athrow
        26: .line 503
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* selection */
            aload 2 /* args */
            invokevirtual com.android.mtp.MtpDatabase.disconnectDocuments:(Ljava/lang/String;[Ljava/lang/String;)Z
            ifeq 28
        27: .line 504
            iconst_1
            istore 3 /* changed */
        28: .line 506
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
        29: .line 507
            iload 3 /* changed */
            istore 8
        30: .line 509
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        31: .line 507
            iload 8
            ireturn
        end local 3 // boolean changed
        32: .line 508
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.String[]
      StackMap stack: java.lang.Throwable
            astore 7
        33: .line 509
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        34: .line 510
            aload 7
            athrow
        end local 2 // java.lang.String[] args
        end local 1 // java.lang.String selection
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   35     0       this  Lcom/android/mtp/MtpDatabase;
            0   35     1  selection  Ljava/lang/String;
            0   35     2       args  [Ljava/lang/String;
            2   32     3    changed  Z
           12   22     6     cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          12    20      21  any
           3    23      23  any
           1    30      32  any
    MethodParameters:
           Name  Flags
      selection  
      args       

  boolean deleteDocumentsAndRoots(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=12, locals=6, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String selection
        start local 2 // java.lang.String[] args
         0: .line 514
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         1: .line 516
            iconst_0
            istore 3 /* deleted */
        start local 3 // int deleted
         2: .line 517
            iload 3 /* deleted */
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         3: .line 518
            ldc "RootExtra"
         4: .line 519
            new java.lang.StringBuilder
            dup
            ldc "root_id IN ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 520
            iconst_0
         6: .line 521
            ldc "Documents"
         7: .line 522
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc "document_id"
            aastore
         8: .line 523
            aload 1 /* selection */
         9: .line 524
            aconst_null
        10: .line 525
            aconst_null
        11: .line 526
            aconst_null
        12: .line 527
            aconst_null
        13: .line 519
            invokestatic android.database.sqlite.SQLiteQueryBuilder.buildQueryString:(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: .line 527
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        15: .line 519
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        16: .line 528
            aload 2 /* args */
        17: .line 517
            invokevirtual android.database.sqlite.SQLiteDatabase.delete:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
            iadd
            istore 3 /* deleted */
        18: .line 529
            iload 3 /* deleted */
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            ldc "Documents"
            aload 1 /* selection */
            aload 2 /* args */
            invokevirtual android.database.sqlite.SQLiteDatabase.delete:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
            iadd
            istore 3 /* deleted */
        19: .line 530
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
        20: .line 532
            iload 3 /* deleted */
            ifeq 21
            iconst_1
            goto 22
      StackMap locals: int
      StackMap stack:
        21: iconst_0
      StackMap locals:
      StackMap stack: int
        22: istore 5
        23: .line 534
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        24: .line 532
            iload 5
            ireturn
        end local 3 // int deleted
        25: .line 533
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.String[]
      StackMap stack: java.lang.Throwable
            astore 4
        26: .line 534
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        27: .line 535
            aload 4
            athrow
        end local 2 // java.lang.String[] args
        end local 1 // java.lang.String selection
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   28     0       this  Lcom/android/mtp/MtpDatabase;
            0   28     1  selection  Ljava/lang/String;
            0   28     2       args  [Ljava/lang/String;
            2   25     3    deleted  I
      Exception table:
        from    to  target  type
           1    23      25  any
    MethodParameters:
           Name  Flags
      selection  
      args       

  boolean disconnectDocuments(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Z
    flags: (0x0000) 
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String selection
        start local 2 // java.lang.String[] args
         0: .line 539
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         1: .line 541
            new android.content.ContentValues
            dup
            invokespecial android.content.ContentValues.<init>:()V
            astore 3 /* values */
        start local 3 // android.content.ContentValues values
         2: .line 542
            aload 3 /* values */
            ldc "row_state"
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
         3: .line 543
            aload 3 /* values */
            ldc "device_id"
            invokevirtual android.content.ContentValues.putNull:(Ljava/lang/String;)V
         4: .line 544
            aload 3 /* values */
            ldc "storage_id"
            invokevirtual android.content.ContentValues.putNull:(Ljava/lang/String;)V
         5: .line 545
            aload 3 /* values */
            ldc "object_handle"
            invokevirtual android.content.ContentValues.putNull:(Ljava/lang/String;)V
         6: .line 546
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            ldc "Documents"
            aload 3 /* values */
            aload 1 /* selection */
            aload 2 /* args */
            invokevirtual android.database.sqlite.SQLiteDatabase.update:(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
            ifeq 7
            iconst_1
            goto 8
      StackMap locals: android.content.ContentValues
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: istore 4 /* updated */
        start local 4 // boolean updated
         9: .line 547
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
        10: .line 548
            iload 4 /* updated */
            istore 6
        11: .line 550
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        12: .line 548
            iload 6
            ireturn
        end local 4 // boolean updated
        end local 3 // android.content.ContentValues values
        13: .line 549
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String java.lang.String[]
      StackMap stack: java.lang.Throwable
            astore 5
        14: .line 550
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        15: .line 551
            aload 5
            athrow
        end local 2 // java.lang.String[] args
        end local 1 // java.lang.String selection
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   16     0       this  Lcom/android/mtp/MtpDatabase;
            0   16     1  selection  Ljava/lang/String;
            0   16     2       args  [Ljava/lang/String;
            2   13     3     values  Landroid/content/ContentValues;
            9   13     4    updated  Z
      Exception table:
        from    to  target  type
           1    11      13  any
    MethodParameters:
           Name  Flags
      selection  
      args       

  int getRowState(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0000) 
    Code:
      stack=8, locals=5, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
         0: .line 555
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         2: .line 556
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 557
            ldc "row_state"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         4: .line 558
            ldc "document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         5: .line 559
            aload 1 /* documentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         6: .line 560
            aconst_null
         7: .line 561
            aconst_null
         8: .line 562
            aconst_null
         9: .line 555
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 4 /* cursor */
        start local 4 // android.database.Cursor cursor
        10: .line 563
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.getCount:()I
            ifne 12
        11: .line 564
            new java.io.FileNotFoundException
            dup
            invokespecial java.io.FileNotFoundException.<init>:()V
            athrow
        12: .line 566
      StackMap locals: java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack:
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            pop
        13: .line 567
            aload 4 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getInt:(I)I
        14: .line 568
            aload 4 /* cursor */
            ifnull 15
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        15: .line 567
      StackMap locals:
      StackMap stack: int
            ireturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 2
        17: .line 568
            aload 4 /* cursor */
            ifnull 18
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 4 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        18: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: astore 3
            aload 2
            ifnonnull 20
            aload 3
            astore 2
            goto 21
      StackMap locals:
      StackMap stack:
        20: aload 2
            aload 3
            if_acmpeq 21
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        21: aload 2
            athrow
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   22     0        this  Lcom/android/mtp/MtpDatabase;
            0   22     1  documentId  Ljava/lang/String;
           10   18     4      cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          10    14      16  any
           1    15      19  any
          16    19      19  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  

  void writeRowSnapshot(java.lang.String, android.content.ContentValues);
    descriptor: (Ljava/lang/String;Landroid/content/ContentValues;)V
    flags: (0x0000) 
    Code:
      stack=9, locals=6, args_size=3
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
        start local 2 // android.content.ContentValues values
         0: .line 572
            aconst_null
            astore 3
            aconst_null
            astore 4
         1: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         2: .line 573
            getstatic com.android.mtp.MtpDatabaseConstants.JOIN_ROOTS:Ljava/lang/String;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 574
            ldc "*"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         4: .line 575
            ldc "document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         5: .line 576
            aload 1 /* documentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         6: .line 577
            aconst_null
         7: .line 578
            aconst_null
         8: .line 579
            aconst_null
         9: .line 580
            ldc "1"
        10: .line 572
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 5 /* cursor */
        start local 5 // android.database.Cursor cursor
        11: .line 581
            aload 5 /* cursor */
            invokeinterface android.database.Cursor.getCount:()I
            ifne 13
        12: .line 582
            new java.io.FileNotFoundException
            dup
            invokespecial java.io.FileNotFoundException.<init>:()V
            athrow
        13: .line 584
      StackMap locals: java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack:
            aload 5 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            pop
        14: .line 585
            aload 2 /* values */
            invokevirtual android.content.ContentValues.clear:()V
        15: .line 586
            aload 5 /* cursor */
            aload 2 /* values */
            invokestatic android.database.DatabaseUtils.cursorRowToContentValues:(Landroid/database/Cursor;Landroid/content/ContentValues;)V
        16: .line 587
            aload 5 /* cursor */
            ifnull 22
            aload 5 /* cursor */
            invokeinterface android.database.Cursor.close:()V
            goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        17: astore 3
            aload 5 /* cursor */
            ifnull 18
            aload 5 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 5 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        18: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        19: astore 4
            aload 3
            ifnonnull 20
            aload 4
            astore 3
            goto 21
      StackMap locals:
      StackMap stack:
        20: aload 3
            aload 4
            if_acmpeq 21
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        21: aload 3
            athrow
        22: .line 588
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.content.ContentValues values
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   23     0        this  Lcom/android/mtp/MtpDatabase;
            0   23     1  documentId  Ljava/lang/String;
            0   23     2      values  Landroid/content/ContentValues;
           11   18     5      cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          11    16      17  any
           1    19      19  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  
      values      

  void updateObject(java.lang.String, int, java.lang.String, int[], android.mtp.MtpObjectInfo, java.lang.Long);
    descriptor: (Ljava/lang/String;ILjava/lang/String;[ILandroid/mtp/MtpObjectInfo;Ljava/lang/Long;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=9, args_size=7
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // java.lang.String documentId
        start local 2 // int deviceId
        start local 3 // java.lang.String parentId
        start local 4 // int[] operationsSupported
        start local 5 // android.mtp.MtpObjectInfo info
        start local 6 // java.lang.Long size
         0: .line 592
            new android.content.ContentValues
            dup
            invokespecial android.content.ContentValues.<init>:()V
            astore 7 /* values */
        start local 7 // android.content.ContentValues values
         1: .line 593
            aload 7 /* values */
            iload 2 /* deviceId */
            aload 3 /* parentId */
            aload 4 /* operationsSupported */
            aload 5 /* info */
            aload 6 /* size */
            invokevirtual java.lang.Long.longValue:()J
            invokestatic com.android.mtp.MtpDatabase.getObjectDocumentValues:(Landroid/content/ContentValues;ILjava/lang/String;[ILandroid/mtp/MtpObjectInfo;J)V
         2: .line 595
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         3: .line 597
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         4: .line 598
            ldc "Documents"
         5: .line 599
            aload 7 /* values */
         6: .line 600
            ldc "document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 601
            aload 1 /* documentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         8: .line 597
            invokevirtual android.database.sqlite.SQLiteDatabase.update:(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
            pop
         9: .line 602
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
        10: .line 603
            goto 14
      StackMap locals: com.android.mtp.MtpDatabase java.lang.String int java.lang.String int[] android.mtp.MtpObjectInfo java.lang.Long android.content.ContentValues
      StackMap stack: java.lang.Throwable
        11: astore 8
        12: .line 604
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        13: .line 605
            aload 8
            athrow
        14: .line 604
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        15: .line 606
            return
        end local 7 // android.content.ContentValues values
        end local 6 // java.lang.Long size
        end local 5 // android.mtp.MtpObjectInfo info
        end local 4 // int[] operationsSupported
        end local 3 // java.lang.String parentId
        end local 2 // int deviceId
        end local 1 // java.lang.String documentId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   16     0                 this  Lcom/android/mtp/MtpDatabase;
            0   16     1           documentId  Ljava/lang/String;
            0   16     2             deviceId  I
            0   16     3             parentId  Ljava/lang/String;
            0   16     4  operationsSupported  [I
            0   16     5                 info  Landroid/mtp/MtpObjectInfo;
            0   16     6                 size  Ljava/lang/Long;
            1   16     7               values  Landroid/content/ContentValues;
      Exception table:
        from    to  target  type
           3    11      11  any
    MethodParameters:
                     Name  Flags
      documentId           
      deviceId             
      parentId             
      operationsSupported  
      info                 
      size                 

  com.android.mtp.Identifier getUnmappedDocumentsParent(int);
    descriptor: (I)Lcom/android/mtp/Identifier;
    flags: (0x0000) 
    Code:
      stack=9, locals=5, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // int deviceId
         0: .line 624
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         2: .line 625
            ldc "Documents AS child INNER JOIN Documents AS parent ON child.parent_document_id = parent.document_id"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 626
            ldc "parent.device_id"
            aastore
            dup
            iconst_1
         4: .line 627
            ldc "parent.storage_id"
            aastore
            dup
            iconst_2
         5: .line 628
            ldc "parent.object_handle"
            aastore
            dup
            iconst_3
         6: .line 629
            ldc "parent.document_id"
            aastore
            dup
            iconst_4
         7: .line 630
            ldc "parent.document_type"
            aastore
         8: .line 626
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
         9: .line 631
            ldc "parent.device_id = ? AND parent.row_state IN (?, ?) AND parent.document_type != ? AND child.row_state = ?"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
        10: .line 632
            iload 1 /* deviceId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_3
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_4
        11: .line 633
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
        12: .line 632
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
        13: .line 634
            aconst_null
        14: .line 635
            aconst_null
        15: .line 636
            aconst_null
        16: .line 637
            ldc "1"
        17: .line 624
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 4 /* cursor */
        start local 4 // android.database.Cursor cursor
        18: .line 638
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.getCount:()I
            ifne 21
        19: .line 648
            aload 4 /* cursor */
            ifnull 20
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        20: .line 639
      StackMap locals: java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack:
            aconst_null
            areturn
        21: .line 641
      StackMap locals:
      StackMap stack:
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            pop
        22: .line 642
            new com.android.mtp.Identifier
            dup
        23: .line 643
            aload 4 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getInt:(I)I
        24: .line 644
            aload 4 /* cursor */
            iconst_1
            invokeinterface android.database.Cursor.getInt:(I)I
        25: .line 645
            aload 4 /* cursor */
            iconst_2
            invokeinterface android.database.Cursor.getInt:(I)I
        26: .line 646
            aload 4 /* cursor */
            iconst_3
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
        27: .line 647
            aload 4 /* cursor */
            iconst_4
            invokeinterface android.database.Cursor.getInt:(I)I
        28: .line 642
            invokespecial com.android.mtp.Identifier.<init>:(IIILjava/lang/String;I)V
        29: .line 648
            aload 4 /* cursor */
            ifnull 30
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        30: .line 642
      StackMap locals:
      StackMap stack: com.android.mtp.Identifier
            areturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
        31: astore 2
        32: .line 648
            aload 4 /* cursor */
            ifnull 33
            aload 4 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 4 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        33: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        34: astore 3
            aload 2
            ifnonnull 35
            aload 3
            astore 2
            goto 36
      StackMap locals:
      StackMap stack:
        35: aload 2
            aload 3
            if_acmpeq 36
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        36: aload 2
            athrow
        end local 1 // int deviceId
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   37     0      this  Lcom/android/mtp/MtpDatabase;
            0   37     1  deviceId  I
           18   33     4    cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          18    19      31  any
          21    29      31  any
           1    20      34  any
          21    30      34  any
          31    34      34  any
    MethodParameters:
          Name  Flags
      deviceId  

  void cleanDatabase(android.net.Uri[]);
    descriptor: ([Landroid/net/Uri;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=12, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // android.net.Uri[] outgoingPersistedUris
         0: .line 655
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         1: .line 657
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* ids */
        start local 2 // java.util.Set ids
         2: .line 658
            aload 1 /* outgoingPersistedUris */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 30
      StackMap locals: com.android.mtp.MtpDatabase android.net.Uri[] java.util.Set top int int android.net.Uri[]
      StackMap stack:
         3: aload 6
            iload 4
            aaload
            astore 3 /* uri */
        start local 3 // android.net.Uri uri
         4: .line 659
            aload 3 /* uri */
            invokestatic android.provider.DocumentsContract.getDocumentId:(Landroid/net/Uri;)Ljava/lang/String;
            astore 7 /* documentId */
        start local 7 // java.lang.String documentId
         5: .line 660
            goto 28
         6: .line 661
      StackMap locals: com.android.mtp.MtpDatabase android.net.Uri[] java.util.Set android.net.Uri int int android.net.Uri[] java.lang.String
      StackMap stack:
            aload 2 /* ids */
            aload 7 /* documentId */
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifeq 8
         7: .line 662
            goto 29
         8: .line 664
      StackMap locals:
      StackMap stack:
            aload 2 /* ids */
            aload 7 /* documentId */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         9: .line 665
            aconst_null
            astore 8
            aconst_null
            astore 9
        10: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
        11: .line 666
            ldc "Documents"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        12: .line 667
            ldc "parent_document_id"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
        13: .line 668
            ldc "document_id = ?"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        14: .line 669
            aload 7 /* documentId */
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
        15: .line 670
            aconst_null
        16: .line 671
            aconst_null
        17: .line 672
            aconst_null
        18: .line 665
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 10 /* cursor */
        start local 10 // android.database.Cursor cursor
        19: .line 673
            aload 10 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            ifeq 20
            aload 10 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getString:(I)Ljava/lang/String;
            goto 21
      StackMap locals: java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack:
        20: aconst_null
      StackMap locals:
      StackMap stack: java.lang.String
        21: astore 7 /* documentId */
        22: .line 674
            aload 10 /* cursor */
            ifnull 28
            aload 10 /* cursor */
            invokeinterface android.database.Cursor.close:()V
            goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        23: astore 8
            aload 10 /* cursor */
            ifnull 24
            aload 10 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 10 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        24: aload 8
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        25: astore 9
            aload 8
            ifnonnull 26
            aload 9
            astore 8
            goto 27
      StackMap locals:
      StackMap stack:
        26: aload 8
            aload 9
            if_acmpeq 27
            aload 8
            aload 9
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        27: aload 8
            athrow
        28: .line 660
      StackMap locals:
      StackMap stack:
            aload 7 /* documentId */
            ifnonnull 6
        end local 7 // java.lang.String documentId
        end local 3 // android.net.Uri uri
        29: .line 658
      StackMap locals: com.android.mtp.MtpDatabase android.net.Uri[] java.util.Set top int int android.net.Uri[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        30: iload 4
            iload 5
            if_icmplt 3
        31: .line 677
            aload 0 /* this */
        32: .line 678
            new java.lang.StringBuilder
            dup
            ldc "document_id NOT IN "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* ids */
            invokestatic com.android.mtp.MtpDatabase.getIdList:(Ljava/util/Set;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aconst_null
        33: .line 677
            invokevirtual com.android.mtp.MtpDatabase.deleteDocumentsAndRoots:(Ljava/lang/String;[Ljava/lang/String;)Z
            pop
        34: .line 679
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
        end local 2 // java.util.Set ids
        35: .line 680
            goto 39
      StackMap locals: com.android.mtp.MtpDatabase android.net.Uri[]
      StackMap stack: java.lang.Throwable
        36: astore 11
        37: .line 681
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        38: .line 682
            aload 11
            athrow
        39: .line 681
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        40: .line 683
            return
        end local 1 // android.net.Uri[] outgoingPersistedUris
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   41     0                   this  Lcom/android/mtp/MtpDatabase;
            0   41     1  outgoingPersistedUris  [Landroid/net/Uri;
            2   35     2                    ids  Ljava/util/Set<Ljava/lang/String;>;
            4   29     3                    uri  Landroid/net/Uri;
            5   29     7             documentId  Ljava/lang/String;
           19   24    10                 cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
          19    22      23  any
          10    25      25  any
           1    36      36  any
    MethodParameters:
                       Name  Flags
      outgoingPersistedUris  

  int getLastBootCount();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=8, locals=4, args_size=1
        start local 0 // com.android.mtp.MtpDatabase this
         0: .line 686
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
         2: .line 687
            ldc "LastBootCount"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "value"
            aastore
            invokestatic com.android.mtp.MtpDatabase.strings:([Ljava/lang/Object;)[Ljava/lang/String;
            aconst_null
            aconst_null
            aconst_null
            aconst_null
            aconst_null
         3: .line 686
            invokevirtual android.database.sqlite.SQLiteDatabase.query:(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
            astore 3 /* cursor */
        start local 3 // android.database.Cursor cursor
         4: .line 688
            aload 3 /* cursor */
            invokeinterface android.database.Cursor.moveToNext:()Z
            ifeq 8
         5: .line 689
            aload 3 /* cursor */
            iconst_0
            invokeinterface android.database.Cursor.getInt:(I)I
         6: .line 693
            aload 3 /* cursor */
            ifnull 7
            aload 3 /* cursor */
            invokeinterface android.database.Cursor.close:()V
         7: .line 689
      StackMap locals: com.android.mtp.MtpDatabase java.lang.Throwable java.lang.Throwable android.database.Cursor
      StackMap stack: int
            ireturn
         8: .line 693
      StackMap locals:
      StackMap stack:
            aload 3 /* cursor */
            ifnull 9
            aload 3 /* cursor */
            invokeinterface android.database.Cursor.close:()V
         9: .line 691
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 1
        11: .line 693
            aload 3 /* cursor */
            ifnull 12
            aload 3 /* cursor */
            invokeinterface android.database.Cursor.close:()V
        end local 3 // android.database.Cursor cursor
      StackMap locals:
      StackMap stack:
        12: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 2
            aload 1
            ifnonnull 14
            aload 2
            astore 1
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 1
            aload 2
            if_acmpeq 15
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 1
            athrow
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lcom/android/mtp/MtpDatabase;
            4   12     3  cursor  Landroid/database/Cursor;
      Exception table:
        from    to  target  type
           4     6      10  any
           1     7      13  any
           8     9      13  any
          10    13      13  any

  void setLastBootCount(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.android.mtp.MtpDatabase this
        start local 1 // int value
         0: .line 697
            iload 1 /* value */
            ldc "Boot count must not be negative."
            invokestatic com.android.internal.util.Preconditions.checkArgumentNonnegative:(ILjava/lang/String;)I
            pop
         1: .line 698
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.beginTransaction:()V
         2: .line 700
            new android.content.ContentValues
            dup
            invokespecial android.content.ContentValues.<init>:()V
            astore 2 /* values */
        start local 2 // android.content.ContentValues values
         3: .line 701
            aload 2 /* values */
            ldc "value"
            iload 1 /* value */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
         4: .line 702
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            ldc "LastBootCount"
            aconst_null
            aconst_null
            invokevirtual android.database.sqlite.SQLiteDatabase.delete:(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
            pop
         5: .line 703
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            ldc "LastBootCount"
            aconst_null
            aload 2 /* values */
            invokevirtual android.database.sqlite.SQLiteDatabase.insert:(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
            pop2
         6: .line 704
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.setTransactionSuccessful:()V
        end local 2 // android.content.ContentValues values
         7: .line 705
            goto 11
      StackMap locals:
      StackMap stack: java.lang.Throwable
         8: astore 3
         9: .line 706
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        10: .line 707
            aload 3
            athrow
        11: .line 706
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.mtp.MtpDatabase.mDatabase:Landroid/database/sqlite/SQLiteDatabase;
            invokevirtual android.database.sqlite.SQLiteDatabase.endTransaction:()V
        12: .line 708
            return
        end local 1 // int value
        end local 0 // com.android.mtp.MtpDatabase this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   13     0    this  Lcom/android/mtp/MtpDatabase;
            0   13     1   value  I
            3    7     2  values  Landroid/content/ContentValues;
      Exception table:
        from    to  target  type
           2     8       8  any
    MethodParameters:
       Name  Flags
      value  

  static void deleteDatabase(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.content.Context context
         0: .line 736
            aload 0 /* context */
            ldc "database"
            invokevirtual android.content.Context.deleteDatabase:(Ljava/lang/String;)Z
            pop
         1: .line 737
            return
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0  context  Landroid/content/Context;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.VisibleForTesting()
    MethodParameters:
         Name  Flags
      context  

  static void getDeviceDocumentValues(android.content.ContentValues, android.content.ContentValues, com.android.mtp.MtpDeviceRecord);
    descriptor: (Landroid/content/ContentValues;Landroid/content/ContentValues;Lcom/android/mtp/MtpDeviceRecord;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
         0: .line 755
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tR cannot be resolved to a variable\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
             Name  Flags
      values       
      extraValues  
      device       

  static void getStorageDocumentValues(android.content.ContentValues, android.content.ContentValues, java.lang.String, int[], com.android.mtp.MtpRoot);
    descriptor: (Landroid/content/ContentValues;Landroid/content/ContentValues;Ljava/lang/String;[ILcom/android/mtp/MtpRoot;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=5, args_size=5
         0: .line 798
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tR cannot be resolved to a variable\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
                     Name  Flags
      values               
      extraValues          
      parentDocumentId     
      operationsSupported  
      root                 

  static void getObjectDocumentValues(android.content.ContentValues, int, java.lang.String, int[], android.mtp.MtpObjectInfo, long);
    descriptor: (Landroid/content/ContentValues;ILjava/lang/String;[ILandroid/mtp/MtpObjectInfo;J)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=8, locals=8, args_size=6
        start local 0 // android.content.ContentValues values
        start local 1 // int deviceId
        start local 2 // java.lang.String parentId
        start local 3 // int[] operationsSupported
        start local 4 // android.mtp.MtpObjectInfo info
        start local 5 // long size
         0: .line 824
            aload 0 /* values */
            invokevirtual android.content.ContentValues.clear:()V
         1: .line 825
            aload 4 /* info */
            invokestatic com.android.mtp.MtpDatabase.getMimeType:(Landroid/mtp/MtpObjectInfo;)Ljava/lang/String;
            astore 7 /* mimeType */
        start local 7 // java.lang.String mimeType
         2: .line 826
            aload 0 /* values */
            ldc "device_id"
            iload 1 /* deviceId */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
         3: .line 827
            aload 0 /* values */
            ldc "storage_id"
            aload 4 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getStorageId:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
         4: .line 828
            aload 0 /* values */
            ldc "object_handle"
            aload 4 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getObjectHandle:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
         5: .line 829
            aload 0 /* values */
            ldc "parent_document_id"
            aload 2 /* parentId */
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/String;)V
         6: .line 830
            aload 0 /* values */
            ldc "row_state"
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
         7: .line 831
            aload 0 /* values */
            ldc "document_type"
            iconst_2
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
         8: .line 832
            aload 0 /* values */
            ldc "mime_type"
            aload 7 /* mimeType */
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/String;)V
         9: .line 833
            aload 0 /* values */
            ldc "_display_name"
            aload 4 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getName:()Ljava/lang/String;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/String;)V
        10: .line 834
            aload 0 /* values */
            ldc "summary"
            invokevirtual android.content.ContentValues.putNull:(Ljava/lang/String;)V
        11: .line 835
            aload 0 /* values */
        12: .line 836
            ldc "last_modified"
        13: .line 837
            aload 4 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getDateModified:()J
            lconst_0
            lcmp
            ifeq 14
            aload 4 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getDateModified:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            goto 15
      StackMap locals: android.content.ContentValues int java.lang.String int[] android.mtp.MtpObjectInfo long java.lang.String
      StackMap stack: android.content.ContentValues java.lang.String
        14: aconst_null
        15: .line 835
      StackMap locals: android.content.ContentValues int java.lang.String int[] android.mtp.MtpObjectInfo long java.lang.String
      StackMap stack: android.content.ContentValues java.lang.String java.lang.Long
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Long;)V
        16: .line 838
            aload 0 /* values */
            ldc "icon"
            invokevirtual android.content.ContentValues.putNull:(Ljava/lang/String;)V
        17: .line 839
            aload 0 /* values */
            ldc "flags"
        18: .line 840
            aload 3 /* operationsSupported */
            aload 7 /* mimeType */
            aload 4 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getThumbCompressedSizeLong:()J
        19: .line 841
            aload 4 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getProtectionStatus:()I
            iconst_2
        20: .line 839
            invokestatic com.android.mtp.MtpDatabase.getDocumentFlags:([ILjava/lang/String;JII)I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Integer;)V
        21: .line 842
            lload 5 /* size */
            lconst_0
            lcmp
            iflt 24
        22: .line 843
            aload 0 /* values */
            ldc "_size"
            lload 5 /* size */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual android.content.ContentValues.put:(Ljava/lang/String;Ljava/lang/Long;)V
        23: .line 844
            goto 25
        24: .line 845
      StackMap locals:
      StackMap stack:
            aload 0 /* values */
            ldc "_size"
            invokevirtual android.content.ContentValues.putNull:(Ljava/lang/String;)V
        25: .line 847
      StackMap locals:
      StackMap stack:
            return
        end local 7 // java.lang.String mimeType
        end local 5 // long size
        end local 4 // android.mtp.MtpObjectInfo info
        end local 3 // int[] operationsSupported
        end local 2 // java.lang.String parentId
        end local 1 // int deviceId
        end local 0 // android.content.ContentValues values
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   26     0               values  Landroid/content/ContentValues;
            0   26     1             deviceId  I
            0   26     2             parentId  Ljava/lang/String;
            0   26     3  operationsSupported  [I
            0   26     4                 info  Landroid/mtp/MtpObjectInfo;
            0   26     5                 size  J
            2   26     7             mimeType  Ljava/lang/String;
    MethodParameters:
                     Name  Flags
      values               
      deviceId             
      parentId             
      operationsSupported  
      info                 
      size                 

  private static java.lang.String getMimeType(android.mtp.MtpObjectInfo);
    descriptor: (Landroid/mtp/MtpObjectInfo;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // android.mtp.MtpObjectInfo info
         0: .line 850
            aload 0 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getFormat:()I
            sipush 12289
            if_icmpne 2
         1: .line 851
            ldc "vnd.android.document/directory"
            areturn
         2: .line 854
      StackMap locals:
      StackMap stack:
            aload 0 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getFormat:()I
            invokestatic android.media.MediaFile.getMimeTypeForFormatCode:(I)Ljava/lang/String;
            astore 1 /* formatCodeMimeType */
        start local 1 // java.lang.String formatCodeMimeType
         3: .line 855
            aload 0 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getName:()Ljava/lang/String;
            invokestatic android.media.MediaFile.getMimeTypeForFile:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* mediaFileMimeType */
        start local 2 // java.lang.String mediaFileMimeType
         4: .line 861
            aload 2 /* mediaFileMimeType */
            ifnull 7
         5: .line 862
            ldc ""
            aload 2 /* mediaFileMimeType */
            invokestatic android.media.MediaFile.getFormatCode:(Ljava/lang/String;Ljava/lang/String;)I
            aload 0 /* info */
            invokevirtual android.mtp.MtpObjectInfo.getFormat:()I
            if_icmpne 7
         6: .line 863
            aload 2 /* mediaFileMimeType */
            areturn
         7: .line 865
      StackMap locals: java.lang.String java.lang.String
      StackMap stack:
            aload 1 /* formatCodeMimeType */
            ifnull 9
         8: .line 866
            aload 1 /* formatCodeMimeType */
            areturn
         9: .line 868
      StackMap locals:
      StackMap stack:
            aload 2 /* mediaFileMimeType */
            ifnull 11
        10: .line 869
            aload 2 /* mediaFileMimeType */
            areturn
        11: .line 872
      StackMap locals:
      StackMap stack:
            ldc "application/octet-stream"
            areturn
        end local 2 // java.lang.String mediaFileMimeType
        end local 1 // java.lang.String formatCodeMimeType
        end local 0 // android.mtp.MtpObjectInfo info
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   12     0                info  Landroid/mtp/MtpObjectInfo;
            3   12     1  formatCodeMimeType  Ljava/lang/String;
            4   12     2   mediaFileMimeType  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      info  

  private static int getRootFlags(int[]);
    descriptor: ([I)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // int[] operationsSupported
         0: .line 876
            bipush 18
            istore 1 /* rootFlag */
        start local 1 // int rootFlag
         1: .line 877
            aload 0 /* operationsSupported */
            invokestatic com.android.mtp.MtpDeviceRecord.isWritingSupported:([I)Z
            ifeq 3
         2: .line 878
            iload 1 /* rootFlag */
            iconst_1
            ior
            istore 1 /* rootFlag */
         3: .line 880
      StackMap locals: int
      StackMap stack:
            iload 1 /* rootFlag */
            ireturn
        end local 1 // int rootFlag
        end local 0 // int[] operationsSupported
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0  operationsSupported  [I
            1    4     1             rootFlag  I
    MethodParameters:
                     Name  Flags
      operationsSupported  

  private static int getDocumentFlags(int[], java.lang.String, long, int, int);
    descriptor: ([ILjava/lang/String;JII)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=5
        start local 0 // int[] operationsSupported
        start local 1 // java.lang.String mimeType
        start local 2 // long thumbnailSize
        start local 4 // int protectionState
        start local 5 // int documentType
         0: .line 886
            iconst_0
            istore 6 /* flag */
        start local 6 // int flag
         1: .line 887
            aload 1 /* mimeType */
            ldc "vnd.android.document/directory"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 5
         2: .line 888
            aload 0 /* operationsSupported */
            invokestatic com.android.mtp.MtpDeviceRecord.isWritingSupported:([I)Z
            ifeq 5
         3: .line 889
            iload 4 /* protectionState */
            ifne 5
         4: .line 890
            iload 6 /* flag */
            iconst_2
            ior
            istore 6 /* flag */
         5: .line 893
      StackMap locals: int
      StackMap stack:
            aload 0 /* operationsSupported */
            sipush 4107
         6: .line 892
            invokestatic com.android.mtp.MtpDeviceRecord.isSupported:([II)Z
         7: .line 893
            ifeq 12
         8: .line 894
            iload 4 /* protectionState */
            ifeq 10
         9: .line 895
            iload 4 /* protectionState */
            ldc 32771
            if_icmpne 12
        10: .line 896
      StackMap locals:
      StackMap stack:
            iload 5 /* documentType */
            iconst_2
            if_icmpne 12
        11: .line 897
            iload 6 /* flag */
            iconst_4
            ior
            istore 6 /* flag */
        12: .line 899
      StackMap locals:
      StackMap stack:
            aload 1 /* mimeType */
            ldc "vnd.android.document/directory"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 16
        13: .line 900
            aload 0 /* operationsSupported */
            invokestatic com.android.mtp.MtpDeviceRecord.isWritingSupported:([I)Z
            ifeq 16
        14: .line 901
            iload 4 /* protectionState */
            ifne 16
        15: .line 902
            iload 6 /* flag */
            bipush 8
            ior
            istore 6 /* flag */
        16: .line 904
      StackMap locals:
      StackMap stack:
            aload 1 /* mimeType */
            invokestatic android.provider.MetadataReader.isSupportedMimeType:(Ljava/lang/String;)Z
            ifeq 18
        17: .line 905
            iload 6 /* flag */
            ldc 131072
            ior
            istore 6 /* flag */
        18: .line 907
      StackMap locals:
      StackMap stack:
            lload 2 /* thumbnailSize */
            lconst_0
            lcmp
            ifle 20
        19: .line 908
            iload 6 /* flag */
            iconst_1
            ior
            istore 6 /* flag */
        20: .line 910
      StackMap locals:
      StackMap stack:
            iload 6 /* flag */
            ireturn
        end local 6 // int flag
        end local 5 // int documentType
        end local 4 // int protectionState
        end local 2 // long thumbnailSize
        end local 1 // java.lang.String mimeType
        end local 0 // int[] operationsSupported
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   21     0  operationsSupported  [I
            0   21     1             mimeType  Ljava/lang/String;
            0   21     2        thumbnailSize  J
            0   21     4      protectionState  I
            0   21     5         documentType  I
            1   21     6                 flag  I
    MethodParameters:
                     Name  Flags
      operationsSupported  
      mimeType             
      thumbnailSize        
      protectionState      
      documentType         

  static java.lang.String[] strings(java.lang.Object[]);
    descriptor: ([Ljava/lang/Object;)[Ljava/lang/String;
    flags: (0x0088) ACC_STATIC, ACC_VARARGS
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.lang.Object[] args
         0: .line 914
            aload 0 /* args */
            arraylength
            anewarray java.lang.String
            astore 1 /* results */
        start local 1 // java.lang.String[] results
         1: .line 915
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 916
      StackMap locals: java.lang.String[] int
      StackMap stack:
            aload 1 /* results */
            iload 2 /* i */
            aload 0 /* args */
            iload 2 /* i */
            aaload
            invokestatic java.util.Objects.toString:(Ljava/lang/Object;)Ljava/lang/String;
            aastore
         4: .line 915
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* args */
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 918
            aload 1 /* results */
            areturn
        end local 1 // java.lang.String[] results
        end local 0 // java.lang.Object[] args
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     args  [Ljava/lang/Object;
            1    7     1  results  [Ljava/lang/String;
            2    6     2        i  I
    MethodParameters:
      Name  Flags
      args  

  static void putValuesToCursor(android.content.ContentValues, android.database.MatrixCursor);
    descriptor: (Landroid/content/ContentValues;Landroid/database/MatrixCursor;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // android.content.ContentValues values
        start local 1 // android.database.MatrixCursor cursor
         0: .line 922
            aload 1 /* cursor */
            invokevirtual android.database.MatrixCursor.newRow:()Landroid/database/MatrixCursor$RowBuilder;
            astore 2 /* row */
        start local 2 // android.database.MatrixCursor$RowBuilder row
         1: .line 923
            aload 1 /* cursor */
            invokevirtual android.database.MatrixCursor.getColumnNames:()[Ljava/lang/String;
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 5
      StackMap locals: android.content.ContentValues android.database.MatrixCursor android.database.MatrixCursor$RowBuilder top int int java.lang.String[]
      StackMap stack:
         2: aload 6
            iload 4
            aaload
            astore 3 /* name */
        start local 3 // java.lang.String name
         3: .line 924
            aload 2 /* row */
            aload 0 /* values */
            aload 3 /* name */
            invokevirtual android.content.ContentValues.get:(Ljava/lang/String;)Ljava/lang/Object;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
        end local 3 // java.lang.String name
         4: .line 923
            iinc 4 1
      StackMap locals:
      StackMap stack:
         5: iload 4
            iload 5
            if_icmplt 2
         6: .line 926
            return
        end local 2 // android.database.MatrixCursor$RowBuilder row
        end local 1 // android.database.MatrixCursor cursor
        end local 0 // android.content.ContentValues values
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0  values  Landroid/content/ContentValues;
            0    7     1  cursor  Landroid/database/MatrixCursor;
            1    7     2     row  Landroid/database/MatrixCursor$RowBuilder;
            3    4     3    name  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      values  
      cursor  

  private static java.lang.String getIdList(java.util.Set<java.lang.String>);
    descriptor: (Ljava/util/Set;)Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // java.util.Set ids
         0: .line 929
            ldc "("
            astore 1 /* result */
        start local 1 // java.lang.String result
         1: .line 930
            aload 0 /* ids */
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: java.util.Set java.lang.String top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 2 /* id */
        start local 2 // java.lang.String id
         3: .line 931
            aload 1 /* result */
            invokevirtual java.lang.String.length:()I
            iconst_1
            if_icmple 5
         4: .line 932
            new java.lang.StringBuilder
            dup
            aload 1 /* result */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* result */
         5: .line 934
      StackMap locals: java.util.Set java.lang.String java.lang.String java.util.Iterator
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 1 /* result */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* id */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* result */
        end local 2 // java.lang.String id
         6: .line 930
      StackMap locals: java.util.Set java.lang.String top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 936
            new java.lang.StringBuilder
            dup
            aload 1 /* result */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* result */
         8: .line 937
            aload 1 /* result */
            areturn
        end local 1 // java.lang.String result
        end local 0 // java.util.Set ids
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0     ids  Ljava/util/Set<Ljava/lang/String;>;
            1    9     1  result  Ljava/lang/String;
            3    6     2      id  Ljava/lang/String;
    Signature: (Ljava/util/Set<Ljava/lang/String;>;)Ljava/lang/String;
    MethodParameters:
      Name  Flags
      ids   
}
SourceFile: "MtpDatabase.java"
NestMembers:
  com.android.mtp.MtpDatabase$OpenHelper
InnerClasses:
  public RowBuilder = android.database.MatrixCursor$RowBuilder of android.database.MatrixCursor
  private OpenHelper = com.android.mtp.MtpDatabase$OpenHelper of com.android.mtp.MtpDatabase