public class io.vertx.core.streams.impl.PumpImpl<T> implements io.vertx.core.streams.Pump
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: io.vertx.core.streams.impl.PumpImpl
  super_class: java.lang.Object
{
  private final io.vertx.core.streams.ReadStream<T> readStream;
    descriptor: Lio/vertx/core/streams/ReadStream;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lio/vertx/core/streams/ReadStream<TT;>;

  private final io.vertx.core.streams.WriteStream<T> writeStream;
    descriptor: Lio/vertx/core/streams/WriteStream;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lio/vertx/core/streams/WriteStream<TT;>;

  private final io.vertx.core.Handler<T> dataHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lio/vertx/core/Handler<TT;>;

  private final io.vertx.core.Handler<java.lang.Void> drainHandler;
    descriptor: Lio/vertx/core/Handler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lio/vertx/core/Handler<Ljava/lang/Void;>;

  private int pumped;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  void <init>(io.vertx.core.streams.ReadStream<T>, io.vertx.core.streams.WriteStream<T>, );
    descriptor: (Lio/vertx/core/streams/ReadStream;Lio/vertx/core/streams/WriteStream;I)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
        start local 1 // io.vertx.core.streams.ReadStream rs
        start local 2 // io.vertx.core.streams.WriteStream ws
        start local 3 // int maxWriteQueueSize
         0: .line 50
            aload 0 /* this */
            aload 1 /* rs */
            aload 2 /* ws */
            invokespecial io.vertx.core.streams.impl.PumpImpl.<init>:(Lio/vertx/core/streams/ReadStream;Lio/vertx/core/streams/WriteStream;)V
         1: .line 51
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.writeStream:Lio/vertx/core/streams/WriteStream;
            iload 3 /* maxWriteQueueSize */
            invokeinterface io.vertx.core.streams.WriteStream.setWriteQueueMaxSize:(I)Lio/vertx/core/streams/WriteStream;
            pop
         2: .line 52
            return
        end local 3 // int maxWriteQueueSize
        end local 2 // io.vertx.core.streams.WriteStream ws
        end local 1 // io.vertx.core.streams.ReadStream rs
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0               this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;
            0    3     1                 rs  Lio/vertx/core/streams/ReadStream<TT;>;
            0    3     2                 ws  Lio/vertx/core/streams/WriteStream<TT;>;
            0    3     3  maxWriteQueueSize  I
    Signature: (Lio/vertx/core/streams/ReadStream<TT;>;Lio/vertx/core/streams/WriteStream<TT;>;I)V
    MethodParameters:
                   Name  Flags
      rs                 
      ws                 
      maxWriteQueueSize  

  void <init>(io.vertx.core.streams.ReadStream<T>, io.vertx.core.streams.WriteStream<T>);
    descriptor: (Lio/vertx/core/streams/ReadStream;Lio/vertx/core/streams/WriteStream;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
        start local 1 // io.vertx.core.streams.ReadStream rs
        start local 2 // io.vertx.core.streams.WriteStream ws
         0: .line 54
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 55
            aload 0 /* this */
            aload 1 /* rs */
            putfield io.vertx.core.streams.impl.PumpImpl.readStream:Lio/vertx/core/streams/ReadStream;
         2: .line 56
            aload 0 /* this */
            aload 2 /* ws */
            putfield io.vertx.core.streams.impl.PumpImpl.writeStream:Lio/vertx/core/streams/WriteStream;
         3: .line 57
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/core/streams/impl/PumpImpl;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/core/streams/impl/PumpImpl.lambda$0(Ljava/lang/Void;)V (7)
                  (Ljava/lang/Void;)V
            putfield io.vertx.core.streams.impl.PumpImpl.drainHandler:Lio/vertx/core/Handler;
         4: .line 58
            aload 0 /* this */
            aload 0 /* this */
            invokedynamic handle(Lio/vertx/core/streams/impl/PumpImpl;)Lio/vertx/core/Handler;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  io/vertx/core/streams/impl/PumpImpl.lambda$1(Ljava/lang/Object;)V (7)
                  (Ljava/lang/Object;)V
            putfield io.vertx.core.streams.impl.PumpImpl.dataHandler:Lio/vertx/core/Handler;
         5: .line 66
            return
        end local 2 // io.vertx.core.streams.WriteStream ws
        end local 1 // io.vertx.core.streams.ReadStream rs
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;
            0    6     1    rs  Lio/vertx/core/streams/ReadStream<TT;>;
            0    6     2    ws  Lio/vertx/core/streams/WriteStream<TT;>;
    Signature: (Lio/vertx/core/streams/ReadStream<TT;>;Lio/vertx/core/streams/WriteStream<TT;>;)V
    MethodParameters:
      Name  Flags
      rs    
      ws    

  public io.vertx.core.streams.impl.PumpImpl setWriteQueueMaxSize(int);
    descriptor: (I)Lio/vertx/core/streams/impl/PumpImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
        start local 1 // int maxSize
         0: .line 73
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.writeStream:Lio/vertx/core/streams/WriteStream;
            iload 1 /* maxSize */
            invokeinterface io.vertx.core.streams.WriteStream.setWriteQueueMaxSize:(I)Lio/vertx/core/streams/WriteStream;
            pop
         1: .line 74
            aload 0 /* this */
            areturn
        end local 1 // int maxSize
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;
            0    2     1  maxSize  I
    MethodParameters:
         Name  Flags
      maxSize  

  public io.vertx.core.streams.impl.PumpImpl start();
    descriptor: ()Lio/vertx/core/streams/impl/PumpImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
         0: .line 82
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.readStream:Lio/vertx/core/streams/ReadStream;
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.dataHandler:Lio/vertx/core/Handler;
            invokeinterface io.vertx.core.streams.ReadStream.handler:(Lio/vertx/core/Handler;)Lio/vertx/core/streams/ReadStream;
            pop
         1: .line 83
            aload 0 /* this */
            areturn
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;

  public io.vertx.core.streams.impl.PumpImpl stop();
    descriptor: ()Lio/vertx/core/streams/impl/PumpImpl;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
         0: .line 91
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.writeStream:Lio/vertx/core/streams/WriteStream;
            aconst_null
            invokeinterface io.vertx.core.streams.WriteStream.drainHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/streams/WriteStream;
            pop
         1: .line 92
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.readStream:Lio/vertx/core/streams/ReadStream;
            aconst_null
            invokeinterface io.vertx.core.streams.ReadStream.handler:(Lio/vertx/core/Handler;)Lio/vertx/core/streams/ReadStream;
            pop
         2: .line 93
            aload 0 /* this */
            areturn
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;

  public synchronized int numberPumped();
    descriptor: ()I
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
         0: .line 101
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.pumped:I
            ireturn
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;

  private synchronized void incPumped();
    descriptor: ()V
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
         0: .line 108
            aload 0 /* this */
            dup
            getfield io.vertx.core.streams.impl.PumpImpl.pumped:I
            iconst_1
            iadd
            putfield io.vertx.core.streams.impl.PumpImpl.pumped:I
         1: .line 109
            return
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;

  public io.vertx.core.streams.Pump start();
    descriptor: ()Lio/vertx/core/streams/Pump;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.vertx.core.streams.impl.PumpImpl.start:()Lio/vertx/core/streams/impl/PumpImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public io.vertx.core.streams.Pump setWriteQueueMaxSize(int);
    descriptor: (I)Lio/vertx/core/streams/Pump;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            iload 1
            invokevirtual io.vertx.core.streams.impl.PumpImpl.setWriteQueueMaxSize:(I)Lio/vertx/core/streams/impl/PumpImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public io.vertx.core.streams.Pump stop();
    descriptor: ()Lio/vertx/core/streams/Pump;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual io.vertx.core.streams.impl.PumpImpl.stop:()Lio/vertx/core/streams/impl/PumpImpl;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void lambda$0(java.lang.Void);
    descriptor: (Ljava/lang/Void;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
        start local 1 // java.lang.Void v
         0: .line 57
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.readStream:Lio/vertx/core/streams/ReadStream;
            invokeinterface io.vertx.core.streams.ReadStream.resume:()Lio/vertx/core/streams/ReadStream;
            return
        end local 1 // java.lang.Void v
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;
            0    1     1     v  Ljava/lang/Void;

  private void lambda$1(java.lang.Object);
    descriptor: (Ljava/lang/Object;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // io.vertx.core.streams.impl.PumpImpl this
        start local 1 // java.lang.Object data
         0: .line 59
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.writeStream:Lio/vertx/core/streams/WriteStream;
            aload 1 /* data */
            invokeinterface io.vertx.core.streams.WriteStream.write:(Ljava/lang/Object;)Lio/vertx/core/streams/WriteStream;
            pop
         1: .line 60
            aload 0 /* this */
            invokevirtual io.vertx.core.streams.impl.PumpImpl.incPumped:()V
         2: .line 61
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.writeStream:Lio/vertx/core/streams/WriteStream;
            invokeinterface io.vertx.core.streams.WriteStream.writeQueueFull:()Z
            ifeq 5
         3: .line 62
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.readStream:Lio/vertx/core/streams/ReadStream;
            invokeinterface io.vertx.core.streams.ReadStream.pause:()Lio/vertx/core/streams/ReadStream;
            pop
         4: .line 63
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.writeStream:Lio/vertx/core/streams/WriteStream;
            aload 0 /* this */
            getfield io.vertx.core.streams.impl.PumpImpl.drainHandler:Lio/vertx/core/Handler;
            invokeinterface io.vertx.core.streams.WriteStream.drainHandler:(Lio/vertx/core/Handler;)Lio/vertx/core/streams/WriteStream;
            pop
         5: .line 65
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object data
        end local 0 // io.vertx.core.streams.impl.PumpImpl this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lio/vertx/core/streams/impl/PumpImpl<TT;>;
            0    6     1  data  TT;
}
Signature: <T:Ljava/lang/Object;>Ljava/lang/Object;Lio/vertx/core/streams/Pump;
SourceFile: "PumpImpl.java"
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles