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

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

  public static final java.lang.String AUTHORITY;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.android.externalstorage.documents"

  private static final android.net.Uri BASE_URI;
    descriptor: Landroid/net/Uri;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  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 static final java.lang.String ROOT_ID_PRIMARY_EMULATED;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "primary"

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

  private android.os.storage.StorageManager mStorageManager;
    descriptor: Landroid/os/storage/StorageManager;
    flags: (0x0002) ACC_PRIVATE

  private android.os.UserManager mUserManager;
    descriptor: Landroid/os/UserManager;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.Object mRootsLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private android.util.ArrayMap<java.lang.String, com.android.externalstorage.ExternalStorageProvider$RootInfo> mRoots;
    descriptor: Landroid/util/ArrayMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Landroid/util/ArrayMap<Ljava/lang/String;Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;>;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.GuardedBy(value = "mRootsLock")

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 72
            new android.net.Uri$Builder
            dup
            invokespecial android.net.Uri$Builder.<init>:()V
            ldc "content"
            invokevirtual android.net.Uri$Builder.scheme:(Ljava/lang/String;)Landroid/net/Uri$Builder;
            ldc "com.android.externalstorage.documents"
            invokevirtual android.net.Uri$Builder.authority:(Ljava/lang/String;)Landroid/net/Uri$Builder;
            invokevirtual android.net.Uri$Builder.build:()Landroid/net/Uri;
         1: .line 71
            putstatic com.android.externalstorage.ExternalStorageProvider.BASE_URI:Landroid/net/Uri;
         2: .line 76
            bipush 6
            anewarray java.lang.String
            dup
            iconst_0
         3: .line 77
            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
         4: .line 78
            ldc "document_id"
            aastore
            dup
            iconst_5
            ldc "available_bytes"
            aastore
         5: .line 76
            putstatic com.android.externalstorage.ExternalStorageProvider.DEFAULT_ROOT_PROJECTION:[Ljava/lang/String;
         6: .line 81
            bipush 6
            anewarray java.lang.String
            dup
            iconst_0
         7: .line 82
            ldc "document_id"
            aastore
            dup
            iconst_1
            ldc "mime_type"
            aastore
            dup
            iconst_2
            ldc "_display_name"
            aastore
            dup
            iconst_3
         8: .line 83
            ldc "last_modified"
            aastore
            dup
            iconst_4
            ldc "flags"
            aastore
            dup
            iconst_5
            ldc "_size"
            aastore
         9: .line 81
            putstatic com.android.externalstorage.ExternalStorageProvider.DEFAULT_DOCUMENT_PROJECTION:[Ljava/lang/String;
        10: .line 99
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
         0: .line 64
            aload 0 /* this */
            invokespecial com.android.internal.content.FileSystemProvider.<init>:()V
         1: .line 104
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield com.android.externalstorage.ExternalStorageProvider.mRootsLock:Ljava/lang/Object;
         2: .line 107
            aload 0 /* this */
            new android.util.ArrayMap
            dup
            invokespecial android.util.ArrayMap.<init>:()V
            putfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
         3: .line 64
            return
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/android/externalstorage/ExternalStorageProvider;

  public boolean onCreate();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
         0: .line 111
            aload 0 /* this */
            getstatic com.android.externalstorage.ExternalStorageProvider.DEFAULT_DOCUMENT_PROJECTION:[Ljava/lang/String;
            invokespecial com.android.internal.content.FileSystemProvider.onCreate:([Ljava/lang/String;)V
         1: .line 113
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getContext:()Landroid/content/Context;
            ldc Landroid/os/storage/StorageManager;
            invokevirtual android.content.Context.getSystemService:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast android.os.storage.StorageManager
            putfield com.android.externalstorage.ExternalStorageProvider.mStorageManager:Landroid/os/storage/StorageManager;
         2: .line 114
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getContext:()Landroid/content/Context;
            ldc Landroid/os/UserManager;
            invokevirtual android.content.Context.getSystemService:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast android.os.UserManager
            putfield com.android.externalstorage.ExternalStorageProvider.mUserManager:Landroid/os/UserManager;
         3: .line 116
            aload 0 /* this */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.updateVolumes:()V
         4: .line 117
            iconst_1
            ireturn
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/android/externalstorage/ExternalStorageProvider;

  private void enforceShellRestrictions();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
         0: .line 121
            invokestatic android.os.UserHandle.getCallingAppId:()I
            sipush 2000
            if_icmpne 5
         1: .line 122
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mUserManager:Landroid/os/UserManager;
            ldc "no_usb_file_transfer"
            invokevirtual android.os.UserManager.hasUserRestriction:(Ljava/lang/String;)Z
            ifeq 5
         2: .line 123
            new java.lang.SecurityException
            dup
         3: .line 124
            new java.lang.StringBuilder
            dup
            ldc "Shell user cannot access files for user "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic android.os.UserHandle.myUserId:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 123
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 126
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/android/externalstorage/ExternalStorageProvider;

  protected int enforceReadPermissionInner(android.net.Uri, java.lang.String, android.os.IBinder);
    descriptor: (Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // android.net.Uri uri
        start local 2 // java.lang.String callingPkg
        start local 3 // android.os.IBinder callerToken
         0: .line 131
            aload 0 /* this */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.enforceShellRestrictions:()V
         1: .line 132
            aload 0 /* this */
            aload 1 /* uri */
            aload 2 /* callingPkg */
            aload 3 /* callerToken */
            invokespecial com.android.internal.content.FileSystemProvider.enforceReadPermissionInner:(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I
            ireturn
        end local 3 // android.os.IBinder callerToken
        end local 2 // java.lang.String callingPkg
        end local 1 // android.net.Uri uri
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    2     1          uri  Landroid/net/Uri;
            0    2     2   callingPkg  Ljava/lang/String;
            0    2     3  callerToken  Landroid/os/IBinder;
    Exceptions:
      throws java.lang.SecurityException
    MethodParameters:
             Name  Flags
      uri          
      callingPkg   
      callerToken  

  protected int enforceWritePermissionInner(android.net.Uri, java.lang.String, android.os.IBinder);
    descriptor: (Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // android.net.Uri uri
        start local 2 // java.lang.String callingPkg
        start local 3 // android.os.IBinder callerToken
         0: .line 138
            aload 0 /* this */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.enforceShellRestrictions:()V
         1: .line 139
            aload 0 /* this */
            aload 1 /* uri */
            aload 2 /* callingPkg */
            aload 3 /* callerToken */
            invokespecial com.android.internal.content.FileSystemProvider.enforceWritePermissionInner:(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I
            ireturn
        end local 3 // android.os.IBinder callerToken
        end local 2 // java.lang.String callingPkg
        end local 1 // android.net.Uri uri
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    2     1          uri  Landroid/net/Uri;
            0    2     2   callingPkg  Ljava/lang/String;
            0    2     3  callerToken  Landroid/os/IBinder;
    Exceptions:
      throws java.lang.SecurityException
    MethodParameters:
             Name  Flags
      uri          
      callingPkg   
      callerToken  

  public void updateVolumes();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
         0: .line 143
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRootsLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 144
            aload 0 /* this */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.updateVolumesLocked:()V
         2: .line 143
            aload 1
            monitorexit
         3: goto 6
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 1
            monitorexit
         5: athrow
         6: .line 146
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/android/externalstorage/ExternalStorageProvider;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any

  private void updateVolumesLocked();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
         0: .line 177
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tR 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.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/externalstorage/ExternalStorageProvider;

  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 294
            aload 0 /* projection */
            ifnull 1
            aload 0 /* projection */
            goto 2
      StackMap locals:
      StackMap stack:
         1: getstatic com.android.externalstorage.ExternalStorageProvider.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  

  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.externalstorage.ExternalStorageProvider this
        start local 1 // java.io.File file
         0: .line 299
            aload 0 /* this */
            aload 1 /* file */
            iconst_0
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getDocIdForFileMaybeCreate:(Ljava/io/File;Z)Ljava/lang/String;
            areturn
        end local 1 // java.io.File file
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    1     1  file  Ljava/io/File;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
      Name  Flags
      file  

  private java.lang.String getDocIdForFileMaybeCreate(java.io.File, boolean);
    descriptor: (Ljava/io/File;Z)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=7, args_size=3
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.io.File file
        start local 2 // boolean createNewDir
         0: .line 304
            aload 1 /* file */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            astore 3 /* path */
        start local 3 // java.lang.String path
         1: .line 307
            iconst_0
            istore 4 /* visiblePath */
        start local 4 // boolean visiblePath
         2: .line 308
            aload 0 /* this */
            aload 3 /* path */
            iconst_0
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getMostSpecificRootForPath:(Ljava/lang/String;Z)Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            astore 5 /* mostSpecificRoot */
        start local 5 // com.android.externalstorage.ExternalStorageProvider$RootInfo mostSpecificRoot
         3: .line 310
            aload 5 /* mostSpecificRoot */
            ifnonnull 6
         4: .line 312
            iconst_1
            istore 4 /* visiblePath */
         5: .line 313
            aload 0 /* this */
            aload 3 /* path */
            iconst_1
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getMostSpecificRootForPath:(Ljava/lang/String;Z)Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            astore 5 /* mostSpecificRoot */
         6: .line 316
      StackMap locals: java.lang.String int com.android.externalstorage.ExternalStorageProvider$RootInfo
      StackMap stack:
            aload 5 /* mostSpecificRoot */
            ifnonnull 8
         7: .line 317
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Failed to find root that contains "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* path */
            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
         8: .line 321
      StackMap locals:
      StackMap stack:
            iload 4 /* visiblePath */
            ifeq 10
         9: .line 322
            aload 5 /* mostSpecificRoot */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.visiblePath:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            goto 11
        10: .line 323
      StackMap locals:
      StackMap stack:
            aload 5 /* mostSpecificRoot */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.path:Ljava/io/File;
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
        11: .line 321
      StackMap locals:
      StackMap stack: java.lang.String
            astore 6 /* rootPath */
        start local 6 // java.lang.String rootPath
        12: .line 324
            aload 6 /* rootPath */
            aload 3 /* path */
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 15
        13: .line 325
            ldc ""
            astore 3 /* path */
        14: .line 326
            goto 19
      StackMap locals: java.lang.String
      StackMap stack:
        15: aload 6 /* rootPath */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 18
        16: .line 327
            aload 3 /* path */
            aload 6 /* rootPath */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* path */
        17: .line 328
            goto 19
        18: .line 329
      StackMap locals:
      StackMap stack:
            aload 3 /* path */
            aload 6 /* rootPath */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 3 /* path */
        19: .line 332
      StackMap locals:
      StackMap stack:
            aload 1 /* file */
            invokevirtual java.io.File.exists:()Z
            ifne 23
            iload 2 /* createNewDir */
            ifeq 23
        20: .line 333
            ldc "ExternalStorage"
            new java.lang.StringBuilder
            dup
            ldc "Creating new directory "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.i:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        21: .line 334
            aload 1 /* file */
            invokevirtual java.io.File.mkdir:()Z
            ifne 23
        22: .line 335
            ldc "ExternalStorage"
            new java.lang.StringBuilder
            dup
            ldc "Could not create directory "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* file */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        23: .line 339
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 5 /* mostSpecificRoot */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.rootId:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            bipush 58
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            aload 3 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 6 // java.lang.String rootPath
        end local 5 // com.android.externalstorage.ExternalStorageProvider$RootInfo mostSpecificRoot
        end local 4 // boolean visiblePath
        end local 3 // java.lang.String path
        end local 2 // boolean createNewDir
        end local 1 // java.io.File file
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   24     0              this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   24     1              file  Ljava/io/File;
            0   24     2      createNewDir  Z
            1   24     3              path  Ljava/lang/String;
            2   24     4       visiblePath  Z
            3   24     5  mostSpecificRoot  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
           12   24     6          rootPath  Ljava/lang/String;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
              Name  Flags
      file          
      createNewDir  

  private com.android.externalstorage.ExternalStorageProvider$RootInfo getMostSpecificRootForPath(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=10, args_size=3
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String path
        start local 2 // boolean visible
         0: .line 344
            aconst_null
            astore 3 /* mostSpecificRoot */
        start local 3 // com.android.externalstorage.ExternalStorageProvider$RootInfo mostSpecificRoot
         1: .line 345
            aconst_null
            astore 4 /* mostSpecificPath */
        start local 4 // java.lang.String mostSpecificPath
         2: .line 346
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRootsLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         3: .line 347
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         4: goto 16
         5: .line 348
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String int com.android.externalstorage.ExternalStorageProvider$RootInfo java.lang.String java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            iload 6 /* i */
            invokevirtual android.util.ArrayMap.valueAt:(I)Ljava/lang/Object;
            checkcast com.android.externalstorage.ExternalStorageProvider$RootInfo
            astore 7 /* root */
        start local 7 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         6: .line 349
            iload 2 /* visible */
            ifeq 7
            aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.visiblePath:Ljava/io/File;
            goto 8
      StackMap locals: com.android.externalstorage.ExternalStorageProvider$RootInfo
      StackMap stack:
         7: aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.path:Ljava/io/File;
      StackMap locals:
      StackMap stack: java.io.File
         8: astore 8 /* rootFile */
        start local 8 // java.io.File rootFile
         9: .line 350
            aload 8 /* rootFile */
            ifnull 15
        10: .line 351
            aload 8 /* rootFile */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            astore 9 /* rootPath */
        start local 9 // java.lang.String rootPath
        11: .line 352
            aload 1 /* path */
            aload 9 /* rootPath */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 15
            aload 4 /* mostSpecificPath */
            ifnull 13
        12: .line 353
            aload 9 /* rootPath */
            invokevirtual java.lang.String.length:()I
            aload 4 /* mostSpecificPath */
            invokevirtual java.lang.String.length:()I
            if_icmple 15
        13: .line 354
      StackMap locals: java.io.File java.lang.String
      StackMap stack:
            aload 7 /* root */
            astore 3 /* mostSpecificRoot */
        14: .line 355
            aload 9 /* rootPath */
            astore 4 /* mostSpecificPath */
        end local 9 // java.lang.String rootPath
        end local 8 // java.io.File rootFile
        end local 7 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        15: .line 347
      StackMap locals:
      StackMap stack:
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 6 /* i */
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.size:()I
            if_icmplt 5
        end local 6 // int i
        17: .line 346
            aload 5
            monitorexit
        18: goto 21
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String int com.android.externalstorage.ExternalStorageProvider$RootInfo java.lang.String java.lang.Object
      StackMap stack: java.lang.Throwable
        19: aload 5
            monitorexit
        20: athrow
        21: .line 361
      StackMap locals:
      StackMap stack:
            aload 3 /* mostSpecificRoot */
            areturn
        end local 4 // java.lang.String mostSpecificPath
        end local 3 // com.android.externalstorage.ExternalStorageProvider$RootInfo mostSpecificRoot
        end local 2 // boolean visible
        end local 1 // java.lang.String path
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   22     0              this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   22     1              path  Ljava/lang/String;
            0   22     2           visible  Z
            1   22     3  mostSpecificRoot  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            2   22     4  mostSpecificPath  Ljava/lang/String;
            4   17     6                 i  I
            6   15     7              root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            9   15     8          rootFile  Ljava/io/File;
           11   15     9          rootPath  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3    18      19  any
          19    20      19  any
    MethodParameters:
         Name  Flags
      path     
      visible  

  protected java.io.File getFileForDocId(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Ljava/io/File;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String docId
        start local 2 // boolean visible
         0: .line 366
            aload 0 /* this */
            aload 1 /* docId */
            iload 2 /* visible */
            iconst_1
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getFileForDocId:(Ljava/lang/String;ZZ)Ljava/io/File;
            areturn
        end local 2 // boolean visible
        end local 1 // java.lang.String docId
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    1     1    docId  Ljava/lang/String;
            0    1     2  visible  Z
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
         Name  Flags
      docId    
      visible  

  private java.io.File getFileForDocId(java.lang.String, boolean, boolean);
    descriptor: (Ljava/lang/String;ZZ)Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String docId
        start local 2 // boolean visible
        start local 3 // boolean mustExist
         0: .line 371
            aload 0 /* this */
            aload 1 /* docId */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getRootFromDocId:(Ljava/lang/String;)Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            astore 4 /* root */
        start local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         1: .line 372
            aload 0 /* this */
            aload 4 /* root */
            aload 1 /* docId */
            iload 2 /* visible */
            iload 3 /* mustExist */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.buildFile:(Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;Ljava/lang/String;ZZ)Ljava/io/File;
            areturn
        end local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        end local 3 // boolean mustExist
        end local 2 // boolean visible
        end local 1 // java.lang.String docId
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    2     1      docId  Ljava/lang/String;
            0    2     2    visible  Z
            0    2     3  mustExist  Z
            1    2     4       root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
           Name  Flags
      docId      
      visible    
      mustExist  

  private android.util.Pair<com.android.externalstorage.ExternalStorageProvider$RootInfo, java.io.File> resolveDocId(java.lang.String, boolean);
    descriptor: (Ljava/lang/String;Z)Landroid/util/Pair;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=3
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String docId
        start local 2 // boolean visible
         0: .line 377
            aload 0 /* this */
            aload 1 /* docId */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getRootFromDocId:(Ljava/lang/String;)Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            astore 3 /* root */
        start local 3 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         1: .line 378
            aload 3 /* root */
            aload 0 /* this */
            aload 3 /* root */
            aload 1 /* docId */
            iload 2 /* visible */
            iconst_1
            invokevirtual com.android.externalstorage.ExternalStorageProvider.buildFile:(Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;Ljava/lang/String;ZZ)Ljava/io/File;
            invokestatic android.util.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;
            areturn
        end local 3 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        end local 2 // boolean visible
        end local 1 // java.lang.String docId
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    2     1    docId  Ljava/lang/String;
            0    2     2  visible  Z
            1    2     3     root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
    Exceptions:
      throws java.io.FileNotFoundException
    Signature: (Ljava/lang/String;Z)Landroid/util/Pair<Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;Ljava/io/File;>;
    MethodParameters:
         Name  Flags
      docId    
      visible  

  private com.android.externalstorage.ExternalStorageProvider$RootInfo getRootFromDocId(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=6, args_size=2
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String docId
         0: .line 382
            aload 1 /* docId */
            bipush 58
            iconst_1
            invokevirtual java.lang.String.indexOf:(II)I
            istore 2 /* splitIndex */
        start local 2 // int splitIndex
         1: .line 383
            aload 1 /* docId */
            iconst_0
            iload 2 /* splitIndex */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* tag */
        start local 3 // java.lang.String tag
         2: .line 386
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRootsLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         3: .line 387
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            aload 3 /* tag */
            invokevirtual android.util.ArrayMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.android.externalstorage.ExternalStorageProvider$RootInfo
            astore 4 /* root */
        start local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         4: .line 386
            aload 5
            monitorexit
         5: goto 8
        end local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String int java.lang.String top java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 5
            monitorexit
         7: athrow
        start local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         8: .line 389
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String int java.lang.String com.android.externalstorage.ExternalStorageProvider$RootInfo
      StackMap stack:
            aload 4 /* root */
            ifnonnull 10
         9: .line 390
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "No root for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* tag */
            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 393
      StackMap locals:
      StackMap stack:
            aload 4 /* root */
            areturn
        end local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        end local 3 // java.lang.String tag
        end local 2 // int splitIndex
        end local 1 // java.lang.String docId
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   11     0        this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   11     1       docId  Ljava/lang/String;
            1   11     2  splitIndex  I
            2   11     3         tag  Ljava/lang/String;
            4    6     4        root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            8   11     4        root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
      Exception table:
        from    to  target  type
           3     5       6  any
           6     7       6  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
       Name  Flags
      docId  

  private java.io.File buildFile(com.android.externalstorage.ExternalStorageProvider$RootInfo, java.lang.String, boolean, boolean);
    descriptor: (Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;Ljava/lang/String;ZZ)Ljava/io/File;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        start local 2 // java.lang.String docId
        start local 3 // boolean visible
        start local 4 // boolean mustExist
         0: .line 398
            aload 2 /* docId */
            bipush 58
            iconst_1
            invokevirtual java.lang.String.indexOf:(II)I
            istore 5 /* splitIndex */
        start local 5 // int splitIndex
         1: .line 399
            aload 2 /* docId */
            iload 5 /* splitIndex */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 6 /* path */
        start local 6 // java.lang.String path
         2: .line 401
            iload 3 /* visible */
            ifeq 3
            aload 1 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.visiblePath:Ljava/io/File;
            goto 4
      StackMap locals: int java.lang.String
      StackMap stack:
         3: aload 1 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.path:Ljava/io/File;
      StackMap locals:
      StackMap stack: java.io.File
         4: astore 7 /* target */
        start local 7 // java.io.File target
         5: .line 402
            aload 7 /* target */
            ifnonnull 7
         6: .line 403
            aconst_null
            areturn
         7: .line 405
      StackMap locals: java.io.File
      StackMap stack:
            aload 7 /* target */
            invokevirtual java.io.File.exists:()Z
            ifne 9
         8: .line 406
            aload 7 /* target */
            invokevirtual java.io.File.mkdirs:()Z
            pop
         9: .line 408
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            aload 7 /* target */
            aload 6 /* path */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 7 /* target */
        10: .line 409
            iload 4 /* mustExist */
            ifeq 12
            aload 7 /* target */
            invokevirtual java.io.File.exists:()Z
            ifne 12
        11: .line 410
            new java.io.FileNotFoundException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Missing file for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* docId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " at "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 7 /* target */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.FileNotFoundException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 412
      StackMap locals:
      StackMap stack:
            aload 7 /* target */
            areturn
        end local 7 // java.io.File target
        end local 6 // java.lang.String path
        end local 5 // int splitIndex
        end local 4 // boolean mustExist
        end local 3 // boolean visible
        end local 2 // java.lang.String docId
        end local 1 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   13     0        this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   13     1        root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            0   13     2       docId  Ljava/lang/String;
            0   13     3     visible  Z
            0   13     4   mustExist  Z
            1   13     5  splitIndex  I
            2   13     6        path  Ljava/lang/String;
            5   13     7      target  Ljava/io/File;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
           Name  Flags
      root       
      docId      
      visible    
      mustExist  

  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.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String docId
         0: .line 417
            ldc "com.android.externalstorage.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.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    1     1  docId  Ljava/lang/String;
    MethodParameters:
       Name  Flags
      docId  

  protected void onDocIdChanged(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
         0: .line 427
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tOs cannot be resolved\n\tOsConstants cannot be resolved to a variable\n\tNo exception of type Object can be thrown; an exception type must be a subclass of Throwable\n\tErrnoException cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/externalstorage/ExternalStorageProvider;
    MethodParameters:
       Name  Flags
      docId  

  public android.database.Cursor queryRoots(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)Landroid/database/Cursor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String[] projection
         0: .line 435
            new android.database.MatrixCursor
            dup
            aload 1 /* projection */
            invokestatic com.android.externalstorage.ExternalStorageProvider.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
         1: .line 436
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRootsLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         2: .line 437
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 22
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String[] android.database.MatrixCursor java.lang.Object top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.android.externalstorage.ExternalStorageProvider$RootInfo
            astore 4 /* root */
        start local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         4: .line 438
            aload 2 /* result */
            invokevirtual android.database.MatrixCursor.newRow:()Landroid/database/MatrixCursor$RowBuilder;
            astore 6 /* row */
        start local 6 // android.database.MatrixCursor$RowBuilder row
         5: .line 439
            aload 6 /* row */
            ldc "root_id"
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.rootId:Ljava/lang/String;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         6: .line 440
            aload 6 /* row */
            ldc "flags"
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.flags:I
            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
         7: .line 441
            aload 6 /* row */
            ldc "title"
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.title:Ljava/lang/String;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         8: .line 442
            aload 6 /* row */
            ldc "document_id"
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.docId:Ljava/lang/String;
            invokevirtual android.database.MatrixCursor$RowBuilder.add:(Ljava/lang/String;Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
            pop
         9: .line 444
            ldc -1
            lstore 7 /* availableBytes */
        start local 7 // long availableBytes
        10: .line 445
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.reportAvailableBytes:Z
            ifeq 21
        11: .line 446
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.storageUuid:Ljava/util/UUID;
            ifnull 20
        12: .line 448
            aload 0 /* this */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getContext:()Landroid/content/Context;
        13: .line 449
            ldc Landroid/app/usage/StorageStatsManager;
            invokevirtual android.content.Context.getSystemService:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast android.app.usage.StorageStatsManager
        14: .line 450
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.storageUuid:Ljava/util/UUID;
            invokevirtual android.app.usage.StorageStatsManager.getFreeBytes:(Ljava/util/UUID;)J
        15: .line 448
            lstore 7 /* availableBytes */
        16: .line 451
            goto 21
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String[] android.database.MatrixCursor java.lang.Object com.android.externalstorage.ExternalStorageProvider$RootInfo java.util.Iterator android.database.MatrixCursor$RowBuilder long
      StackMap stack: java.io.IOException
        17: astore 9 /* e */
        start local 9 // java.io.IOException e
        18: .line 452
            ldc "ExternalStorage"
            aload 9 /* e */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        end local 9 // java.io.IOException e
        19: .line 454
            goto 21
        20: .line 455
      StackMap locals:
      StackMap stack:
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.path:Ljava/io/File;
            invokevirtual java.io.File.getUsableSpace:()J
            lstore 7 /* availableBytes */
        21: .line 458
      StackMap locals:
      StackMap stack:
            aload 6 /* row */
            ldc "available_bytes"
            lload 7 /* availableBytes */
            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
        end local 7 // long availableBytes
        end local 6 // android.database.MatrixCursor$RowBuilder row
        end local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        22: .line 437
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String[] android.database.MatrixCursor java.lang.Object top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        23: .line 436
            aload 3
            monitorexit
        24: goto 27
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String[] android.database.MatrixCursor java.lang.Object
      StackMap stack: java.lang.Throwable
        25: aload 3
            monitorexit
        26: athrow
        27: .line 461
      StackMap locals:
      StackMap stack:
            aload 2 /* result */
            areturn
        end local 2 // android.database.MatrixCursor result
        end local 1 // java.lang.String[] projection
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   28     0            this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   28     1      projection  [Ljava/lang/String;
            1   28     2          result  Landroid/database/MatrixCursor;
            4   22     4            root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            5   22     6             row  Landroid/database/MatrixCursor$RowBuilder;
           10   22     7  availableBytes  J
           18   19     9               e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          12    16      17  Class java.io.IOException
           2    24      25  any
          25    26      25  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      projection  

  public android.provider.DocumentsContract$Path findDocumentPath(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Landroid/provider/DocumentsContract$Path;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=3
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String parentDocId
        start local 2 // java.lang.String childDocId
         0: .line 467
            aload 0 /* this */
            aload 2 /* childDocId */
            iconst_0
            invokevirtual com.android.externalstorage.ExternalStorageProvider.resolveDocId:(Ljava/lang/String;Z)Landroid/util/Pair;
            astore 3 /* resolvedDocId */
        start local 3 // android.util.Pair resolvedDocId
         1: .line 468
            aload 3 /* resolvedDocId */
            getfield android.util.Pair.first:Ljava/lang/Object;
            checkcast com.android.externalstorage.ExternalStorageProvider$RootInfo
            astore 4 /* root */
        start local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         2: .line 469
            aload 3 /* resolvedDocId */
            getfield android.util.Pair.second:Ljava/lang/Object;
            checkcast java.io.File
            astore 5 /* child */
        start local 5 // java.io.File child
         3: .line 471
            aload 1 /* parentDocId */
            invokestatic android.text.TextUtils.isEmpty:(Ljava/lang/CharSequence;)Z
            ifeq 5
         4: .line 472
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.path:Ljava/io/File;
            goto 6
         5: .line 473
      StackMap locals: android.util.Pair com.android.externalstorage.ExternalStorageProvider$RootInfo java.io.File
      StackMap stack:
            aload 0 /* this */
            aload 1 /* parentDocId */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getFileForDocId:(Ljava/lang/String;)Ljava/io/File;
         6: .line 471
      StackMap locals:
      StackMap stack: java.io.File
            astore 6 /* parent */
        start local 6 // java.io.File parent
         7: .line 475
            new android.provider.DocumentsContract$Path
            dup
            aload 1 /* parentDocId */
            ifnonnull 8
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.rootId:Ljava/lang/String;
            goto 9
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.lang.String android.util.Pair com.android.externalstorage.ExternalStorageProvider$RootInfo java.io.File java.io.File
      StackMap stack: new 7 new 7
         8: aconst_null
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.lang.String android.util.Pair com.android.externalstorage.ExternalStorageProvider$RootInfo java.io.File java.io.File
      StackMap stack: new 7 new 7 java.lang.String
         9: aload 0 /* this */
            aload 6 /* parent */
            aload 5 /* child */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.findDocumentPath:(Ljava/io/File;Ljava/io/File;)Ljava/util/List;
            invokespecial android.provider.DocumentsContract$Path.<init>:(Ljava/lang/String;Ljava/util/List;)V
            areturn
        end local 6 // java.io.File parent
        end local 5 // java.io.File child
        end local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        end local 3 // android.util.Pair resolvedDocId
        end local 2 // java.lang.String childDocId
        end local 1 // java.lang.String parentDocId
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   10     1    parentDocId  Ljava/lang/String;
            0   10     2     childDocId  Ljava/lang/String;
            1   10     3  resolvedDocId  Landroid/util/Pair<Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;Ljava/io/File;>;
            2   10     4           root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            3   10     5          child  Ljava/io/File;
            7   10     6         parent  Ljava/io/File;
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
             Name  Flags
      parentDocId  
      childDocId   

  private android.net.Uri getDocumentUri(java.lang.String, java.util.List<android.content.UriPermission>);
    descriptor: (Ljava/lang/String;Ljava/util/List;)Landroid/net/Uri;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=12, args_size=3
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String path
        start local 2 // java.util.List accessUriPermissions
         0: .line 480
            new java.io.File
            dup
            aload 1 /* path */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* doc */
        start local 3 // java.io.File doc
         1: .line 482
            aload 0 /* this */
            aload 3 /* doc */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.getDocIdForFile:(Ljava/io/File;)Ljava/lang/String;
            astore 4 /* docId */
        start local 4 // java.lang.String docId
         2: .line 484
            aconst_null
            astore 5 /* docUriPermission */
        start local 5 // android.content.UriPermission docUriPermission
         3: .line 485
            aconst_null
            astore 6 /* treeUriPermission */
        start local 6 // android.content.UriPermission treeUriPermission
         4: .line 486
            aload 2 /* accessUriPermissions */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 8
            goto 21
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.util.List java.io.File java.lang.String android.content.UriPermission android.content.UriPermission top java.util.Iterator
      StackMap stack:
         5: aload 8
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.content.UriPermission
            astore 7 /* uriPermission */
        start local 7 // android.content.UriPermission uriPermission
         6: .line 487
            aload 7 /* uriPermission */
            invokevirtual android.content.UriPermission.getUri:()Landroid/net/Uri;
            astore 9 /* uri */
        start local 9 // android.net.Uri uri
         7: .line 488
            ldc "com.android.externalstorage.documents"
            aload 9 /* uri */
            invokevirtual android.net.Uri.getAuthority:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 21
         8: .line 489
            iconst_0
            istore 10 /* matchesRequestedDoc */
        start local 10 // boolean matchesRequestedDoc
         9: .line 490
            aload 9 /* uri */
            invokestatic android.provider.DocumentsContract.isTreeUri:(Landroid/net/Uri;)Z
            ifeq 15
        10: .line 491
            aload 9 /* uri */
            invokestatic android.provider.DocumentsContract.getTreeDocumentId:(Landroid/net/Uri;)Ljava/lang/String;
            astore 11 /* parentDocId */
        start local 11 // java.lang.String parentDocId
        11: .line 492
            aload 0 /* this */
            aload 11 /* parentDocId */
            aload 4 /* docId */
            invokevirtual com.android.externalstorage.ExternalStorageProvider.isChildDocument:(Ljava/lang/String;Ljava/lang/String;)Z
            ifeq 19
        12: .line 493
            aload 7 /* uriPermission */
            astore 6 /* treeUriPermission */
        13: .line 494
            iconst_1
            istore 10 /* matchesRequestedDoc */
        end local 11 // java.lang.String parentDocId
        14: .line 496
            goto 19
        15: .line 497
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.util.List java.io.File java.lang.String android.content.UriPermission android.content.UriPermission android.content.UriPermission java.util.Iterator android.net.Uri int
      StackMap stack:
            aload 9 /* uri */
            invokestatic android.provider.DocumentsContract.getDocumentId:(Landroid/net/Uri;)Ljava/lang/String;
            astore 11 /* candidateDocId */
        start local 11 // java.lang.String candidateDocId
        16: .line 498
            aload 4 /* docId */
            aload 11 /* candidateDocId */
            invokestatic java.util.Objects.equals:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 19
        17: .line 499
            aload 7 /* uriPermission */
            astore 5 /* docUriPermission */
        18: .line 500
            iconst_1
            istore 10 /* matchesRequestedDoc */
        end local 11 // java.lang.String candidateDocId
        19: .line 504
      StackMap locals:
      StackMap stack:
            iload 10 /* matchesRequestedDoc */
            ifeq 21
            aload 7 /* uriPermission */
            invokestatic com.android.externalstorage.ExternalStorageProvider.allowsBothReadAndWrite:(Landroid/content/UriPermission;)Z
            ifeq 21
        20: .line 507
            goto 22
        end local 10 // boolean matchesRequestedDoc
        end local 9 // android.net.Uri uri
        end local 7 // android.content.UriPermission uriPermission
        21: .line 486
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.util.List java.io.File java.lang.String android.content.UriPermission android.content.UriPermission top java.util.Iterator
      StackMap stack:
            aload 8
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        22: .line 513
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.util.List java.io.File java.lang.String android.content.UriPermission android.content.UriPermission
      StackMap stack:
            aload 6 /* treeUriPermission */
            invokestatic com.android.externalstorage.ExternalStorageProvider.allowsBothReadAndWrite:(Landroid/content/UriPermission;)Z
            ifeq 24
        23: .line 514
            aload 6 /* treeUriPermission */
            invokevirtual android.content.UriPermission.getUri:()Landroid/net/Uri;
            aload 4 /* docId */
            invokestatic android.provider.DocumentsContract.buildDocumentUriUsingTree:(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
            areturn
        24: .line 517
      StackMap locals:
      StackMap stack:
            aload 5 /* docUriPermission */
            invokestatic com.android.externalstorage.ExternalStorageProvider.allowsBothReadAndWrite:(Landroid/content/UriPermission;)Z
            ifeq 26
        25: .line 518
            aload 5 /* docUriPermission */
            invokevirtual android.content.UriPermission.getUri:()Landroid/net/Uri;
            areturn
        26: .line 522
      StackMap locals:
      StackMap stack:
            aload 6 /* treeUriPermission */
            ifnull 28
        27: .line 523
            aload 6 /* treeUriPermission */
            invokevirtual android.content.UriPermission.getUri:()Landroid/net/Uri;
            aload 4 /* docId */
            invokestatic android.provider.DocumentsContract.buildDocumentUriUsingTree:(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
            areturn
        28: .line 526
      StackMap locals:
      StackMap stack:
            aload 5 /* docUriPermission */
            ifnull 30
        29: .line 527
            aload 5 /* docUriPermission */
            invokevirtual android.content.UriPermission.getUri:()Landroid/net/Uri;
            areturn
        30: .line 530
      StackMap locals:
      StackMap stack:
            new java.lang.SecurityException
            dup
            new java.lang.StringBuilder
            dup
            ldc "The app is not given any access to the document under path "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        31: .line 531
            aload 1 /* path */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " with permissions granted in "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* accessUriPermissions */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        32: .line 530
            invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
            athrow
        end local 6 // android.content.UriPermission treeUriPermission
        end local 5 // android.content.UriPermission docUriPermission
        end local 4 // java.lang.String docId
        end local 3 // java.io.File doc
        end local 2 // java.util.List accessUriPermissions
        end local 1 // java.lang.String path
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   33     0                  this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   33     1                  path  Ljava/lang/String;
            0   33     2  accessUriPermissions  Ljava/util/List<Landroid/content/UriPermission;>;
            1   33     3                   doc  Ljava/io/File;
            2   33     4                 docId  Ljava/lang/String;
            3   33     5      docUriPermission  Landroid/content/UriPermission;
            4   33     6     treeUriPermission  Landroid/content/UriPermission;
            6   21     7         uriPermission  Landroid/content/UriPermission;
            7   21     9                   uri  Landroid/net/Uri;
            9   21    10   matchesRequestedDoc  Z
           11   14    11           parentDocId  Ljava/lang/String;
           16   19    11        candidateDocId  Ljava/lang/String;
    Exceptions:
      throws java.io.FileNotFoundException
    Signature: (Ljava/lang/String;Ljava/util/List<Landroid/content/UriPermission;>;)Landroid/net/Uri;
    MethodParameters:
                      Name  Flags
      path                  
      accessUriPermissions  

  private static boolean allowsBothReadAndWrite(android.content.UriPermission);
    descriptor: (Landroid/content/UriPermission;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.content.UriPermission permission
         0: .line 535
            aload 0 /* permission */
            ifnull 4
         1: .line 536
            aload 0 /* permission */
            invokevirtual android.content.UriPermission.isReadPermission:()Z
            ifeq 4
         2: .line 537
            aload 0 /* permission */
            invokevirtual android.content.UriPermission.isWritePermission:()Z
            ifeq 4
         3: .line 535
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         4: iconst_0
            ireturn
        end local 0 // android.content.UriPermission permission
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    5     0  permission  Landroid/content/UriPermission;
    MethodParameters:
            Name  Flags
      permission  

  public android.database.Cursor querySearchDocuments(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=5, locals=6, args_size=4
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String rootId
        start local 2 // java.lang.String query
        start local 3 // java.lang.String[] projection
         0: .line 544
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRootsLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         1: .line 545
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            aload 1 /* rootId */
            invokevirtual android.util.ArrayMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.android.externalstorage.ExternalStorageProvider$RootInfo
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.path:Ljava/io/File;
            astore 4 /* parent */
        start local 4 // java.io.File parent
         2: .line 544
            aload 5
            monitorexit
         3: goto 6
        end local 4 // java.io.File parent
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.lang.String java.lang.String[] top java.lang.Object
      StackMap stack: java.lang.Throwable
         4: aload 5
            monitorexit
         5: athrow
        start local 4 // java.io.File parent
         6: .line 548
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String java.lang.String java.lang.String[] java.io.File
      StackMap stack:
            aload 0 /* this */
            aload 4 /* parent */
            aload 2 /* query */
            aload 3 /* projection */
            invokestatic java.util.Collections.emptySet:()Ljava/util/Set;
            invokevirtual com.android.externalstorage.ExternalStorageProvider.querySearchDocuments:(Ljava/io/File;Ljava/lang/String;[Ljava/lang/String;Ljava/util/Set;)Landroid/database/Cursor;
            areturn
        end local 4 // java.io.File parent
        end local 3 // java.lang.String[] projection
        end local 2 // java.lang.String query
        end local 1 // java.lang.String rootId
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/android/externalstorage/ExternalStorageProvider;
            0    7     1      rootId  Ljava/lang/String;
            0    7     2       query  Ljava/lang/String;
            0    7     3  projection  [Ljava/lang/String;
            2    4     4      parent  Ljava/io/File;
            6    7     4      parent  Ljava/io/File;
      Exception table:
        from    to  target  type
           1     3       4  any
           4     5       4  any
    Exceptions:
      throws java.io.FileNotFoundException
    MethodParameters:
            Name  Flags
      rootId      
      query       
      projection  

  public void ejectRoot(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.lang.String rootId
         0: .line 553
            invokestatic android.os.Binder.clearCallingIdentity:()J
            lstore 2 /* token */
        start local 2 // long token
         1: .line 554
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            aload 1 /* rootId */
            invokevirtual android.util.ArrayMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.android.externalstorage.ExternalStorageProvider$RootInfo
            astore 4 /* root */
        start local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         2: .line 555
            aload 4 /* root */
            ifnull 11
         3: .line 557
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mStorageManager:Landroid/os/storage/StorageManager;
            aload 4 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.volumeId:Ljava/lang/String;
            invokevirtual android.os.storage.StorageManager.unmount:(Ljava/lang/String;)V
         4: .line 558
            goto 10
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.lang.String long com.android.externalstorage.ExternalStorageProvider$RootInfo
      StackMap stack: java.lang.RuntimeException
         5: astore 5 /* e */
        start local 5 // java.lang.RuntimeException e
         6: .line 559
            new java.lang.IllegalStateException
            dup
            aload 5 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 5 // java.lang.RuntimeException e
         7: .line 560
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 6
         8: .line 561
            lload 2 /* token */
            invokestatic android.os.Binder.restoreCallingIdentity:(J)V
         9: .line 562
            aload 6
            athrow
        10: .line 561
      StackMap locals:
      StackMap stack:
            lload 2 /* token */
            invokestatic android.os.Binder.restoreCallingIdentity:(J)V
        11: .line 564
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        end local 2 // long token
        end local 1 // java.lang.String rootId
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   12     0    this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   12     1  rootId  Ljava/lang/String;
            1   12     2   token  J
            2   12     4    root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
            6    7     5       e  Ljava/lang/RuntimeException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.RuntimeException
           3     7       7  any
    MethodParameters:
        Name  Flags
      rootId  

  public void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
    descriptor: (Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=4
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
        start local 1 // java.io.FileDescriptor fd
        start local 2 // java.io.PrintWriter writer
        start local 3 // java.lang.String[] args
         0: .line 568
            new com.android.internal.util.IndentingPrintWriter
            dup
            aload 2 /* writer */
            ldc "  "
            sipush 160
            invokespecial com.android.internal.util.IndentingPrintWriter.<init>:(Ljava/io/Writer;Ljava/lang/String;I)V
            astore 4 /* pw */
        start local 4 // com.android.internal.util.IndentingPrintWriter pw
         1: .line 569
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRootsLock:Ljava/lang/Object;
            dup
            astore 5
            monitorenter
         2: .line 570
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         3: goto 17
         4: .line 571
      StackMap locals: com.android.internal.util.IndentingPrintWriter java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            iload 6 /* i */
            invokevirtual android.util.ArrayMap.valueAt:(I)Ljava/lang/Object;
            checkcast com.android.externalstorage.ExternalStorageProvider$RootInfo
            astore 7 /* root */
        start local 7 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
         5: .line 572
            aload 4 /* pw */
            new java.lang.StringBuilder
            dup
            ldc "Root{"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.rootId:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "}:"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual com.android.internal.util.IndentingPrintWriter.println:(Ljava/lang/String;)V
         6: .line 573
            aload 4 /* pw */
            invokevirtual com.android.internal.util.IndentingPrintWriter.increaseIndent:()Lcom/android/internal/util/IndentingPrintWriter;
            pop
         7: .line 574
            aload 4 /* pw */
            ldc "flags"
            ldc Landroid/provider/DocumentsContract$Root;
            ldc "FLAG_"
            aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.flags:I
            invokestatic android.util.DebugUtils.flagsToString:(Ljava/lang/Class;Ljava/lang/String;I)Ljava/lang/String;
            invokevirtual com.android.internal.util.IndentingPrintWriter.printPair:(Ljava/lang/String;Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
            pop
         8: .line 575
            aload 4 /* pw */
            invokevirtual com.android.internal.util.IndentingPrintWriter.println:()V
         9: .line 576
            aload 4 /* pw */
            ldc "title"
            aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.title:Ljava/lang/String;
            invokevirtual com.android.internal.util.IndentingPrintWriter.printPair:(Ljava/lang/String;Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
            pop
        10: .line 577
            aload 4 /* pw */
            ldc "docId"
            aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.docId:Ljava/lang/String;
            invokevirtual com.android.internal.util.IndentingPrintWriter.printPair:(Ljava/lang/String;Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
            pop
        11: .line 578
            aload 4 /* pw */
            invokevirtual com.android.internal.util.IndentingPrintWriter.println:()V
        12: .line 579
            aload 4 /* pw */
            ldc "path"
            aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.path:Ljava/io/File;
            invokevirtual com.android.internal.util.IndentingPrintWriter.printPair:(Ljava/lang/String;Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
            pop
        13: .line 580
            aload 4 /* pw */
            ldc "visiblePath"
            aload 7 /* root */
            getfield com.android.externalstorage.ExternalStorageProvider$RootInfo.visiblePath:Ljava/io/File;
            invokevirtual com.android.internal.util.IndentingPrintWriter.printPair:(Ljava/lang/String;Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
            pop
        14: .line 581
            aload 4 /* pw */
            invokevirtual com.android.internal.util.IndentingPrintWriter.decreaseIndent:()Lcom/android/internal/util/IndentingPrintWriter;
            pop
        15: .line 582
            aload 4 /* pw */
            invokevirtual com.android.internal.util.IndentingPrintWriter.println:()V
        end local 7 // com.android.externalstorage.ExternalStorageProvider$RootInfo root
        16: .line 570
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 6 /* i */
            aload 0 /* this */
            getfield com.android.externalstorage.ExternalStorageProvider.mRoots:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.size:()I
            if_icmplt 4
        end local 6 // int i
        18: .line 569
            aload 5
            monitorexit
        19: goto 22
      StackMap locals: com.android.externalstorage.ExternalStorageProvider java.io.FileDescriptor java.io.PrintWriter java.lang.String[] com.android.internal.util.IndentingPrintWriter java.lang.Object
      StackMap stack: java.lang.Throwable
        20: aload 5
            monitorexit
        21: athrow
        22: .line 585
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.android.internal.util.IndentingPrintWriter pw
        end local 3 // java.lang.String[] args
        end local 2 // java.io.PrintWriter writer
        end local 1 // java.io.FileDescriptor fd
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   23     0    this  Lcom/android/externalstorage/ExternalStorageProvider;
            0   23     1      fd  Ljava/io/FileDescriptor;
            0   23     2  writer  Ljava/io/PrintWriter;
            0   23     3    args  [Ljava/lang/String;
            1   23     4      pw  Lcom/android/internal/util/IndentingPrintWriter;
            3   18     6       i  I
            5   16     7    root  Lcom/android/externalstorage/ExternalStorageProvider$RootInfo;
      Exception table:
        from    to  target  type
           2    19      20  any
          20    21      20  any
    MethodParameters:
        Name  Flags
      fd      
      writer  
      args    

  public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.android.externalstorage.ExternalStorageProvider this
         0: .line 594
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tandroid.Manifest.permission.MANAGE_DOCUMENTS cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.android.externalstorage.ExternalStorageProvider this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/externalstorage/ExternalStorageProvider;
    MethodParameters:
        Name  Flags
      method  
      arg     
      extras  
}
SourceFile: "ExternalStorageProvider.java"
NestMembers:
  com.android.externalstorage.ExternalStorageProvider$RootInfo
InnerClasses:
  public RowBuilder = android.database.MatrixCursor$RowBuilder of android.database.MatrixCursor
  public final Builder = android.net.Uri$Builder of android.net.Uri
  public final Path = android.provider.DocumentsContract$Path of android.provider.DocumentsContract
  public final Root = android.provider.DocumentsContract$Root of android.provider.DocumentsContract
  private RootInfo = com.android.externalstorage.ExternalStorageProvider$RootInfo of com.android.externalstorage.ExternalStorageProvider