public class com.android.externalstorage.TestDocumentsProvider extends android.provider.DocumentsProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.android.externalstorage.TestDocumentsProvider
  super_class: android.provider.DocumentsProvider
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "TestDocuments"

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

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

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

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

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

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

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

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

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

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

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

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

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

  private static final java.lang.String MY_ROOT_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "myRoot"

  private static final java.lang.String MY_DOC_ID;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "myDoc"

  private static final java.lang.String MY_DOC_NULL;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "myNull"

  private static final java.lang.String[] DEFAULT_ROOT_PROJECTION;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String[] DEFAULT_DOCUMENT_PROJECTION;
    descriptor: [Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

  private java.lang.ref.WeakReference<com.android.externalstorage.TestDocumentsProvider$CloudTask> mTask;
    descriptor: Ljava/lang/ref/WeakReference;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/lang/ref/WeakReference<Lcom/android/externalstorage/TestDocumentsProvider$CloudTask;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 82
            bipush 7
            anewarray java.lang.String
            dup
            iconst_0
         1: .line 83
            ldc "root_id"
            aastore
            dup
            iconst_1
            ldc "flags"
            aastore
            dup
            iconst_2
            ldc "icon"
            aastore
            dup
            iconst_3
         2: .line 84
            ldc "title"
            aastore
            dup
            iconst_4
            ldc "summary"
            aastore
            dup
            iconst_5
            ldc "document_id"
            aastore
            dup
            bipush 6
         3: .line 85
            ldc "available_bytes"
            aastore
         4: .line 82
            putstatic com.android.externalstorage.TestDocumentsProvider.DEFAULT_ROOT_PROJECTION:[Ljava/lang/String;
         5: .line 88
            bipush 6
            anewarray java.lang.String
            dup
            iconst_0
         6: .line 89
            ldc "document_id"
            aastore
            dup
            iconst_1
            ldc "mime_type"
            aastore
            dup
            iconst_2
            ldc "_display_name"
            aastore
            dup
            iconst_3
         7: .line 90
            ldc "last_modified"
            aastore
            dup
            iconst_4
            ldc "flags"
            aastore
            dup
            iconst_5
            ldc "_size"
            aastore
         8: .line 88
            putstatic com.android.externalstorage.TestDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION:[Ljava/lang/String;
         9: .line 91
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
         0: .line 55
            aload 0 /* this */
            invokespecial android.provider.DocumentsProvider.<init>:()V
            return
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/externalstorage/TestDocumentsProvider;

  private static java.lang.String[] resolveRootProjection(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String[] projection
         0: .line 95
            aload 0 /* projection */
            ifnull 1
            aload 0 /* projection */
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic com.android.externalstorage.TestDocumentsProvider.DEFAULT_ROOT_PROJECTION:[Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String[]
         2: areturn
        end local 0 // java.lang.String[] projection
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  projection  [Ljava/lang/String;
    MethodParameters:
            Name  Flags
      projection  

  private static java.lang.String[] resolveDocumentProjection(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)[Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String[] projection
         0: .line 100
            aload 0 /* projection */
            ifnull 1
            aload 0 /* projection */
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic com.android.externalstorage.TestDocumentsProvider.DEFAULT_DOCUMENT_PROJECTION:[Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String[]
         2: areturn
        end local 0 // java.lang.String[] projection
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0  projection  [Ljava/lang/String;
    MethodParameters:
            Name  Flags
      projection  

  public void attachInfo(android.content.Context, android.content.pm.ProviderInfo);
    descriptor: (Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // android.content.Context context
        start local 2 // android.content.pm.ProviderInfo info
         0: .line 107
            aload 0 /* this */
            aload 2 /* info */
            getfield android.content.pm.ProviderInfo.authority:Ljava/lang/String;
            putfield com.android.externalstorage.TestDocumentsProvider.mAuthority:Ljava/lang/String;
         1: .line 108
            aload 0 /* this */
            aload 1 /* context */
            aload 2 /* info */
            invokespecial android.provider.DocumentsProvider.attachInfo:(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V
         2: .line 109
            return
        end local 2 // android.content.pm.ProviderInfo info
        end local 1 // android.content.Context context
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/android/externalstorage/TestDocumentsProvider;
            0    3     1  context  Landroid/content/Context;
            0    3     2     info  Landroid/content/pm/ProviderInfo;
    MethodParameters:
         Name  Flags
      context  
      info     

  public android.database.Cursor queryRoots(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=2
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // java.lang.String[] projection
         0: .line 113
            ldc "TestDocuments"
            ldc "Someone asked for our roots!"
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         1: .line 132
            new android.database.MatrixCursor
            dup
            aload 1 /* projection */
            invokestatic com.android.externalstorage.TestDocumentsProvider.resolveRootProjection:([Ljava/lang/String;)[Ljava/lang/String;
            invokespecial android.database.MatrixCursor.<init>:([Ljava/lang/String;)V
            astore 2 /* result */
        start local 2 // android.database.MatrixCursor result
         2: .line 133
            aload 2 /* result */
            invokevirtual android.database.MatrixCursor.newRow:()Landroid/database/MatrixCursor$RowBuilder;
            astore 3 /* row */
        start local 3 // android.database.MatrixCursor$RowBuilder row
         3: .line 134
            aload 3 /* row */
            ldc "root_id"
            ldc "myRoot"
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         4: .line 135
            aload 3 /* row */
            ldc "flags"
            iconst_5
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         5: .line 136
            aload 3 /* row */
            ldc "title"
            ldc "_Test title which is really long"
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         6: .line 137
            aload 3 /* row */
            ldc "summary"
         7: .line 138
            new java.lang.StringBuilder
            dup
            invokestatic android.os.SystemClock.elapsedRealtime:()J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " summary which is also super long text"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 137
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         9: .line 139
            aload 3 /* row */
            ldc "document_id"
            ldc "myDoc"
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
        10: .line 140
            aload 3 /* row */
            ldc "available_bytes"
            sipush 1024
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
        11: .line 141
            aload 2 /* result */
            areturn
        end local 3 // android.database.MatrixCursor$RowBuilder row
        end local 2 // android.database.MatrixCursor result
        end local 1 // java.lang.String[] projection
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lcom/android/externalstorage/TestDocumentsProvider;
            0   12     1  projection  [Ljava/lang/String;
            2   12     2      result  Landroid/database/MatrixCursor;
            3   12     3         row  Landroid/database/MatrixCursor$RowBuilder;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      projection  

  public android.database.Cursor queryDocument(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // java.lang.String documentId
        start local 2 // java.lang.String[] projection
         0: .line 150
            new android.database.MatrixCursor
            dup
            aload 2 /* projection */
            invokestatic com.android.externalstorage.TestDocumentsProvider.resolveDocumentProjection:([Ljava/lang/String;)[Ljava/lang/String;
            invokespecial android.database.MatrixCursor.<init>:([Ljava/lang/String;)V
            astore 3 /* result */
        start local 3 // android.database.MatrixCursor result
         1: .line 151
            aload 3 /* result */
            aload 1 /* documentId */
            iconst_0
            invokestatic com.android.externalstorage.TestDocumentsProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;I)V
         2: .line 152
            aload 3 /* result */
            areturn
        end local 3 // android.database.MatrixCursor result
        end local 2 // java.lang.String[] projection
        end local 1 // java.lang.String documentId
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/android/externalstorage/TestDocumentsProvider;
            0    3     1  documentId  Ljava/lang/String;
            0    3     2  projection  [Ljava/lang/String;
            1    3     3      result  Landroid/database/MatrixCursor;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  
      projection  

  public java.lang.String createDocument(java.lang.String, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // java.lang.String parentDocumentId
        start local 2 // java.lang.String mimeType
        start local 3 // java.lang.String displayName
         0: .line 160
            aload 0 /* this */
            aload 1 /* parentDocumentId */
            aload 2 /* mimeType */
            aload 3 /* displayName */
            invokespecial android.provider.DocumentsProvider.createDocument:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 3 // java.lang.String displayName
        end local 2 // java.lang.String mimeType
        end local 1 // java.lang.String parentDocumentId
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lcom/android/externalstorage/TestDocumentsProvider;
            0    1     1  parentDocumentId  Ljava/lang/String;
            0    1     2          mimeType  Ljava/lang/String;
            0    1     3       displayName  Ljava/lang/String;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
                  Name  Flags
      parentDocumentId  
      mimeType          
      displayName       

  public android.database.Cursor queryChildDocuments(java.lang.String, java.lang.String[], java.lang.String);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=4
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // java.lang.String parentDocumentId
        start local 2 // java.lang.String[] projection
        start local 3 // java.lang.String sortOrder
         0: .line 232
            aload 0 /* this */
            invokevirtual com.android.externalstorage.TestDocumentsProvider.getContext:()Landroid/content/Context;
            invokevirtual android.content.Context.getContentResolver:()Landroid/content/ContentResolver;
            astore 4 /* resolver */
        start local 4 // android.content.ContentResolver resolver
         1: .line 234
            ldc "com.example.documents"
            aload 1 /* parentDocumentId */
         2: .line 233
            invokestatic android.provider.DocumentsContract.buildDocumentUri:(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
            astore 5 /* notifyUri */
        start local 5 // android.net.Uri notifyUri
         3: .line 236
            new com.android.externalstorage.TestDocumentsProvider$CloudCursor
            dup
            aload 2 /* projection */
            invokestatic com.android.externalstorage.TestDocumentsProvider.resolveDocumentProjection:([Ljava/lang/String;)[Ljava/lang/String;
            invokespecial com.android.externalstorage.TestDocumentsProvider$CloudCursor.<init>:([Ljava/lang/String;)V
            astore 6 /* result */
        start local 6 // com.android.externalstorage.TestDocumentsProvider$CloudCursor result
         4: .line 237
            aload 6 /* result */
            aload 4 /* resolver */
            aload 5 /* notifyUri */
            invokevirtual com.android.externalstorage.TestDocumentsProvider$CloudCursor.setNotificationUri:(Landroid/content/ContentResolver;Landroid/net/Uri;)V
         5: .line 240
            aload 6 /* result */
            ldc "myNull"
            iconst_0
            invokestatic com.android.externalstorage.TestDocumentsProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;I)V
         6: .line 241
            aload 6 /* result */
            ldc "localfile1"
            iconst_0
            invokestatic com.android.externalstorage.TestDocumentsProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;I)V
         7: .line 242
            aload 6 /* result */
            ldc "localfile2"
            iconst_1
            invokestatic com.android.externalstorage.TestDocumentsProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;I)V
         8: .line 243
            aload 6 /* result */
            ldc "localfile3"
            iconst_0
            invokestatic com.android.externalstorage.TestDocumentsProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;I)V
         9: .line 244
            aload 6 /* result */
            ldc "localfile4"
            iconst_0
            invokestatic com.android.externalstorage.TestDocumentsProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;I)V
        10: .line 252
            aload 0 /* this */
            dup
            astore 7
            monitorenter
        11: .line 254
            aload 0 /* this */
            getfield com.android.externalstorage.TestDocumentsProvider.mTask:Ljava/lang/ref/WeakReference;
            ifnull 12
            aload 0 /* this */
            getfield com.android.externalstorage.TestDocumentsProvider.mTask:Ljava/lang/ref/WeakReference;
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast com.android.externalstorage.TestDocumentsProvider$CloudTask
            goto 13
      StackMap locals: com.android.externalstorage.TestDocumentsProvider java.lang.String java.lang.String[] java.lang.String android.content.ContentResolver android.net.Uri com.android.externalstorage.TestDocumentsProvider$CloudCursor com.android.externalstorage.TestDocumentsProvider
      StackMap stack:
        12: aconst_null
      StackMap locals:
      StackMap stack: com.android.externalstorage.TestDocumentsProvider$CloudTask
        13: astore 8 /* task */
        start local 8 // com.android.externalstorage.TestDocumentsProvider$CloudTask task
        14: .line 255
            aload 8 /* task */
            ifnonnull 21
        15: .line 256
            ldc "TestDocuments"
            ldc "No network task found; starting!"
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        16: .line 257
            new com.android.externalstorage.TestDocumentsProvider$CloudTask
            dup
            aload 4 /* resolver */
            aload 5 /* notifyUri */
            invokespecial com.android.externalstorage.TestDocumentsProvider$CloudTask.<init>:(Landroid/content/ContentResolver;Landroid/net/Uri;)V
            astore 8 /* task */
        17: .line 258
            aload 0 /* this */
            new java.lang.ref.WeakReference
            dup
            aload 8 /* task */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            putfield com.android.externalstorage.TestDocumentsProvider.mTask:Ljava/lang/ref/WeakReference;
        18: .line 259
            new java.lang.Thread
            dup
            aload 8 /* task */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;)V
            invokevirtual java.lang.Thread.start:()V
        19: .line 262
            new com.android.externalstorage.TestDocumentsProvider$1
            dup
            aload 0 /* this */
            invokespecial com.android.externalstorage.TestDocumentsProvider$1.<init>:(Lcom/android/externalstorage/TestDocumentsProvider;)V
        20: .line 272
            invokevirtual com.android.externalstorage.TestDocumentsProvider$1.start:()V
        21: .line 276
      StackMap locals: com.android.externalstorage.TestDocumentsProvider$CloudTask
      StackMap stack:
            aload 8 /* task */
            aload 6 /* result */
            invokevirtual com.android.externalstorage.TestDocumentsProvider$CloudTask.includeIfFinished:(Landroid/database/MatrixCursor;)Z
            ifeq 29
        22: .line 277
            aload 6 /* result */
            getfield com.android.externalstorage.TestDocumentsProvider$CloudCursor.extras:Landroid/os/Bundle;
            ldc "info"
        23: .line 278
            ldc "Everything Went Better Than Expected and this message is quite long and verbose and maybe even too long"
        24: .line 277
            invokevirtual android.os.Bundle.putString:(Ljava/lang/String;Ljava/lang/String;)V
        25: .line 280
            aload 6 /* result */
            getfield com.android.externalstorage.TestDocumentsProvider$CloudCursor.extras:Landroid/os/Bundle;
            ldc "error"
        26: .line 281
            ldc "But then again, maybe our server ran into an error, which means we're going to have a bad time"
        27: .line 280
            invokevirtual android.os.Bundle.putString:(Ljava/lang/String;Ljava/lang/String;)V
        28: .line 283
            goto 30
        29: .line 284
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            getfield com.android.externalstorage.TestDocumentsProvider$CloudCursor.extras:Landroid/os/Bundle;
            ldc "loading"
            iconst_1
            invokevirtual android.os.Bundle.putBoolean:(Ljava/lang/String;Z)V
        30: .line 288
      StackMap locals:
      StackMap stack:
            aload 6 /* result */
            aload 8 /* task */
            putfield com.android.externalstorage.TestDocumentsProvider$CloudCursor.keepAlive:Ljava/lang/Object;
        31: .line 290
            aload 6 /* result */
            aload 7
            monitorexit
        32: areturn
        end local 8 // com.android.externalstorage.TestDocumentsProvider$CloudTask task
        33: .line 252
      StackMap locals: com.android.externalstorage.TestDocumentsProvider java.lang.String java.lang.String[] java.lang.String android.content.ContentResolver android.net.Uri com.android.externalstorage.TestDocumentsProvider$CloudCursor com.android.externalstorage.TestDocumentsProvider
      StackMap stack: java.lang.Throwable
            aload 7
            monitorexit
        34: athrow
        end local 6 // com.android.externalstorage.TestDocumentsProvider$CloudCursor result
        end local 5 // android.net.Uri notifyUri
        end local 4 // android.content.ContentResolver resolver
        end local 3 // java.lang.String sortOrder
        end local 2 // java.lang.String[] projection
        end local 1 // java.lang.String parentDocumentId
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   35     0              this  Lcom/android/externalstorage/TestDocumentsProvider;
            0   35     1  parentDocumentId  Ljava/lang/String;
            0   35     2        projection  [Ljava/lang/String;
            0   35     3         sortOrder  Ljava/lang/String;
            1   35     4          resolver  Landroid/content/ContentResolver;
            3   35     5         notifyUri  Landroid/net/Uri;
            4   35     6            result  Lcom/android/externalstorage/TestDocumentsProvider$CloudCursor;
           14   33     8              task  Lcom/android/externalstorage/TestDocumentsProvider$CloudTask;
      Exception table:
        from    to  target  type
          11    32      33  any
          33    34      33  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
                  Name  Flags
      parentDocumentId  
      projection        
      sortOrder         

  public android.database.Cursor queryRecentDocuments(java.lang.String, java.lang.String[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // java.lang.String rootId
        start local 2 // java.lang.String[] projection
         0: .line 302
            ldc 3000
            invokestatic android.os.SystemClock.sleep:(J)V
         1: .line 304
            new android.database.MatrixCursor
            dup
            aload 2 /* projection */
            invokestatic com.android.externalstorage.TestDocumentsProvider.resolveDocumentProjection:([Ljava/lang/String;)[Ljava/lang/String;
            invokespecial android.database.MatrixCursor.<init>:([Ljava/lang/String;)V
            astore 3 /* result */
        start local 3 // android.database.MatrixCursor result
         2: .line 306
            aload 3 /* result */
            ldc "It was /worth/ the_wait for?the file:with the&incredibly long name"
            iconst_0
         3: .line 305
            invokestatic com.android.externalstorage.TestDocumentsProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;I)V
         4: .line 307
            aload 3 /* result */
            areturn
        end local 3 // android.database.MatrixCursor result
        end local 2 // java.lang.String[] projection
        end local 1 // java.lang.String rootId
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/android/externalstorage/TestDocumentsProvider;
            0    5     1      rootId  Ljava/lang/String;
            0    5     2  projection  [Ljava/lang/String;
            2    5     3      result  Landroid/database/MatrixCursor;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      rootId      
      projection  

  public android.os.ParcelFileDescriptor openDocument(java.lang.String, java.lang.String, android.os.CancellationSignal);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // java.lang.String docId
        start local 2 // java.lang.String mode
        start local 3 // android.os.CancellationSignal signal
         0: .line 314
            new java.io.FileNotFoundException
            dup
            invokespecial java.io.FileNotFoundException.<init>:()V
            athrow
        end local 3 // android.os.CancellationSignal signal
        end local 2 // java.lang.String mode
        end local 1 // java.lang.String docId
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Lcom/android/externalstorage/TestDocumentsProvider;
            0    1     1   docId  Ljava/lang/String;
            0    1     2    mode  Ljava/lang/String;
            0    1     3  signal  Landroid/os/CancellationSignal;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
        Name  Flags
      docId   
      mode    
      signal  

  public android.content.res.AssetFileDescriptor openDocumentThumbnail(java.lang.String, android.graphics.Point, android.os.CancellationSignal);
    descriptor: (Ljava/lang/String;Landroid/graphics/Point;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=9, args_size=4
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
        start local 1 // java.lang.String docId
        start local 2 // android.graphics.Point sizeHint
        start local 3 // android.os.CancellationSignal signal
         0: .line 325
            bipush 32
            bipush 32
            getstatic android.graphics.Bitmap$Config.ARGB_8888:Landroid/graphics/Bitmap$Config;
            invokestatic android.graphics.Bitmap.createBitmap:(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
            astore 4 /* bitmap */
        start local 4 // android.graphics.Bitmap bitmap
         1: .line 326
            new android.graphics.Canvas
            dup
            aload 4 /* bitmap */
            invokespecial android.graphics.Canvas.<init>:(Landroid/graphics/Bitmap;)V
            astore 5 /* canvas */
        start local 5 // android.graphics.Canvas canvas
         2: .line 327
            new android.graphics.Paint
            dup
            invokespecial android.graphics.Paint.<init>:()V
            astore 6 /* paint */
        start local 6 // android.graphics.Paint paint
         3: .line 328
            aload 6 /* paint */
            ldc -16776961
            invokevirtual android.graphics.Paint.setColor:(I)V
         4: .line 329
            aload 5 /* canvas */
            ldc -65536
            invokevirtual android.graphics.Canvas.drawColor:(I)V
         5: .line 330
            aload 5 /* canvas */
            fconst_0
            fconst_0
            ldc 32.0
            ldc 32.0
            aload 6 /* paint */
            invokevirtual android.graphics.Canvas.drawLine:(FFFFLandroid/graphics/Paint;)V
         6: .line 332
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 7 /* bos */
        start local 7 // java.io.ByteArrayOutputStream bos
         7: .line 333
            aload 4 /* bitmap */
            getstatic android.graphics.Bitmap$CompressFormat.JPEG:Landroid/graphics/Bitmap$CompressFormat;
            bipush 50
            aload 7 /* bos */
            invokevirtual android.graphics.Bitmap.compress:(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
            pop
         8: .line 335
            new java.io.ByteArrayInputStream
            aload 7 /* bos */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
         9: .line 337
            invokestatic android.os.ParcelFileDescriptor.createReliablePipe:()[Landroid/os/ParcelFileDescriptor;
            astore 8 /* fds */
        start local 8 // android.os.ParcelFileDescriptor[] fds
        10: .line 338
            new com.android.externalstorage.TestDocumentsProvider$2
            dup
            aload 0 /* this */
            invokespecial com.android.externalstorage.TestDocumentsProvider$2.<init>:(Lcom/android/externalstorage/TestDocumentsProvider;)V
        11: .line 350
            getstatic android.os.AsyncTask.THREAD_POOL_EXECUTOR:Ljava/util/concurrent/Executor;
            iconst_0
            anewarray java.lang.Object
            invokevirtual com.android.externalstorage.TestDocumentsProvider$2.executeOnExecutor:(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Landroid/os/AsyncTask;
            pop
        12: .line 351
            new android.content.res.AssetFileDescriptor
            dup
            aload 8 /* fds */
            iconst_0
            aaload
            lconst_0
            ldc -1
            invokespecial android.content.res.AssetFileDescriptor.<init>:(Landroid/os/ParcelFileDescriptor;JJ)V
        13: areturn
        end local 8 // android.os.ParcelFileDescriptor[] fds
        14: .line 352
      StackMap locals: com.android.externalstorage.TestDocumentsProvider java.lang.String android.graphics.Point android.os.CancellationSignal android.graphics.Bitmap android.graphics.Canvas android.graphics.Paint java.io.ByteArrayOutputStream
      StackMap stack: java.io.IOException
            astore 8 /* e */
        start local 8 // java.io.IOException e
        15: .line 353
            new java.io.FileNotFoundException
            dup
            aload 8 /* e */
            invokevirtual java.io.IOException.getMessage:()Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        end local 8 // java.io.IOException e
        end local 7 // java.io.ByteArrayOutputStream bos
        end local 6 // android.graphics.Paint paint
        end local 5 // android.graphics.Canvas canvas
        end local 4 // android.graphics.Bitmap bitmap
        end local 3 // android.os.CancellationSignal signal
        end local 2 // android.graphics.Point sizeHint
        end local 1 // java.lang.String docId
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lcom/android/externalstorage/TestDocumentsProvider;
            0   16     1     docId  Ljava/lang/String;
            0   16     2  sizeHint  Landroid/graphics/Point;
            0   16     3    signal  Landroid/os/CancellationSignal;
            1   16     4    bitmap  Landroid/graphics/Bitmap;
            2   16     5    canvas  Landroid/graphics/Canvas;
            3   16     6     paint  Landroid/graphics/Paint;
            7   16     7       bos  Ljava/io/ByteArrayOutputStream;
           10   14     8       fds  [Landroid/os/ParcelFileDescriptor;
           15   16     8         e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           9    13      14  Class java.io.IOException
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
          Name  Flags
      docId     
      sizeHint  
      signal    

  public boolean onCreate();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.externalstorage.TestDocumentsProvider this
         0: .line 359
            iconst_1
            ireturn
        end local 0 // com.android.externalstorage.TestDocumentsProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/externalstorage/TestDocumentsProvider;

  private static void lagUntilCanceled(android.os.CancellationSignal);
    descriptor: (Landroid/os/CancellationSignal;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.os.CancellationSignal signal
         0: .line 363
            aload 0 /* signal */
            ldc 1500
            invokestatic com.android.externalstorage.TestDocumentsProvider.waitForCancelOrTimeout:(Landroid/os/CancellationSignal;J)V
         1: .line 364
            return
        end local 0 // android.os.CancellationSignal signal
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  signal  Landroid/os/CancellationSignal;
    MethodParameters:
        Name  Flags
      signal  

  private static void wedgeUntilCanceled(android.os.CancellationSignal);
    descriptor: (Landroid/os/CancellationSignal;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.os.CancellationSignal signal
         0: .line 367
            aload 0 /* signal */
            ldc 2147483647
            invokestatic com.android.externalstorage.TestDocumentsProvider.waitForCancelOrTimeout:(Landroid/os/CancellationSignal;J)V
         1: .line 368
            return
        end local 0 // android.os.CancellationSignal signal
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  signal  Landroid/os/CancellationSignal;
    MethodParameters:
        Name  Flags
      signal  

  private static void waitForCancelOrTimeout(android.os.CancellationSignal, long);
    descriptor: (Landroid/os/CancellationSignal;J)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // android.os.CancellationSignal signal
        start local 1 // long timeoutMillis
         0: .line 372
            aload 0 /* signal */
            ifnull 4
         1: .line 373
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            astore 3 /* blocked */
        start local 3 // java.lang.Thread blocked
         2: .line 374
            aload 0 /* signal */
            new com.android.externalstorage.TestDocumentsProvider$3
            dup
            aload 3 /* blocked */
            invokespecial com.android.externalstorage.TestDocumentsProvider$3.<init>:(Ljava/lang/Thread;)V
            invokevirtual android.os.CancellationSignal.setOnCancelListener:(Landroid/os/CancellationSignal$OnCancelListener;)V
         3: .line 380
            aload 0 /* signal */
            invokevirtual android.os.CancellationSignal.throwIfCanceled:()V
        end local 3 // java.lang.Thread blocked
         4: .line 384
      StackMap locals:
      StackMap stack:
            lload 1 /* timeoutMillis */
            invokestatic java.lang.Thread.sleep:(J)V
         5: .line 385
            goto 7
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         6: pop
         7: .line 388
      StackMap locals:
      StackMap stack:
            aload 0 /* signal */
            ifnull 9
         8: .line 389
            aload 0 /* signal */
            invokevirtual android.os.CancellationSignal.throwIfCanceled:()V
         9: .line 391
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long timeoutMillis
        end local 0 // android.os.CancellationSignal signal
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0         signal  Landroid/os/CancellationSignal;
            0   10     1  timeoutMillis  J
            2    4     3        blocked  Ljava/lang/Thread;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.InterruptedException
    MethodParameters:
               Name  Flags
      signal         final
      timeoutMillis  

  private static void includeFile(android.database.MatrixCursor, java.lang.String, int);
    descriptor: (Landroid/database/MatrixCursor;Ljava/lang/String;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // android.database.MatrixCursor result
        start local 1 // java.lang.String docId
        start local 2 // int flags
         0: .line 394
            aload 0 /* result */
            invokevirtual android.database.MatrixCursor.newRow:()Landroid/database/MatrixCursor$RowBuilder;
            astore 3 /* row */
        start local 3 // android.database.MatrixCursor$RowBuilder row
         1: .line 395
            aload 3 /* row */
            ldc "document_id"
            aload 1 /* docId */
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         2: .line 396
            aload 3 /* row */
            ldc "_display_name"
            aload 1 /* docId */
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         3: .line 397
            aload 3 /* row */
            ldc "last_modified"
            invokestatic java.lang.System.currentTimeMillis:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         4: .line 398
            aload 3 /* row */
            ldc "flags"
            iload 2 /* flags */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         5: .line 400
            ldc "myDoc"
            aload 1 /* docId */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 9
         6: .line 401
            aload 3 /* row */
            ldc "mime_type"
            ldc "vnd.android.document/directory"
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         7: .line 402
            aload 3 /* row */
            ldc "flags"
            bipush 8
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         8: .line 403
            goto 11
      StackMap locals: android.database.MatrixCursor$RowBuilder
      StackMap stack:
         9: ldc "myNull"
            aload 1 /* docId */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
        10: .line 406
            aload 3 /* row */
            ldc "mime_type"
            ldc "application/octet-stream"
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
        11: .line 408
      StackMap locals:
      StackMap stack:
            return
        end local 3 // android.database.MatrixCursor$RowBuilder row
        end local 2 // int flags
        end local 1 // java.lang.String docId
        end local 0 // android.database.MatrixCursor result
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0  result  Landroid/database/MatrixCursor;
            0   12     1   docId  Ljava/lang/String;
            0   12     2   flags  I
            1   12     3     row  Landroid/database/MatrixCursor$RowBuilder;
    MethodParameters:
        Name  Flags
      result  
      docId   
      flags   
}
SourceFile: "TestDocumentsProvider.java"
NestMembers:
  com.android.externalstorage.TestDocumentsProvider$1  com.android.externalstorage.TestDocumentsProvider$2  com.android.externalstorage.TestDocumentsProvider$3  com.android.externalstorage.TestDocumentsProvider$4  com.android.externalstorage.TestDocumentsProvider$CloudCursor  com.android.externalstorage.TestDocumentsProvider$CloudTask
InnerClasses:
  public RowBuilder = android.database.MatrixCursor$RowBuilder of android.database.MatrixCursor
  public final CompressFormat = android.graphics.Bitmap$CompressFormat of android.graphics.Bitmap
  public final Config = android.graphics.Bitmap$Config of android.graphics.Bitmap
  public abstract OnCancelListener = android.os.CancellationSignal$OnCancelListener of android.os.CancellationSignal
  com.android.externalstorage.TestDocumentsProvider$1
  com.android.externalstorage.TestDocumentsProvider$2
  com.android.externalstorage.TestDocumentsProvider$3
  private CloudCursor = com.android.externalstorage.TestDocumentsProvider$CloudCursor of com.android.externalstorage.TestDocumentsProvider
  private CloudTask = com.android.externalstorage.TestDocumentsProvider$CloudTask of com.android.externalstorage.TestDocumentsProvider