public class android.os.MemoryFile
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.os.MemoryFile
  super_class: java.lang.Object
{
  private static java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  private android.os.SharedMemory mSharedMemory;
    descriptor: Landroid/os/SharedMemory;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.ByteBuffer mMapping;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 40
            ldc "MemoryFile"
            putstatic android.os.MemoryFile.TAG:Ljava/lang/String;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static native boolean native_pin(java.io.FileDescriptor, boolean);
    descriptor: (Ljava/io/FileDescriptor;Z)Z
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
      pin   

  private static native int native_get_size(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    

  public void <init>(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.os.MemoryFile this
         0: .line 19
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tThe import android.system cannot be resolved\n\tThe method create(String, int) from the type SharedMemory refers to the missing type ErrnoException\n\tThe method mapReadWrite() from the type SharedMemory refers to the missing type ErrnoException\n\tErrnoException cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/os/MemoryFile;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      name    
      length  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 71
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.deactivate:()V
         1: .line 72
            aload 0 /* this */
            getfield android.os.MemoryFile.mSharedMemory:Landroid/os/SharedMemory;
            invokevirtual android.os.SharedMemory.close:()V
         2: .line 73
            return
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/os/MemoryFile;

  void deactivate();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 83
            aload 0 /* this */
            getfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
            ifnull 3
         1: .line 84
            aload 0 /* this */
            getfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
            invokestatic android.os.SharedMemory.unmap:(Ljava/nio/ByteBuffer;)V
         2: .line 85
            aload 0 /* this */
            aconst_null
            putfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
         3: .line 87
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Landroid/os/MemoryFile;

  private void checkActive();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 90
            aload 0 /* this */
            getfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
            ifnonnull 2
         1: .line 91
            new java.io.IOException
            dup
            ldc "MemoryFile has been deactivated"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 93
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/os/MemoryFile;
    Exceptions:
      throws java.io.IOException

  private void beginAccess();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 96
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.checkActive:()V
         1: .line 97
            aload 0 /* this */
            getfield android.os.MemoryFile.mAllowPurging:Z
            ifeq 4
         2: .line 98
            aload 0 /* this */
            getfield android.os.MemoryFile.mSharedMemory:Landroid/os/SharedMemory;
            invokevirtual android.os.SharedMemory.getFileDescriptor:()Ljava/io/FileDescriptor;
            iconst_1
            invokestatic android.os.MemoryFile.native_pin:(Ljava/io/FileDescriptor;Z)Z
            ifeq 4
         3: .line 99
            new java.io.IOException
            dup
            ldc "MemoryFile has been purged"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 102
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/os/MemoryFile;
    Exceptions:
      throws java.io.IOException

  private void endAccess();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 105
            aload 0 /* this */
            getfield android.os.MemoryFile.mAllowPurging:Z
            ifeq 2
         1: .line 106
            aload 0 /* this */
            getfield android.os.MemoryFile.mSharedMemory:Landroid/os/SharedMemory;
            invokevirtual android.os.SharedMemory.getFileDescriptor:()Ljava/io/FileDescriptor;
            iconst_0
            invokestatic android.os.MemoryFile.native_pin:(Ljava/io/FileDescriptor;Z)Z
            pop
         2: .line 108
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/os/MemoryFile;
    Exceptions:
      throws java.io.IOException

  public int length();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 116
            aload 0 /* this */
            getfield android.os.MemoryFile.mSharedMemory:Landroid/os/SharedMemory;
            invokevirtual android.os.SharedMemory.getSize:()I
            ireturn
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/os/MemoryFile;

  public boolean isPurgingAllowed();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 130
            aload 0 /* this */
            getfield android.os.MemoryFile.mAllowPurging:Z
            ireturn
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/os/MemoryFile;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public synchronized boolean allowPurging(boolean);
    descriptor: (Z)Z
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.os.MemoryFile this
        start local 1 // boolean allowPurging
         0: .line 146
            aload 0 /* this */
            getfield android.os.MemoryFile.mAllowPurging:Z
            istore 2 /* oldValue */
        start local 2 // boolean oldValue
         1: .line 147
            iload 2 /* oldValue */
            iload 1 /* allowPurging */
            if_icmpeq 6
         2: .line 148
            aload 0 /* this */
            getfield android.os.MemoryFile.mSharedMemory:Landroid/os/SharedMemory;
            invokevirtual android.os.SharedMemory.getFileDescriptor:()Ljava/io/FileDescriptor;
            iload 1 /* allowPurging */
            ifeq 3
            iconst_0
            goto 4
      StackMap locals: android.os.MemoryFile int int
      StackMap stack: java.io.FileDescriptor
         3: iconst_1
      StackMap locals: android.os.MemoryFile int int
      StackMap stack: java.io.FileDescriptor int
         4: invokestatic android.os.MemoryFile.native_pin:(Ljava/io/FileDescriptor;Z)Z
            pop
         5: .line 149
            aload 0 /* this */
            iload 1 /* allowPurging */
            putfield android.os.MemoryFile.mAllowPurging:Z
         6: .line 151
      StackMap locals:
      StackMap stack:
            iload 2 /* oldValue */
            ireturn
        end local 2 // boolean oldValue
        end local 1 // boolean allowPurging
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Landroid/os/MemoryFile;
            0    7     1  allowPurging  Z
            1    7     2      oldValue  Z
    Exceptions:
      throws java.io.IOException
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
              Name  Flags
      allowPurging  

  public java.io.InputStream getInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 160
            new android.os.MemoryFile$MemoryInputStream
            dup
            aload 0 /* this */
            invokespecial android.os.MemoryFile$MemoryInputStream.<init>:(Landroid/os/MemoryFile;)V
            areturn
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/os/MemoryFile;

  public java.io.OutputStream getOutputStream();
    descriptor: ()Ljava/io/OutputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 169
            new android.os.MemoryFile$MemoryOutputStream
            dup
            aload 0 /* this */
            invokespecial android.os.MemoryFile$MemoryOutputStream.<init>:(Landroid/os/MemoryFile;)V
            areturn
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/os/MemoryFile;

  public int readBytes(byte[], int, int, int);
    descriptor: ([BIII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // android.os.MemoryFile this
        start local 1 // byte[] buffer
        start local 2 // int srcOffset
        start local 3 // int destOffset
        start local 4 // int count
         0: .line 185
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.beginAccess:()V
         1: .line 187
            aload 0 /* this */
            getfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
            iload 2 /* srcOffset */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         2: .line 188
            aload 0 /* this */
            getfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
            aload 1 /* buffer */
            iload 3 /* destOffset */
            iload 4 /* count */
            invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
            pop
         3: .line 189
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 5
         5: .line 190
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.endAccess:()V
         6: .line 191
            aload 5
            athrow
         7: .line 190
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.endAccess:()V
         8: .line 192
            iload 4 /* count */
            ireturn
        end local 4 // int count
        end local 3 // int destOffset
        end local 2 // int srcOffset
        end local 1 // byte[] buffer
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Landroid/os/MemoryFile;
            0    9     1      buffer  [B
            0    9     2   srcOffset  I
            0    9     3  destOffset  I
            0    9     4       count  I
      Exception table:
        from    to  target  type
           1     4       4  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      buffer      
      srcOffset   
      destOffset  
      count       

  public void writeBytes(byte[], int, int, int);
    descriptor: ([BIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=5
        start local 0 // android.os.MemoryFile this
        start local 1 // byte[] buffer
        start local 2 // int srcOffset
        start local 3 // int destOffset
        start local 4 // int count
         0: .line 207
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.beginAccess:()V
         1: .line 209
            aload 0 /* this */
            getfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
            iload 3 /* destOffset */
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
         2: .line 210
            aload 0 /* this */
            getfield android.os.MemoryFile.mMapping:Ljava/nio/ByteBuffer;
            aload 1 /* buffer */
            iload 2 /* srcOffset */
            iload 4 /* count */
            invokevirtual java.nio.ByteBuffer.put:([BII)Ljava/nio/ByteBuffer;
            pop
         3: .line 211
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 5
         5: .line 212
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.endAccess:()V
         6: .line 213
            aload 5
            athrow
         7: .line 212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.os.MemoryFile.endAccess:()V
         8: .line 214
            return
        end local 4 // int count
        end local 3 // int destOffset
        end local 2 // int srcOffset
        end local 1 // byte[] buffer
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Landroid/os/MemoryFile;
            0    9     1      buffer  [B
            0    9     2   srcOffset  I
            0    9     3  destOffset  I
            0    9     4       count  I
      Exception table:
        from    to  target  type
           1     4       4  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      buffer      
      srcOffset   
      destOffset  
      count       

  public java.io.FileDescriptor getFileDescriptor();
    descriptor: ()Ljava/io/FileDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.os.MemoryFile this
         0: .line 226
            aload 0 /* this */
            getfield android.os.MemoryFile.mSharedMemory:Landroid/os/SharedMemory;
            invokevirtual android.os.SharedMemory.getFileDescriptor:()Ljava/io/FileDescriptor;
            areturn
        end local 0 // android.os.MemoryFile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/os/MemoryFile;
    Exceptions:
      throws java.io.IOException

  public static int getSize(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.FileDescriptor fd
         0: .line 238
            aload 0 /* fd */
            invokestatic android.os.MemoryFile.native_get_size:(Ljava/io/FileDescriptor;)I
            ireturn
        end local 0 // java.io.FileDescriptor fd
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0    fd  Ljava/io/FileDescriptor;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      fd    
}
SourceFile: "MemoryFile.java"
NestMembers:
  android.os.MemoryFile$MemoryInputStream  android.os.MemoryFile$MemoryOutputStream
InnerClasses:
  private MemoryInputStream = android.os.MemoryFile$MemoryInputStream of android.os.MemoryFile
  private MemoryOutputStream = android.os.MemoryFile$MemoryOutputStream of android.os.MemoryFile