public class com.android.internal.os.TransferPipe implements java.lang.Runnable, java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.android.internal.os.TransferPipe
  super_class: java.lang.Object
{
  static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "TransferPipe"

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

  static final long DEFAULT_TIMEOUT;
    descriptor: J
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5000

  final java.lang.Thread mThread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0010) ACC_FINAL

  final android.os.ParcelFileDescriptor[] mFds;
    descriptor: [Landroid/os/ParcelFileDescriptor;
    flags: (0x0010) ACC_FINAL

  java.io.FileDescriptor mOutFd;
    descriptor: Ljava/io/FileDescriptor;
    flags: (0x0000) 

  long mEndTime;
    descriptor: J
    flags: (0x0000) 

  java.lang.String mFailure;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  boolean mComplete;
    descriptor: Z
    flags: (0x0000) 

  java.lang.String mBufferPrefix;
    descriptor: Ljava/lang/String;
    flags: (0x0000) 

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.TransferPipe this
         0: .line 64
            aload 0 /* this */
            aconst_null
            invokespecial com.android.internal.os.TransferPipe.<init>:(Ljava/lang/String;)V
         1: .line 65
            return
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/android/internal/os/TransferPipe;
    Exceptions:
      throws java.io.IOException

  public void <init>(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.android.internal.os.TransferPipe this
        start local 1 // java.lang.String bufferPrefix
         0: .line 68
            aload 0 /* this */
            aload 1 /* bufferPrefix */
            ldc "TransferPipe"
            invokespecial com.android.internal.os.TransferPipe.<init>:(Ljava/lang/String;Ljava/lang/String;)V
         1: .line 69
            return
        end local 1 // java.lang.String bufferPrefix
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/android/internal/os/TransferPipe;
            0    2     1  bufferPrefix  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      bufferPrefix  

  protected void <init>(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.android.internal.os.TransferPipe this
        start local 1 // java.lang.String bufferPrefix
        start local 2 // java.lang.String threadName
         0: .line 71
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 72
            aload 0 /* this */
            new java.lang.Thread
            dup
            aload 0 /* this */
            aload 2 /* threadName */
            invokespecial java.lang.Thread.<init>:(Ljava/lang/Runnable;Ljava/lang/String;)V
            putfield com.android.internal.os.TransferPipe.mThread:Ljava/lang/Thread;
         2: .line 73
            aload 0 /* this */
            invokestatic android.os.ParcelFileDescriptor.createPipe:()[Landroid/os/ParcelFileDescriptor;
            putfield com.android.internal.os.TransferPipe.mFds:[Landroid/os/ParcelFileDescriptor;
         3: .line 74
            aload 0 /* this */
            aload 1 /* bufferPrefix */
            putfield com.android.internal.os.TransferPipe.mBufferPrefix:Ljava/lang/String;
         4: .line 75
            return
        end local 2 // java.lang.String threadName
        end local 1 // java.lang.String bufferPrefix
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lcom/android/internal/os/TransferPipe;
            0    5     1  bufferPrefix  Ljava/lang/String;
            0    5     2    threadName  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      bufferPrefix  
      threadName    

  android.os.ParcelFileDescriptor getReadFd();
    descriptor: ()Landroid/os/ParcelFileDescriptor;
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.TransferPipe this
         0: .line 78
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFds:[Landroid/os/ParcelFileDescriptor;
            iconst_0
            aaload
            areturn
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/TransferPipe;

  public android.os.ParcelFileDescriptor getWriteFd();
    descriptor: ()Landroid/os/ParcelFileDescriptor;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.android.internal.os.TransferPipe this
         0: .line 82
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFds:[Landroid/os/ParcelFileDescriptor;
            iconst_1
            aaload
            areturn
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/TransferPipe;

  public void setBufferPrefix(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.android.internal.os.TransferPipe this
        start local 1 // java.lang.String prefix
         0: .line 86
            aload 0 /* this */
            aload 1 /* prefix */
            putfield com.android.internal.os.TransferPipe.mBufferPrefix:Ljava/lang/String;
         1: .line 87
            return
        end local 1 // java.lang.String prefix
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/android/internal/os/TransferPipe;
            0    2     1  prefix  Ljava/lang/String;
    MethodParameters:
        Name  Flags
      prefix  

  public static void dumpAsync(android.os.IBinder, java.io.FileDescriptor, java.lang.String[]);
    descriptor: (Landroid/os/IBinder;Ljava/io/FileDescriptor;[Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.os.IBinder binder
        start local 1 // java.io.FileDescriptor out
        start local 2 // java.lang.String[] args
         0: .line 91
            aload 0 /* binder */
            aload 1 /* out */
            aload 2 /* args */
            invokestatic com.android.internal.os.TransferPipe.goDump:(Landroid/os/IBinder;Ljava/io/FileDescriptor;[Ljava/lang/String;)V
         1: .line 92
            return
        end local 2 // java.lang.String[] args
        end local 1 // java.io.FileDescriptor out
        end local 0 // android.os.IBinder binder
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  binder  Landroid/os/IBinder;
            0    2     1     out  Ljava/io/FileDescriptor;
            0    2     2    args  [Ljava/lang/String;
    Exceptions:
      throws java.io.IOException, android.os.RemoteException
    MethodParameters:
        Name  Flags
      binder  
      out     
      args    

  public static byte[] dumpAsync(android.os.IBinder, java.lang.String[]);
    descriptor: (Landroid/os/IBinder;[Ljava/lang/String;)[B
    flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
    Code:
      stack=3, locals=2, args_size=2
         0: .line 129
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tIoUtils cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.io.IOException, android.os.RemoteException
    MethodParameters:
        Name  Flags
      binder  
      args    

  static void go(com.android.internal.os.TransferPipe$Caller, android.os.IInterface, java.io.FileDescriptor, java.lang.String, java.lang.String[]);
    descriptor: (Lcom/android/internal/os/TransferPipe$Caller;Landroid/os/IInterface;Ljava/io/FileDescriptor;Ljava/lang/String;[Ljava/lang/String;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=5, args_size=5
        start local 0 // com.android.internal.os.TransferPipe$Caller caller
        start local 1 // android.os.IInterface iface
        start local 2 // java.io.FileDescriptor out
        start local 3 // java.lang.String prefix
        start local 4 // java.lang.String[] args
         0: .line 135
            aload 0 /* caller */
            aload 1 /* iface */
            aload 2 /* out */
            aload 3 /* prefix */
            aload 4 /* args */
            ldc 5000
            invokestatic com.android.internal.os.TransferPipe.go:(Lcom/android/internal/os/TransferPipe$Caller;Landroid/os/IInterface;Ljava/io/FileDescriptor;Ljava/lang/String;[Ljava/lang/String;J)V
         1: .line 136
            return
        end local 4 // java.lang.String[] args
        end local 3 // java.lang.String prefix
        end local 2 // java.io.FileDescriptor out
        end local 1 // android.os.IInterface iface
        end local 0 // com.android.internal.os.TransferPipe$Caller caller
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  caller  Lcom/android/internal/os/TransferPipe$Caller;
            0    2     1   iface  Landroid/os/IInterface;
            0    2     2     out  Ljava/io/FileDescriptor;
            0    2     3  prefix  Ljava/lang/String;
            0    2     4    args  [Ljava/lang/String;
    Exceptions:
      throws java.io.IOException, android.os.RemoteException
    MethodParameters:
        Name  Flags
      caller  
      iface   
      out     
      prefix  
      args    

  static void go(com.android.internal.os.TransferPipe$Caller, android.os.IInterface, java.io.FileDescriptor, java.lang.String, java.lang.String[], long);
    descriptor: (Lcom/android/internal/os/TransferPipe$Caller;Landroid/os/IInterface;Ljava/io/FileDescriptor;Ljava/lang/String;[Ljava/lang/String;J)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=10, args_size=6
        start local 0 // com.android.internal.os.TransferPipe$Caller caller
        start local 1 // android.os.IInterface iface
        start local 2 // java.io.FileDescriptor out
        start local 3 // java.lang.String prefix
        start local 4 // java.lang.String[] args
        start local 5 // long timeout
         0: .line 140
            aload 1 /* iface */
            invokeinterface android.os.IInterface.asBinder:()Landroid/os/IBinder;
            instanceof android.os.Binder
            ifeq 5
         1: .line 143
            aload 0 /* caller */
            aload 1 /* iface */
            aload 2 /* out */
            aload 3 /* prefix */
            aload 4 /* args */
            invokeinterface com.android.internal.os.TransferPipe$Caller.go:(Landroid/os/IInterface;Ljava/io/FileDescriptor;Ljava/lang/String;[Ljava/lang/String;)V
         2: .line 144
            goto 4
      StackMap locals:
      StackMap stack: android.os.RemoteException
         3: pop
         4: .line 146
      StackMap locals:
      StackMap stack:
            return
         5: .line 149
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 7
            aconst_null
            astore 8
         6: new com.android.internal.os.TransferPipe
            dup
            invokespecial com.android.internal.os.TransferPipe.<init>:()V
            astore 9 /* tp */
        start local 9 // com.android.internal.os.TransferPipe tp
         7: .line 150
            aload 0 /* caller */
            aload 1 /* iface */
            aload 9 /* tp */
            invokevirtual com.android.internal.os.TransferPipe.getWriteFd:()Landroid/os/ParcelFileDescriptor;
            invokevirtual android.os.ParcelFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            aload 3 /* prefix */
            aload 4 /* args */
            invokeinterface com.android.internal.os.TransferPipe$Caller.go:(Landroid/os/IInterface;Ljava/io/FileDescriptor;Ljava/lang/String;[Ljava/lang/String;)V
         8: .line 151
            aload 9 /* tp */
            aload 2 /* out */
            lload 5 /* timeout */
            invokevirtual com.android.internal.os.TransferPipe.go:(Ljava/io/FileDescriptor;J)V
         9: .line 152
            aload 9 /* tp */
            ifnull 15
            aload 9 /* tp */
            invokevirtual com.android.internal.os.TransferPipe.close:()V
            goto 15
      StackMap locals: com.android.internal.os.TransferPipe$Caller android.os.IInterface java.io.FileDescriptor java.lang.String java.lang.String[] long java.lang.Throwable java.lang.Throwable com.android.internal.os.TransferPipe
      StackMap stack: java.lang.Throwable
        10: astore 7
            aload 9 /* tp */
            ifnull 11
            aload 9 /* tp */
            invokevirtual com.android.internal.os.TransferPipe.close:()V
        end local 9 // com.android.internal.os.TransferPipe tp
      StackMap locals:
      StackMap stack:
        11: aload 7
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 8
            aload 7
            ifnonnull 13
            aload 8
            astore 7
            goto 14
      StackMap locals:
      StackMap stack:
        13: aload 7
            aload 8
            if_acmpeq 14
            aload 7
            aload 8
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        14: aload 7
            athrow
        15: .line 153
      StackMap locals:
      StackMap stack:
            return
        end local 5 // long timeout
        end local 4 // java.lang.String[] args
        end local 3 // java.lang.String prefix
        end local 2 // java.io.FileDescriptor out
        end local 1 // android.os.IInterface iface
        end local 0 // com.android.internal.os.TransferPipe$Caller caller
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0   caller  Lcom/android/internal/os/TransferPipe$Caller;
            0   16     1    iface  Landroid/os/IInterface;
            0   16     2      out  Ljava/io/FileDescriptor;
            0   16     3   prefix  Ljava/lang/String;
            0   16     4     args  [Ljava/lang/String;
            0   16     5  timeout  J
            7   11     9       tp  Lcom/android/internal/os/TransferPipe;
      Exception table:
        from    to  target  type
           1     2       3  Class android.os.RemoteException
           7     9      10  any
           6    12      12  any
    Exceptions:
      throws java.io.IOException, android.os.RemoteException
    MethodParameters:
         Name  Flags
      caller   
      iface    
      out      
      prefix   
      args     
      timeout  

  static void goDump(android.os.IBinder, java.io.FileDescriptor, java.lang.String[]);
    descriptor: (Landroid/os/IBinder;Ljava/io/FileDescriptor;[Ljava/lang/String;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // android.os.IBinder binder
        start local 1 // java.io.FileDescriptor out
        start local 2 // java.lang.String[] args
         0: .line 157
            aload 0 /* binder */
            aload 1 /* out */
            aload 2 /* args */
            ldc 5000
            invokestatic com.android.internal.os.TransferPipe.goDump:(Landroid/os/IBinder;Ljava/io/FileDescriptor;[Ljava/lang/String;J)V
         1: .line 158
            return
        end local 2 // java.lang.String[] args
        end local 1 // java.io.FileDescriptor out
        end local 0 // android.os.IBinder binder
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0  binder  Landroid/os/IBinder;
            0    2     1     out  Ljava/io/FileDescriptor;
            0    2     2    args  [Ljava/lang/String;
    Exceptions:
      throws java.io.IOException, android.os.RemoteException
    MethodParameters:
        Name  Flags
      binder  
      out     
      args    

  static void goDump(android.os.IBinder, java.io.FileDescriptor, java.lang.String[], long);
    descriptor: (Landroid/os/IBinder;Ljava/io/FileDescriptor;[Ljava/lang/String;J)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // android.os.IBinder binder
        start local 1 // java.io.FileDescriptor out
        start local 2 // java.lang.String[] args
        start local 3 // long timeout
         0: .line 162
            aload 0 /* binder */
            instanceof android.os.Binder
            ifeq 5
         1: .line 165
            aload 0 /* binder */
            aload 1 /* out */
            aload 2 /* args */
            invokeinterface android.os.IBinder.dump:(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
         2: .line 166
            goto 4
      StackMap locals:
      StackMap stack: android.os.RemoteException
         3: pop
         4: .line 168
      StackMap locals:
      StackMap stack:
            return
         5: .line 171
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 5
            aconst_null
            astore 6
         6: new com.android.internal.os.TransferPipe
            dup
            invokespecial com.android.internal.os.TransferPipe.<init>:()V
            astore 7 /* tp */
        start local 7 // com.android.internal.os.TransferPipe tp
         7: .line 172
            aload 0 /* binder */
            aload 7 /* tp */
            invokevirtual com.android.internal.os.TransferPipe.getWriteFd:()Landroid/os/ParcelFileDescriptor;
            invokevirtual android.os.ParcelFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            aload 2 /* args */
            invokeinterface android.os.IBinder.dumpAsync:(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
         8: .line 173
            aload 7 /* tp */
            aload 1 /* out */
            lload 3 /* timeout */
            invokevirtual com.android.internal.os.TransferPipe.go:(Ljava/io/FileDescriptor;J)V
         9: .line 174
            aload 7 /* tp */
            ifnull 15
            aload 7 /* tp */
            invokevirtual com.android.internal.os.TransferPipe.close:()V
            goto 15
      StackMap locals: android.os.IBinder java.io.FileDescriptor java.lang.String[] long java.lang.Throwable java.lang.Throwable com.android.internal.os.TransferPipe
      StackMap stack: java.lang.Throwable
        10: astore 5
            aload 7 /* tp */
            ifnull 11
            aload 7 /* tp */
            invokevirtual com.android.internal.os.TransferPipe.close:()V
        end local 7 // com.android.internal.os.TransferPipe tp
      StackMap locals:
      StackMap stack:
        11: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 6
            aload 5
            ifnonnull 13
            aload 6
            astore 5
            goto 14
      StackMap locals:
      StackMap stack:
        13: aload 5
            aload 6
            if_acmpeq 14
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        14: aload 5
            athrow
        15: .line 175
      StackMap locals:
      StackMap stack:
            return
        end local 3 // long timeout
        end local 2 // java.lang.String[] args
        end local 1 // java.io.FileDescriptor out
        end local 0 // android.os.IBinder binder
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0   binder  Landroid/os/IBinder;
            0   16     1      out  Ljava/io/FileDescriptor;
            0   16     2     args  [Ljava/lang/String;
            0   16     3  timeout  J
            7   11     7       tp  Lcom/android/internal/os/TransferPipe;
      Exception table:
        from    to  target  type
           1     2       3  Class android.os.RemoteException
           7     9      10  any
           6    12      12  any
    Exceptions:
      throws java.io.IOException, android.os.RemoteException
    MethodParameters:
         Name  Flags
      binder   
      out      
      args     
      timeout  

  public void go(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.android.internal.os.TransferPipe this
        start local 1 // java.io.FileDescriptor out
         0: .line 178
            aload 0 /* this */
            aload 1 /* out */
            ldc 5000
            invokevirtual com.android.internal.os.TransferPipe.go:(Ljava/io/FileDescriptor;J)V
         1: .line 179
            return
        end local 1 // java.io.FileDescriptor out
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/android/internal/os/TransferPipe;
            0    2     1   out  Ljava/io/FileDescriptor;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      out   

  public void go(java.io.FileDescriptor, long);
    descriptor: (Ljava/io/FileDescriptor;J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // com.android.internal.os.TransferPipe this
        start local 1 // java.io.FileDescriptor out
        start local 2 // long timeout
         0: .line 183
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         1: .line 184
            aload 0 /* this */
            aload 1 /* out */
            putfield com.android.internal.os.TransferPipe.mOutFd:Ljava/io/FileDescriptor;
         2: .line 185
            aload 0 /* this */
            invokestatic android.os.SystemClock.uptimeMillis:()J
            lload 2 /* timeout */
            ladd
            putfield com.android.internal.os.TransferPipe.mEndTime:J
         3: .line 191
            aload 0 /* this */
            iconst_1
            invokevirtual com.android.internal.os.TransferPipe.closeFd:(I)V
         4: .line 193
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mThread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.start:()V
         5: .line 195
            goto 13
         6: .line 196
      StackMap locals: com.android.internal.os.TransferPipe
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mEndTime:J
            invokestatic android.os.SystemClock.uptimeMillis:()J
            lsub
            lstore 5 /* waitTime */
        start local 5 // long waitTime
         7: .line 197
            lload 5 /* waitTime */
            lconst_0
            lcmp
            ifgt 10
         8: .line 199
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mThread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.interrupt:()V
         9: .line 200
            new java.io.IOException
            dup
            ldc "Timeout"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 204
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            lload 5 /* waitTime */
            invokevirtual java.lang.Object.wait:(J)V
        11: .line 205
            goto 13
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        12: pop
        end local 5 // long waitTime
        13: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFailure:Ljava/lang/String;
            ifnonnull 14
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mComplete:Z
            ifeq 6
        14: .line 210
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFailure:Ljava/lang/String;
            ifnull 16
        15: .line 211
            new java.io.IOException
            dup
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFailure:Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        16: .line 183
      StackMap locals:
      StackMap stack:
            aload 4
            monitorexit
        17: goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        18: aload 4
            monitorexit
        19: athrow
        20: .line 214
      StackMap locals: com.android.internal.os.TransferPipe java.io.FileDescriptor long
      StackMap stack: java.lang.Throwable
            astore 7
        21: .line 215
            aload 0 /* this */
            invokevirtual com.android.internal.os.TransferPipe.kill:()V
        22: .line 216
            aload 7
            athrow
        23: .line 215
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.android.internal.os.TransferPipe.kill:()V
        24: .line 217
            return
        end local 2 // long timeout
        end local 1 // java.io.FileDescriptor out
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   25     0      this  Lcom/android/internal/os/TransferPipe;
            0   25     1       out  Ljava/io/FileDescriptor;
            0   25     2   timeout  J
            7   13     5  waitTime  J
      Exception table:
        from    to  target  type
          10    11      12  Class java.lang.InterruptedException
           1    17      18  any
          18    19      18  any
           0    20      20  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      out      
      timeout  

  void closeFd(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.android.internal.os.TransferPipe this
        start local 1 // int num
         0: .line 220
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFds:[Landroid/os/ParcelFileDescriptor;
            iload 1 /* num */
            aaload
            ifnull 5
         1: .line 223
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFds:[Landroid/os/ParcelFileDescriptor;
            iload 1 /* num */
            aaload
            invokevirtual android.os.ParcelFileDescriptor.close:()V
         2: .line 224
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         3: pop
         4: .line 226
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mFds:[Landroid/os/ParcelFileDescriptor;
            iload 1 /* num */
            aconst_null
            aastore
         5: .line 228
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int num
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/android/internal/os/TransferPipe;
            0    6     1   num  I
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
    MethodParameters:
      Name  Flags
      num   

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.android.internal.os.TransferPipe this
         0: .line 232
            aload 0 /* this */
            invokevirtual com.android.internal.os.TransferPipe.kill:()V
         1: .line 233
            return
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/android/internal/os/TransferPipe;

  public void kill();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.android.internal.os.TransferPipe this
         0: .line 236
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 237
            aload 0 /* this */
            iconst_0
            invokevirtual com.android.internal.os.TransferPipe.closeFd:(I)V
         2: .line 238
            aload 0 /* this */
            iconst_1
            invokevirtual com.android.internal.os.TransferPipe.closeFd:(I)V
         3: .line 236
            aload 1
            monitorexit
         4: goto 7
      StackMap locals: com.android.internal.os.TransferPipe com.android.internal.os.TransferPipe
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 240
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lcom/android/internal/os/TransferPipe;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  protected java.io.OutputStream getNewOutputStream();
    descriptor: ()Ljava/io/OutputStream;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.android.internal.os.TransferPipe this
         0: .line 243
            new java.io.FileOutputStream
            dup
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mOutFd:Ljava/io/FileDescriptor;
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/FileDescriptor;)V
            areturn
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/android/internal/os/TransferPipe;

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=1
        start local 0 // com.android.internal.os.TransferPipe this
         0: .line 248
            sipush 1024
            newarray 8
            astore 1 /* buffer */
        start local 1 // byte[] buffer
         1: .line 252
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         2: .line 253
            aload 0 /* this */
            invokevirtual com.android.internal.os.TransferPipe.getReadFd:()Landroid/os/ParcelFileDescriptor;
            astore 5 /* readFd */
        start local 5 // android.os.ParcelFileDescriptor readFd
         3: .line 254
            aload 5 /* readFd */
            ifnonnull 7
         4: .line 255
            ldc "TransferPipe"
            ldc "Pipe has been closed..."
            invokestatic android.util.Slog.w:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         5: .line 256
            aload 4
            monitorexit
         6: return
         7: .line 258
      StackMap locals: com.android.internal.os.TransferPipe byte[] top top com.android.internal.os.TransferPipe android.os.ParcelFileDescriptor
      StackMap stack:
            new java.io.FileInputStream
            dup
            aload 5 /* readFd */
            invokevirtual android.os.ParcelFileDescriptor.getFileDescriptor:()Ljava/io/FileDescriptor;
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/FileDescriptor;)V
            astore 2 /* fis */
        start local 2 // java.io.FileInputStream fis
         8: .line 259
            aload 0 /* this */
            invokevirtual com.android.internal.os.TransferPipe.getNewOutputStream:()Ljava/io/OutputStream;
            astore 3 /* fos */
        end local 5 // android.os.ParcelFileDescriptor readFd
        start local 3 // java.io.OutputStream fos
         9: .line 252
            aload 4
            monitorexit
        10: goto 13
        end local 3 // java.io.OutputStream fos
        end local 2 // java.io.FileInputStream fis
      StackMap locals: com.android.internal.os.TransferPipe byte[] top top com.android.internal.os.TransferPipe
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        start local 2 // java.io.FileInputStream fis
        start local 3 // java.io.OutputStream fos
        13: .line 263
      StackMap locals: com.android.internal.os.TransferPipe byte[] java.io.FileInputStream java.io.OutputStream
      StackMap stack:
            aconst_null
            astore 4 /* bufferPrefix */
        start local 4 // byte[] bufferPrefix
        14: .line 264
            iconst_1
            istore 5 /* needPrefix */
        start local 5 // boolean needPrefix
        15: .line 265
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mBufferPrefix:Ljava/lang/String;
            ifnull 39
        16: .line 266
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mBufferPrefix:Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
            astore 4 /* bufferPrefix */
        17: .line 271
            goto 39
        start local 6 // int size
        18: .line 273
      StackMap locals: byte[] int int
      StackMap stack:
            aload 4 /* bufferPrefix */
            ifnonnull 21
        19: .line 274
            aload 3 /* fos */
            aload 1 /* buffer */
            iconst_0
            iload 6 /* size */
            invokevirtual java.io.OutputStream.write:([BII)V
        20: .line 275
            goto 39
        21: .line 276
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 7 /* start */
        start local 7 // int start
        22: .line 277
            iconst_0
            istore 8 /* i */
        start local 8 // int i
        23: goto 36
        24: .line 278
      StackMap locals: int int
      StackMap stack:
            aload 1 /* buffer */
            iload 8 /* i */
            baload
            bipush 10
            if_icmpeq 35
        25: .line 279
            iload 8 /* i */
            iload 7 /* start */
            if_icmple 27
        26: .line 280
            aload 3 /* fos */
            aload 1 /* buffer */
            iload 7 /* start */
            iload 8 /* i */
            iload 7 /* start */
            isub
            invokevirtual java.io.OutputStream.write:([BII)V
        27: .line 282
      StackMap locals:
      StackMap stack:
            iload 8 /* i */
            istore 7 /* start */
        28: .line 283
            iload 5 /* needPrefix */
            ifeq 31
        29: .line 284
            aload 3 /* fos */
            aload 4 /* bufferPrefix */
            invokevirtual java.io.OutputStream.write:([B)V
        30: .line 285
            iconst_0
            istore 5 /* needPrefix */
        31: .line 288
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
        32: .line 289
            iload 8 /* i */
            iload 6 /* size */
            if_icmpge 33
            aload 1 /* buffer */
            iload 8 /* i */
            baload
            bipush 10
            if_icmpne 31
        33: .line 290
      StackMap locals:
      StackMap stack:
            iload 8 /* i */
            iload 6 /* size */
            if_icmpge 35
        34: .line 291
            iconst_1
            istore 5 /* needPrefix */
        35: .line 277
      StackMap locals:
      StackMap stack:
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        36: iload 8 /* i */
            iload 6 /* size */
            if_icmplt 24
        end local 8 // int i
        37: .line 295
            iload 6 /* size */
            iload 7 /* start */
            if_icmple 39
        38: .line 296
            aload 3 /* fos */
            aload 1 /* buffer */
            iload 7 /* start */
            iload 6 /* size */
            iload 7 /* start */
            isub
            invokevirtual java.io.OutputStream.write:([BII)V
        end local 7 // int start
        end local 6 // int size
        39: .line 271
      StackMap locals:
      StackMap stack:
            aload 2 /* fis */
            aload 1 /* buffer */
            invokevirtual java.io.FileInputStream.read:([B)I
            dup
            istore 6 /* size */
        start local 6 // int size
        40: ifgt 18
        41: .line 301
            aload 0 /* this */
            getfield com.android.internal.os.TransferPipe.mThread:Ljava/lang/Thread;
            invokevirtual java.lang.Thread.isInterrupted:()Z
            ifeq 51
        42: .line 304
            goto 51
        end local 6 // int size
      StackMap locals:
      StackMap stack: java.io.IOException
        43: astore 7 /* e */
        start local 7 // java.io.IOException e
        44: .line 305
            aload 0 /* this */
            dup
            astore 8
            monitorenter
        45: .line 306
            aload 0 /* this */
            aload 7 /* e */
            invokevirtual java.io.IOException.toString:()Ljava/lang/String;
            putfield com.android.internal.os.TransferPipe.mFailure:Ljava/lang/String;
        46: .line 307
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
        47: .line 308
            aload 8
            monitorexit
        48: return
        49: .line 305
      StackMap locals: com.android.internal.os.TransferPipe byte[] java.io.FileInputStream java.io.OutputStream byte[] int top java.io.IOException com.android.internal.os.TransferPipe
      StackMap stack: java.lang.Throwable
            aload 8
            monitorexit
        50: athrow
        end local 7 // java.io.IOException e
        start local 6 // int size
        51: .line 312
      StackMap locals: com.android.internal.os.TransferPipe byte[] java.io.FileInputStream java.io.OutputStream byte[] int int
      StackMap stack:
            aload 0 /* this */
            dup
            astore 7
            monitorenter
        52: .line 313
            aload 0 /* this */
            iconst_1
            putfield com.android.internal.os.TransferPipe.mComplete:Z
        53: .line 314
            aload 0 /* this */
            invokevirtual java.lang.Object.notifyAll:()V
        54: .line 312
            aload 7
            monitorexit
        55: goto 58
      StackMap locals: com.android.internal.os.TransferPipe byte[] java.io.FileInputStream java.io.OutputStream byte[] int int com.android.internal.os.TransferPipe
      StackMap stack: java.lang.Throwable
        56: aload 7
            monitorexit
        57: athrow
        58: .line 316
      StackMap locals:
      StackMap stack:
            return
        end local 6 // int size
        end local 5 // boolean needPrefix
        end local 4 // byte[] bufferPrefix
        end local 3 // java.io.OutputStream fos
        end local 2 // java.io.FileInputStream fis
        end local 1 // byte[] buffer
        end local 0 // com.android.internal.os.TransferPipe this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   59     0          this  Lcom/android/internal/os/TransferPipe;
            1   59     1        buffer  [B
            8   11     2           fis  Ljava/io/FileInputStream;
           13   59     2           fis  Ljava/io/FileInputStream;
            9   11     3           fos  Ljava/io/OutputStream;
           13   59     3           fos  Ljava/io/OutputStream;
            3    9     5        readFd  Landroid/os/ParcelFileDescriptor;
           14   59     4  bufferPrefix  [B
           15   59     5    needPrefix  Z
           18   39     6          size  I
           40   43     6          size  I
           51   59     6          size  I
           22   39     7         start  I
           23   37     8             i  I
           44   51     7             e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           2     6      11  any
           7    10      11  any
          11    12      11  any
          17    42      43  Class java.io.IOException
          45    48      49  any
          49    50      49  any
          52    55      56  any
          56    57      56  any
}
SourceFile: "TransferPipe.java"
NestMembers:
  com.android.internal.os.TransferPipe$Caller
InnerClasses:
  abstract Caller = com.android.internal.os.TransferPipe$Caller of com.android.internal.os.TransferPipe