public class org.apache.tools.ant.taskdefs.PumpStreamHandler implements org.apache.tools.ant.taskdefs.ExecuteStreamHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.tools.ant.taskdefs.PumpStreamHandler
  super_class: java.lang.Object
{
  private java.lang.Thread outputThread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Thread errorThread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0002) ACC_PRIVATE

  private java.lang.Thread inputThread;
    descriptor: Ljava/lang/Thread;
    flags: (0x0002) ACC_PRIVATE

  private java.io.OutputStream out;
    descriptor: Ljava/io/OutputStream;
    flags: (0x0002) ACC_PRIVATE

  private java.io.OutputStream err;
    descriptor: Ljava/io/OutputStream;
    flags: (0x0002) ACC_PRIVATE

  private java.io.InputStream input;
    descriptor: Ljava/io/InputStream;
    flags: (0x0002) ACC_PRIVATE

  private final boolean nonBlockingRead;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final long JOIN_TIMEOUT;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 200

  public void <init>(java.io.OutputStream, java.io.OutputStream, java.io.InputStream, boolean);
    descriptor: (Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.OutputStream out
        start local 2 // java.io.OutputStream err
        start local 3 // java.io.InputStream input
        start local 4 // boolean nonBlockingRead
         0: .line 53
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            aload 1 /* out */
            ifnonnull 3
         2: .line 56
            new java.lang.NullPointerException
            dup
            ldc "out must not be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 58
      StackMap locals: org.apache.tools.ant.taskdefs.PumpStreamHandler java.io.OutputStream java.io.OutputStream java.io.InputStream int
      StackMap stack:
            aload 2 /* err */
            ifnonnull 5
         4: .line 59
            new java.lang.NullPointerException
            dup
            ldc "err must not be null"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 61
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* out */
            putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
         6: .line 62
            aload 0 /* this */
            aload 2 /* err */
            putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
         7: .line 63
            aload 0 /* this */
            aload 3 /* input */
            putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.input:Ljava/io/InputStream;
         8: .line 64
            aload 0 /* this */
            iload 4 /* nonBlockingRead */
            putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.nonBlockingRead:Z
         9: .line 65
            return
        end local 4 // boolean nonBlockingRead
        end local 3 // java.io.InputStream input
        end local 2 // java.io.OutputStream err
        end local 1 // java.io.OutputStream out
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   10     0             this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0   10     1              out  Ljava/io/OutputStream;
            0   10     2              err  Ljava/io/OutputStream;
            0   10     3            input  Ljava/io/InputStream;
            0   10     4  nonBlockingRead  Z
    MethodParameters:
                 Name  Flags
      out              
      err              
      input            
      nonBlockingRead  

  public void <init>(java.io.OutputStream, java.io.OutputStream, java.io.InputStream);
    descriptor: (Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.OutputStream out
        start local 2 // java.io.OutputStream err
        start local 3 // java.io.InputStream input
         0: .line 75
            aload 0 /* this */
            aload 1 /* out */
            aload 2 /* err */
            aload 3 /* input */
            iconst_0
            invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;Z)V
         1: .line 76
            return
        end local 3 // java.io.InputStream input
        end local 2 // java.io.OutputStream err
        end local 1 // java.io.OutputStream out
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    2     1    out  Ljava/io/OutputStream;
            0    2     2    err  Ljava/io/OutputStream;
            0    2     3  input  Ljava/io/InputStream;
    MethodParameters:
       Name  Flags
      out    
      err    
      input  

  public void <init>(java.io.OutputStream, java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;Ljava/io/OutputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.OutputStream out
        start local 2 // java.io.OutputStream err
         0: .line 84
            aload 0 /* this */
            aload 1 /* out */
            aload 2 /* err */
            aconst_null
            invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;Ljava/io/InputStream;)V
         1: .line 85
            return
        end local 2 // java.io.OutputStream err
        end local 1 // java.io.OutputStream out
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    2     1   out  Ljava/io/OutputStream;
            0    2     2   err  Ljava/io/OutputStream;
    MethodParameters:
      Name  Flags
      out   
      err   

  public void <init>(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.OutputStream outAndErr
         0: .line 92
            aload 0 /* this */
            aload 1 /* outAndErr */
            aload 1 /* outAndErr */
            invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;)V
         1: .line 93
            return
        end local 1 // java.io.OutputStream outAndErr
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    2     1  outAndErr  Ljava/io/OutputStream;
    MethodParameters:
           Name  Flags
      outAndErr  

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
         0: .line 99
            aload 0 /* this */
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler.<init>:(Ljava/io/OutputStream;Ljava/io/OutputStream;)V
         1: .line 100
            return
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;

  public void setProcessOutputStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.InputStream is
         0: .line 108
            aload 0 /* this */
            aload 1 /* is */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createProcessOutputPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
         1: .line 109
            return
        end local 1 // java.io.InputStream is
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    2     1    is  Ljava/io/InputStream;
    MethodParameters:
      Name  Flags
      is    

  public void setProcessErrorStream(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.InputStream is
         0: .line 117
            aload 0 /* this */
            aload 1 /* is */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createProcessErrorPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
         1: .line 118
            return
        end local 1 // java.io.InputStream is
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    2     1    is  Ljava/io/InputStream;
    MethodParameters:
      Name  Flags
      is    

  public void setProcessInputStream(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=2, args_size=2
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.OutputStream os
         0: .line 126
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.input:Ljava/io/InputStream;
            ifnull 3
         1: .line 127
            aload 0 /* this */
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.input:Ljava/io/InputStream;
            aload 1 /* os */
            iconst_1
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.nonBlockingRead:Z
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)Ljava/lang/Thread;
            putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.inputThread:Ljava/lang/Thread;
         2: .line 128
            goto 4
         3: .line 129
      StackMap locals:
      StackMap stack:
            aload 1 /* os */
            invokestatic org.apache.tools.ant.util.FileUtils.close:(Ljava/io/OutputStream;)V
         4: .line 131
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.OutputStream os
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    5     1    os  Ljava/io/OutputStream;
    MethodParameters:
      Name  Flags
      os    

  public void start();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
         0: .line 137
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.outputThread:Ljava/lang/Thread;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.start:(Ljava/lang/Thread;)V
         1: .line 138
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.errorThread:Ljava/lang/Thread;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.start:(Ljava/lang/Thread;)V
         2: .line 139
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.inputThread:Ljava/lang/Thread;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.start:(Ljava/lang/Thread;)V
         3: .line 140
            return
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;

  public void stop();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
         0: .line 146
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.inputThread:Ljava/lang/Thread;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.finish:(Ljava/lang/Thread;)V
         1: .line 149
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
         2: .line 150
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         3: pop
         4: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
            invokevirtual java.io.OutputStream.flush:()V
         5: .line 155
            goto 7
      StackMap locals:
      StackMap stack: java.io.IOException
         6: pop
         7: .line 158
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.outputThread:Ljava/lang/Thread;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.finish:(Ljava/lang/Thread;)V
         8: .line 159
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.errorThread:Ljava/lang/Thread;
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.finish:(Ljava/lang/Thread;)V
         9: .line 160
            return
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
           4     5       6  Class java.io.IOException

  private void start(java.lang.Thread);
    descriptor: (Ljava/lang/Thread;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.lang.Thread t
         0: .line 165
            aload 1 /* t */
            ifnull 2
         1: .line 166
            aload 1 /* t */
            invokevirtual java.lang.Thread.start:()V
         2: .line 168
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Thread t
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    3     1     t  Ljava/lang/Thread;
    MethodParameters:
      Name  Flags
      t     

  protected final void finish(java.lang.Thread);
    descriptor: (Ljava/lang/Thread;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.lang.Thread t
         0: .line 180
            aload 1 /* t */
            ifnonnull 2
         1: .line 182
            return
         2: .line 185
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 2 /* s */
        start local 2 // org.apache.tools.ant.taskdefs.StreamPumper s
         3: .line 186
            aload 1 /* t */
            instanceof org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
            ifeq 5
         4: .line 187
            aload 1 /* t */
            checkcast org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper.getPumper:()Lorg/apache/tools/ant/taskdefs/StreamPumper;
            astore 2 /* s */
         5: .line 189
      StackMap locals: org.apache.tools.ant.taskdefs.StreamPumper
      StackMap stack:
            aload 2 /* s */
            ifnull 7
            aload 2 /* s */
            invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.isFinished:()Z
            ifeq 7
         6: .line 190
            return
         7: .line 192
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual java.lang.Thread.isAlive:()Z
            ifne 9
         8: .line 193
            return
         9: .line 195
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 3 /* postStopHandle */
        start local 3 // org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle postStopHandle
        10: .line 196
            aload 2 /* s */
            ifnull 12
            aload 2 /* s */
            invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.isFinished:()Z
            ifne 12
        11: .line 197
            aload 2 /* s */
            invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.stop:()Lorg/apache/tools/ant/taskdefs/StreamPumper$PostStopHandle;
            astore 3 /* postStopHandle */
        12: .line 199
      StackMap locals: org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle
      StackMap stack:
            aload 3 /* postStopHandle */
            ifnull 17
            aload 3 /* postStopHandle */
            invokevirtual org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle.isInPostStopTasks:()Z
            ifeq 17
        13: .line 205
            aload 3 /* postStopHandle */
            ldc 2
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle.awaitPostStopCompletion:(JLjava/util/concurrent/TimeUnit;)Z
            pop
        14: .line 207
            goto 17
        15: .line 210
      StackMap locals:
      StackMap stack:
            aload 1 /* t */
            invokevirtual java.lang.Thread.interrupt:()V
        16: .line 211
            aload 1 /* t */
            ldc 200
            invokevirtual java.lang.Thread.join:(J)V
        17: .line 207
      StackMap locals:
      StackMap stack:
            aload 2 /* s */
            ifnull 18
            aload 2 /* s */
            invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.isFinished:()Z
            ifne 21
      StackMap locals:
      StackMap stack:
        18: aload 1 /* t */
            invokevirtual java.lang.Thread.isAlive:()Z
            ifne 15
        end local 3 // org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle postStopHandle
        end local 2 // org.apache.tools.ant.taskdefs.StreamPumper s
        19: .line 213
            goto 21
      StackMap locals: org.apache.tools.ant.taskdefs.PumpStreamHandler java.lang.Thread
      StackMap stack: java.lang.InterruptedException
        20: pop
        21: .line 216
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Thread t
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   22     0            this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0   22     1               t  Ljava/lang/Thread;
            3   19     2               s  Lorg/apache/tools/ant/taskdefs/StreamPumper;
           10   19     3  postStopHandle  Lorg/apache/tools/ant/taskdefs/StreamPumper$PostStopHandle;
      Exception table:
        from    to  target  type
           2     6      20  Class java.lang.InterruptedException
           7     8      20  Class java.lang.InterruptedException
           9    19      20  Class java.lang.InterruptedException
    MethodParameters:
      Name  Flags
      t     

  protected java.io.OutputStream getErr();
    descriptor: ()Ljava/io/OutputStream;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
         0: .line 223
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.err:Ljava/io/OutputStream;
            areturn
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;

  protected java.io.OutputStream getOut();
    descriptor: ()Ljava/io/OutputStream;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
         0: .line 231
            aload 0 /* this */
            getfield org.apache.tools.ant.taskdefs.PumpStreamHandler.out:Ljava/io/OutputStream;
            areturn
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;

  protected void createProcessOutputPump(java.io.InputStream, java.io.OutputStream);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.InputStream is
        start local 2 // java.io.OutputStream os
         0: .line 240
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* is */
            aload 2 /* os */
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)Ljava/lang/Thread;
            putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.outputThread:Ljava/lang/Thread;
         1: .line 241
            return
        end local 2 // java.io.OutputStream os
        end local 1 // java.io.InputStream is
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    2     1    is  Ljava/io/InputStream;
            0    2     2    os  Ljava/io/OutputStream;
    MethodParameters:
      Name  Flags
      is    
      os    

  protected void createProcessErrorPump(java.io.InputStream, java.io.OutputStream);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.InputStream is
        start local 2 // java.io.OutputStream os
         0: .line 249
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* is */
            aload 2 /* os */
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;)Ljava/lang/Thread;
            putfield org.apache.tools.ant.taskdefs.PumpStreamHandler.errorThread:Ljava/lang/Thread;
         1: .line 250
            return
        end local 2 // java.io.OutputStream os
        end local 1 // java.io.InputStream is
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    2     1    is  Ljava/io/InputStream;
            0    2     2    os  Ljava/io/OutputStream;
    MethodParameters:
      Name  Flags
      is    
      os    

  protected java.lang.Thread createPump(java.io.InputStream, java.io.OutputStream);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;)Ljava/lang/Thread;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.InputStream is
        start local 2 // java.io.OutputStream os
         0: .line 260
            aload 0 /* this */
            aload 1 /* is */
            aload 2 /* os */
            iconst_0
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;Z)Ljava/lang/Thread;
            areturn
        end local 2 // java.io.OutputStream os
        end local 1 // java.io.InputStream is
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    1     1    is  Ljava/io/InputStream;
            0    1     2    os  Ljava/io/OutputStream;
    MethodParameters:
      Name  Flags
      is    
      os    

  protected java.lang.Thread createPump(java.io.InputStream, java.io.OutputStream, boolean);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;Z)Ljava/lang/Thread;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.InputStream is
        start local 2 // java.io.OutputStream os
        start local 3 // boolean closeWhenExhausted
         0: .line 275
            aload 0 /* this */
            aload 1 /* is */
            aload 2 /* os */
            iload 3 /* closeWhenExhausted */
            iconst_1
            invokevirtual org.apache.tools.ant.taskdefs.PumpStreamHandler.createPump:(Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)Ljava/lang/Thread;
            areturn
        end local 3 // boolean closeWhenExhausted
        end local 2 // java.io.OutputStream os
        end local 1 // java.io.InputStream is
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    1     0                this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    1     1                  is  Ljava/io/InputStream;
            0    1     2                  os  Ljava/io/OutputStream;
            0    1     3  closeWhenExhausted  Z
    MethodParameters:
                    Name  Flags
      is                  
      os                  
      closeWhenExhausted  

  protected java.lang.Thread createPump(java.io.InputStream, java.io.OutputStream, boolean, boolean);
    descriptor: (Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)Ljava/lang/Thread;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=5
        start local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
        start local 1 // java.io.InputStream is
        start local 2 // java.io.OutputStream os
        start local 3 // boolean closeWhenExhausted
        start local 4 // boolean nonBlockingIO
         0: .line 293
            new org.apache.tools.ant.taskdefs.StreamPumper
            dup
            aload 1 /* is */
            aload 2 /* os */
            iload 3 /* closeWhenExhausted */
            iload 4 /* nonBlockingIO */
            invokespecial org.apache.tools.ant.taskdefs.StreamPumper.<init>:(Ljava/io/InputStream;Ljava/io/OutputStream;ZZ)V
            astore 5 /* pumper */
        start local 5 // org.apache.tools.ant.taskdefs.StreamPumper pumper
         1: .line 294
            aload 5 /* pumper */
            iconst_1
            invokevirtual org.apache.tools.ant.taskdefs.StreamPumper.setAutoflush:(Z)V
         2: .line 295
            new org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
            dup
            aload 5 /* pumper */
            invokespecial org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper.<init>:(Lorg/apache/tools/ant/taskdefs/StreamPumper;)V
            astore 6 /* result */
        start local 6 // java.lang.Thread result
         3: .line 296
            aload 6 /* result */
            iconst_1
            invokevirtual java.lang.Thread.setDaemon:(Z)V
         4: .line 297
            aload 6 /* result */
            areturn
        end local 6 // java.lang.Thread result
        end local 5 // org.apache.tools.ant.taskdefs.StreamPumper pumper
        end local 4 // boolean nonBlockingIO
        end local 3 // boolean closeWhenExhausted
        end local 2 // java.io.OutputStream os
        end local 1 // java.io.InputStream is
        end local 0 // org.apache.tools.ant.taskdefs.PumpStreamHandler this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lorg/apache/tools/ant/taskdefs/PumpStreamHandler;
            0    5     1                  is  Ljava/io/InputStream;
            0    5     2                  os  Ljava/io/OutputStream;
            0    5     3  closeWhenExhausted  Z
            0    5     4       nonBlockingIO  Z
            1    5     5              pumper  Lorg/apache/tools/ant/taskdefs/StreamPumper;
            3    5     6              result  Ljava/lang/Thread;
    MethodParameters:
                    Name  Flags
      is                  
      os                  
      closeWhenExhausted  
      nonBlockingIO       
}
SourceFile: "PumpStreamHandler.java"
NestMembers:
  org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper
InnerClasses:
  protected ThreadWithPumper = org.apache.tools.ant.taskdefs.PumpStreamHandler$ThreadWithPumper of org.apache.tools.ant.taskdefs.PumpStreamHandler
  final PostStopHandle = org.apache.tools.ant.taskdefs.StreamPumper$PostStopHandle of org.apache.tools.ant.taskdefs.StreamPumper