public class com.android.shell.BugreportStorageProvider extends com.android.internal.content.FileSystemProvider
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.android.shell.BugreportStorageProvider
  super_class: com.android.internal.content.FileSystemProvider
{
  private static final java.lang.String AUTHORITY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.android.shell.documents"

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

  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.io.File mRoot;
    descriptor: Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 39
            iconst_5
            anewarray java.lang.String
            dup
            iconst_0
         1: .line 40
            ldc "root_id"
            aastore
            dup
            iconst_1
            ldc "flags"
            aastore
            dup
            iconst_2
            ldc "icon"
            aastore
            dup
            iconst_3
            ldc "title"
            aastore
            dup
            iconst_4
         2: .line 41
            ldc "document_id"
            aastore
         3: .line 39
            putstatic com.android.shell.BugreportStorageProvider.DEFAULT_ROOT_PROJECTION:[Ljava/lang/String;
         4: .line 44
            bipush 6
            anewarray java.lang.String
            dup
            iconst_0
         5: .line 45
            ldc "document_id"
            aastore
            dup
            iconst_1
            ldc "mime_type"
            aastore
            dup
            iconst_2
            ldc "_display_name"
            aastore
            dup
            iconst_3
         6: .line 46
            ldc "last_modified"
            aastore
            dup
            iconst_4
            ldc "flags"
            aastore
            dup
            iconst_5
            ldc "_size"
            aastore
         7: .line 44
            putstatic com.android.shell.BugreportStorageProvider.DEFAULT_DOCUMENT_PROJECTION:[Ljava/lang/String;
         8: .line 47
            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.shell.BugreportStorageProvider this
         0: .line 35
            aload 0 /* this */
            invokespecial com.android.internal.content.FileSystemProvider.<init>:()V
            return
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/shell/BugreportStorageProvider;

  public boolean onCreate();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.android.shell.BugreportStorageProvider this
         0: .line 53
            aload 0 /* this */
            getstatic com.android.shell.BugreportStorageProvider.DEFAULT_DOCUMENT_PROJECTION:[Ljava/lang/String;
            invokespecial com.android.internal.content.FileSystemProvider.onCreate:([Ljava/lang/String;)V
         1: .line 54
            aload 0 /* this */
            new java.io.File
            dup
            aload 0 /* this */
            invokevirtual com.android.shell.BugreportStorageProvider.getContext:()Landroid/content/Context;
            invokevirtual android.content.Context.getFilesDir:()Ljava/io/File;
            ldc "bugreports"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            putfield com.android.shell.BugreportStorageProvider.mRoot:Ljava/io/File;
         2: .line 55
            iconst_1
            ireturn
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/android/shell/BugreportStorageProvider;

  public android.database.Cursor queryRoots(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.android.shell.BugreportStorageProvider this
         0: .line 64
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tandroid.R.mipmap cannot be resolved to a variable\n\tR cannot be resolved to a variable\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/shell/BugreportStorageProvider;
    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.shell.BugreportStorageProvider this
        start local 1 // java.lang.String documentId
        start local 2 // java.lang.String[] projection
         0: .line 73
            ldc "bugreport"
            aload 1 /* documentId */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 4
         1: .line 74
            new android.database.MatrixCursor
            dup
            aload 2 /* projection */
            invokestatic com.android.shell.BugreportStorageProvider.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 75
            aload 0 /* this */
            aload 3 /* result */
            invokevirtual com.android.shell.BugreportStorageProvider.includeDefaultDocument:(Landroid/database/MatrixCursor;)V
         3: .line 76
            aload 3 /* result */
            areturn
        end local 3 // android.database.MatrixCursor result
         4: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* documentId */
            aload 2 /* projection */
            invokespecial com.android.internal.content.FileSystemProvider.queryDocument:(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.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/android/shell/BugreportStorageProvider;
            0    5     1  documentId  Ljava/lang/String;
            0    5     2  projection  [Ljava/lang/String;
            2    4     3      result  Landroid/database/MatrixCursor;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  
      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=5, locals=4, args_size=4
        start local 0 // com.android.shell.BugreportStorageProvider this
        start local 1 // java.lang.String documentId
        start local 2 // java.lang.String mode
        start local 3 // android.os.CancellationSignal signal
         0: .line 86
            aload 2 /* mode */
            invokestatic android.os.ParcelFileDescriptor.parseMode:(Ljava/lang/String;)I
            ldc 268435456
            if_icmpeq 2
         1: .line 87
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Failed to open: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* documentId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", mode = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* mode */
            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
         2: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* documentId */
            invokevirtual com.android.shell.BugreportStorageProvider.getFileForDocId:(Ljava/lang/String;)Ljava/io/File;
         3: .line 90
            ldc 268435456
         4: .line 89
            invokestatic android.os.ParcelFileDescriptor.open:(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor;
            areturn
        end local 3 // android.os.CancellationSignal signal
        end local 2 // java.lang.String mode
        end local 1 // java.lang.String documentId
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0        this  Lcom/android/shell/BugreportStorageProvider;
            0    5     1  documentId  Ljava/lang/String;
            0    5     2        mode  Ljava/lang/String;
            0    5     3      signal  Landroid/os/CancellationSignal;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  
      mode        
      signal      

  protected android.net.Uri buildNotificationUri(java.lang.String);
    descriptor: (Ljava/lang/String;)Landroid/net/Uri;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.shell.BugreportStorageProvider this
        start local 1 // java.lang.String docId
         0: .line 95
            ldc "com.android.shell.documents"
            aload 1 /* docId */
            invokestatic android.provider.DocumentsContract.buildChildDocumentsUri:(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
            areturn
        end local 1 // java.lang.String docId
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/android/shell/BugreportStorageProvider;
            0    1     1  docId  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      docId  

  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 99
            aload 0 /* projection */
            ifnull 1
            aload 0 /* projection */
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic com.android.shell.BugreportStorageProvider.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 103
            aload 0 /* projection */
            ifnull 1
            aload 0 /* projection */
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic com.android.shell.BugreportStorageProvider.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  

  protected java.lang.String getDocIdForFile(java.io.File);
    descriptor: (Ljava/io/File;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.android.shell.BugreportStorageProvider this
        start local 1 // java.io.File file
         0: .line 108
            new java.lang.StringBuilder
            dup
            ldc "bugreport:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.io.File file
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/shell/BugreportStorageProvider;
            0    1     1  file  Ljava/io/File;
    MethodParameters:
      Name  Flags
      file  

  protected java.io.File getFileForDocId(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/io/File;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=6, args_size=3
        start local 0 // com.android.shell.BugreportStorageProvider this
        start local 1 // java.lang.String documentId
        start local 2 // boolean visible
         0: .line 114
            ldc "bugreport"
            aload 1 /* documentId */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 115
            aload 0 /* this */
            getfield com.android.shell.BugreportStorageProvider.mRoot:Ljava/io/File;
            areturn
         2: .line 117
      StackMap locals:
      StackMap stack:
            aload 1 /* documentId */
            bipush 58
            iconst_1
            invokevirtual java.lang.String.indexOf:(II)I
            istore 3 /* splitIndex */
        start local 3 // int splitIndex
         3: .line 118
            aload 1 /* documentId */
            iload 3 /* splitIndex */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         4: .line 119
            iload 3 /* splitIndex */
            iconst_m1
            if_icmpeq 6
            ldc "bugreport"
            aload 1 /* documentId */
            iconst_0
            iload 3 /* splitIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 6
         5: .line 120
            aload 4 /* name */
            invokestatic android.os.FileUtils.isValidExtFilename:(Ljava/lang/String;)Z
            ifne 7
         6: .line 121
      StackMap locals: int java.lang.String
      StackMap stack:
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid document 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
         7: .line 123
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* this */
            getfield com.android.shell.BugreportStorageProvider.mRoot:Ljava/io/File;
            aload 4 /* name */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 5 /* file */
        start local 5 // java.io.File file
         8: .line 124
            aload 5 /* file */
            invokevirtual java.io.File.exists:()Z
            ifne 10
         9: .line 125
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "File not found: "
            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
        10: .line 127
      StackMap locals: java.io.File
      StackMap stack:
            aload 5 /* file */
            areturn
        end local 5 // java.io.File file
        end local 4 // java.lang.String name
        end local 3 // int splitIndex
        end local 2 // boolean visible
        end local 1 // java.lang.String documentId
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lcom/android/shell/BugreportStorageProvider;
            0   11     1  documentId  Ljava/lang/String;
            0   11     2     visible  Z
            3   11     3  splitIndex  I
            4   11     4        name  Ljava/lang/String;
            8   11     5        file  Ljava/io/File;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      documentId  
      visible     

  protected android.database.MatrixCursor$RowBuilder includeFile(android.database.MatrixCursor, java.lang.String, java.io.File);
    descriptor: (Landroid/database/MatrixCursor;Ljava/lang/String;Ljava/io/File;)Landroid/database/MatrixCursor$RowBuilder;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.android.shell.BugreportStorageProvider this
        start local 1 // android.database.MatrixCursor result
        start local 2 // java.lang.String docId
        start local 3 // java.io.File file
         0: .line 134
            aload 0 /* this */
            aload 1 /* result */
            aload 2 /* docId */
            aload 3 /* file */
            invokespecial com.android.internal.content.FileSystemProvider.includeFile:(Landroid/database/MatrixCursor;Ljava/lang/String;Ljava/io/File;)Landroid/database/MatrixCursor$RowBuilder;
            astore 4 /* row */
        start local 4 // android.database.MatrixCursor$RowBuilder row
         1: .line 135
            aload 4 /* row */
            ldc "flags"
            iconst_4
            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
         2: .line 136
            aload 4 /* row */
            areturn
        end local 4 // android.database.MatrixCursor$RowBuilder row
        end local 3 // java.io.File file
        end local 2 // java.lang.String docId
        end local 1 // android.database.MatrixCursor result
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/android/shell/BugreportStorageProvider;
            0    3     1  result  Landroid/database/MatrixCursor;
            0    3     2   docId  Ljava/lang/String;
            0    3     3    file  Ljava/io/File;
            1    3     4     row  Landroid/database/MatrixCursor$RowBuilder;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
        Name  Flags
      result  
      docId   
      file    

  private void includeDefaultDocument(android.database.MatrixCursor);
    descriptor: (Landroid/database/MatrixCursor;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.android.shell.BugreportStorageProvider this
        start local 1 // android.database.MatrixCursor result
         0: .line 140
            aload 1 /* result */
            invokevirtual android.database.MatrixCursor.newRow:()Landroid/database/MatrixCursor$RowBuilder;
            astore 2 /* row */
        start local 2 // android.database.MatrixCursor$RowBuilder row
         1: .line 141
            aload 2 /* row */
            ldc "document_id"
            ldc "bugreport"
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         2: .line 142
            aload 2 /* 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
         3: .line 143
            aload 2 /* row */
            ldc "_display_name"
            aload 0 /* this */
            getfield com.android.shell.BugreportStorageProvider.mRoot:Ljava/io/File;
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         4: .line 144
            aload 2 /* row */
            ldc "last_modified"
            aload 0 /* this */
            getfield com.android.shell.BugreportStorageProvider.mRoot:Ljava/io/File;
            invokevirtual java.io.File.lastModified:()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
         5: .line 145
            aload 2 /* row */
            ldc "flags"
            bipush 32
            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
         6: .line 146
            return
        end local 2 // android.database.MatrixCursor$RowBuilder row
        end local 1 // android.database.MatrixCursor result
        end local 0 // com.android.shell.BugreportStorageProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/android/shell/BugreportStorageProvider;
            0    7     1  result  Landroid/database/MatrixCursor;
            1    7     2     row  Landroid/database/MatrixCursor$RowBuilder;
    MethodParameters:
        Name  Flags
      result  
}
SourceFile: "BugreportStorageProvider.java"
InnerClasses:
  public RowBuilder = android.database.MatrixCursor$RowBuilder of android.database.MatrixCursor